Pwnable.kr的第三道题目bof的writeup
下载二进制程序bof,可以看到该程序为32位,开了canary栈保护和NX栈不可执行:
将程序拖入IDA,可以看到程序为gets函数缓冲区溢出,目标是通过输入s覆盖a1为0xcafebabe,即可获得shell。
关键是求得s和a1的偏移,在IDA里可以看到,s的地址为[ebp+s],即[ebp-0x2C],a1的地址为[ebp+arg_0],即[ebp+0x8],偏移为0x2C+0x8=0x34:
因此最终的攻击脚本如下:
1 | from pwn import * |
执行脚本,获得shell,进而得到flag: