pwn3
题目考点
- 堆栈溢出原理
- ROP攻击
- Ida、pwndbg工具的使用
- 熟悉汇编语言
解题思路
首先使用checksec
工具检查pwn3
文件基本信息,基本信息如下:
然后./pwn3
运行一下,查看效果(注:权限可能需要修改以保证可以正常执行)
尝试输入较长字符串,查看结果,说明存在栈溢出漏洞。
使用ida工具逆向分析:
ROP攻击思路,将栈溢出到old_ebp下,后面覆盖要执行的system("bin/sh")
代码:
经过静态分析,得到system
函数地址:
"/bin/sh"
地址:
对pwn3进行动态调试,查看要填充多少字节才可以发生堆栈溢出:
在stack_overflow
函数地址0x800484F3
下断点:
查看stack_overflow
内部read
函数前设置了0x28
字节的参数,因此需要输入28位以上才可以产生栈溢出覆盖返回地址。
构造EXP.py
攻击pwn3
通过向pwn3
发送超过0x28+4
字节的输入,可以覆盖到返回地址,从而影响函数执行,使pwn3
转去执行其他的函数
结果
成功弹出shell。