-
-
[讨论]第二题程序有栈溢出,好像不用计算串就行啊
-
2017-10-27 21:12 1072
-
发现第二题有个栈溢出漏洞可以直接利用





第二题的程序,其实根本不用计算串是多少,因为有栈溢出漏洞。
如下图所示,在OD中下断点,如下图所示:

进入第一个函数,可以看到是一个标准的函数调用的过程:

此时,查看该函数的栈:

明显可以看到我输入的字符串1234在堆栈中,但是貌似并没有边界检查,因为如果我输入1234123412341234,如下:

可以看到出现了溢出,于是我找到了“you get it !”的地址,然后,通过溢出,将函数返回地址填上该地址,该地址如下:

于是构造字符串如下:
123412341234/^P@
得到如下结果:
^P 这个是ctrl+P,代表ascII码的0x10。
其中前面的123412341234是占位字符,
/^P@是地址0x0040102F,即“you get it”的地址。
然后这个地址覆盖了返回地址,所以就直接执行到了“you get it”
小弟新手,希望大家多多指教,提一些建议。。