Recho这个长尾词如何改写成一个不超过50个字?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1574个文字,预计阅读时间需要7分钟。
0x00: 查看文件信息:一个64位二进制文件,无canary和PIE保护机制。
0x01: 使用IDA进行静态分析:主程序部分是一个while循环,循环条件是read返回值大于0。函数at
0x00:查看文件信息一个64位二进制文件,canary和PIE保护机制没开。
0x01:用IDA进行静态分析分析:主程序部分是一个while循环,判断条件是read返回值大于0则循环。函数atoi()是将一个字符串转换成整型数据,看栗子:
这样子v7可以由我们所决定,所以很明显第15行存在栈溢出。
个人想法:
看到程序有一堆输入输出函数,我首先想到的是ret2libc3。在尝试的过程中发现无论如何都跳不出while循环,使用io=send('')不可以。思考无果,上网找WP。在海师傅的文章中,了解到可以用shutdown函数进行操作。而且海师傅是以另外的思路进行泄露的,下面我就借鉴海师傅的思路进行描述。
0x02:深入分析首先说一下结束循环的方法:
使用io.shutdown('write')进行关闭(为啥是write呢?)
测试一下:
read不可以,send可以???,recv不可以。
本文共计1574个文字,预计阅读时间需要7分钟。
0x00: 查看文件信息:一个64位二进制文件,无canary和PIE保护机制。
0x01: 使用IDA进行静态分析:主程序部分是一个while循环,循环条件是read返回值大于0。函数at
0x00:查看文件信息一个64位二进制文件,canary和PIE保护机制没开。
0x01:用IDA进行静态分析分析:主程序部分是一个while循环,判断条件是read返回值大于0则循环。函数atoi()是将一个字符串转换成整型数据,看栗子:
这样子v7可以由我们所决定,所以很明显第15行存在栈溢出。
个人想法:
看到程序有一堆输入输出函数,我首先想到的是ret2libc3。在尝试的过程中发现无论如何都跳不出while循环,使用io=send('')不可以。思考无果,上网找WP。在海师傅的文章中,了解到可以用shutdown函数进行操作。而且海师傅是以另外的思路进行泄露的,下面我就借鉴海师傅的思路进行描述。
0x02:深入分析首先说一下结束循环的方法:
使用io.shutdown('write')进行关闭(为啥是write呢?)
测试一下:
read不可以,send可以???,recv不可以。

