首先,放在最前面:这题服务器远端的libc版本是libc-2.23.so而不是libc-2.19.so的版本(害得我编译半天出不来)
看到题目,我们下载附件,一看是个tar.gz文件,我们解压一下,发现里面有三个文件:
我就心想,这个攻防世界怎么就这么好心这次,以前要给的时候从来不给,这次这么大方???答案是大错特错,这就是个骗局,这个反而是个障碍,版本根本就是错的(但仔细一想,有可能是出题者故意的,考验大家 ,?。
拿到这题,查看保护,已成习惯 。
一看,基本的amd64-64位构造,没开Canary,没开地址无关PIE,就开了个NX,我们就能想到用ROP。
结果一查程序:
双击进去,(不仔细看以为是什么echo???)
双击进去,原来里面暗藏玄机,看得代码,发现这个函数是将你输入的字符复制到s2上,并且以0结束,我们可以看到距离rbp很短,很容易构成溢出,但是我们不能有\x00出现,但是,如果我们要写64位的地址,没有\x00是不可能的,所以我们就要另想办法。
还好,程序本身给我们提供了这么个好条件,我们可以看到echo函数的