PWN3

Eutopia's Blog

Posted by Eutopia on October 23, 2023

pwn3

题目考点

  • 堆栈溢出原理
  • ROP攻击
  • Ida、pwndbg工具的使用
  • 熟悉汇编语言

解题思路

首先使用checksec工具检查pwn3文件基本信息,基本信息如下:

checksec

然后./pwn3运行一下,查看效果(注:权限可能需要修改以保证可以正常执行)

正常运行

尝试输入较长字符串,查看结果,说明存在栈溢出漏洞。

栈溢出漏洞

使用ida工具逆向分析:

main函数反汇编

ROP攻击思路,将栈溢出到old_ebp下,后面覆盖要执行的system("bin/sh")代码:

经过静态分析,得到system函数地址:

system函数地址

"/bin/sh"地址:

字符串地址

对pwn3进行动态调试,查看要填充多少字节才可以发生堆栈溢出:

stack_overflow函数地址0x800484F3下断点:

stackoverflow函数地址

查看stack_overflow内部read函数前设置了0x28字节的参数,因此需要输入28位以上才可以产生栈溢出覆盖返回地址。image-20230921224714276

构造EXP.py攻击pwn3

python文件

通过向pwn3发送超过0x28+4字节的输入,可以覆盖到返回地址,从而影响函数执行,使pwn3转去执行其他的函数


结果

结果

成功弹出shell。