拿到题目首先先运行程序
我们发现给了我们一个数字,我们猜测应该是一个条件判断的程序,然后我们检查一下保护机制
我们发现只开了NX(不可执行)保护,那我们直接看IDA就行了。
main函数只是设定了无缓冲模式,以及调用了一个func函数,然后我们看一下
我们可以看到gets 和我们想要的flag,至此我们有两种方法:
1.我们可以通过栈溢出的漏洞,将v2的值改为11.28125,可以获得flag
2.我们可以通过栈溢出的漏洞,将返回地址定位到system函数,也可以获得flag
从图片中我们可以知道v1到v2的距离是(0x30-0x04),v1到返回值地址的距离是(0x30+0x08)
所以
1.exp为:
flag:
2.exp为:
flag: