我正在尝试通过使用run<重定向输入(获取)来对DVL进行特定的漏洞利用。 gdb中的inputfile
我可以成功溢出程序,但是在向字符串添加十六进制值时遇到问题..我试过引用,将mem addr的值转换为ascii和各种转义尝试(\,\,\)没有运气< / p>
输入文件示例: AAAA \ X42
在上面的示例中,似乎反斜杠被读取为ascii char(5c),值42保留在堆栈中(奇怪的是?)。
如何在gdb输入文件中指定十六进制值?
由于
答案 0 :(得分:4)
使用perl! :)
reader@hacking:~/booksrc $ ./overflow_example $(perl -e 'print "A"x30')
使用'e'选项perl将评估以下命令,并且所有内容都将perl的输出视为字符串。所以上面的命令与:
相同reader@hacking:~/booksrc $ ./overflow_example AAAAAAAAAAAAAAAAAAAAAAAAA
(在字符串后添加x30将重复30次)。
当然perl接受带有符号\x??
的其他十六进制值。还有一个词,连接字符串使用一个点:
reader@hacking:~/booksrc $ perl -e 'print "A"x20 . "BCD" . "\x61\x66\x67\x69" ;'
AAAAAAAAAAAAAAAAAAAABCDafgi
因此,您可以在输入文件中重定向perl的输出,或者在运行程序时直接在gdb中调用perl。