拿到程序例行检查,可以看出程序是32位的程序
将程序放入ida中进入主函数查看
但是我们将程序运行一次后发现程序还运行了nao的程序
说明程序在中间还引用了nao函数,通过代码审计我们可以很直接的看到printf(s)这个格式字符串漏洞
但是因为程序流只有一次,所以我们不能直接覆盖strlen_got为system,因为我们覆盖后程序返回不去,所以需要更换思路,让程序循环
通过网上查询,知道了程序会先后会调用fini ,所以我们可以将fini_got改为main的地址让程序回到起点
我们可以看到第12个位置处有61但是没有对其,所以我们需要先输入俩个a让栈对齐
所以我们的思路就有了在第一次输入的时候同时修改fini_got和strlen_got
完整exp如下
手机扫一扫
移动阅读更方便
你可能感兴趣的文章