打开ida反汇编看一下,是c++,无所谓,复制问一下ai
先让我们输入s的数据,读取长度限制在32字节。然后replace函数会将s里面的 I 替换成 you 。最后输出s。
分析一下,s距离ebp为0x3C(60字节),且我们最多只能输入32字节的,但经过replace函数,一个字节的‘I’会被替换成三个字节的‘you’。
那么如果我们输入20个字节的‘I’,会被替换成60个字节的‘you’,而s离ebp刚好60个字节,然后再加4字节(因为是32位程序)的数据覆盖ebp,就可以造成栈溢出漏洞了。
找一下后门函数的地址,编写exp(其实整道题最难的就是c++,毕竟看不懂):