This is a basic Buffer overflow problem. The first step checking the file type, we get a 32-bit, non-stripped Binary file.
题目如上,下载完附件,扔进IDA,看了下代码,发现没有做读入字符的校验,可以读取随意长度的字符串,还有一个没有用到的函数printflag
应该是典型的缓冲区溢出攻击,可以先看下下面的那篇文章
用gdb调试一下,先扔一些东西进去看下溢出覆盖哪里了
发现试到长度为24的时候就开始覆盖EBP的值,然后再加长一点,发现并没有覆盖其他寄存器
然后发现程序的最后有一个ret,很明显就可以利用起来,找到printflag的地址为0804856D
然后就可以构造出shellcode
python -c “print ‘x’*24+ ‘\x6d\x85\x04\x08’”|./exploit
嘛。。因为原来的网站关闭了服务器,所以也连不上去拿flag了