吐槽
首先不得不说说官网的WriteUp了,看了半天看不懂他在讲啥
我的输出与官网演示的不一样:
而我的是
查了一下,说是默认连接评分服务器,要用-q
关闭
我都没输入任何字符串呢,就直接让我Segmentation fault了
我用gdb调试进去,发现只要没有用-i file
指定输入文件,那么程序连test
函数都不会让我们进行就直接出现Segmentation fault了
之前没有明白HEX2RAW作用是啥,这是啥意思。后来才知道:
因为我们要修改在栈中的return address地址,又这些地址是通过十六进制表示的,我们可能要将原来的return address地址代替为,如0x401930
. 因为我们是在程序外通过输入字符串,40和30这些ASCII码对应的Char
是可以通过我们键盘输入的,但是19不能。
这个时候我们通过在文件exploit.txt
写:40 19 30,然后cat exploit.txt | hex2raw
,这个时候hex2raw就可以帮我们输出我们用键盘输入不了的19这个ASCII码的Char