gdb输入文件中的十六进制值

时间:2011-02-16 16:02:48

标签: gdb hex buffer-overflow

我正在尝试通过使用run<重定向输入(获取)来对DVL进行特定的漏洞利用。 gdb中的inputfile

我可以成功溢出程序,但是在向字符串添加十六进制值时遇到问题..我试过引用,将mem addr的值转换为ascii和各种转义尝试(\,\,\)没有运气< / p>

输入文件示例: AAAA \ X42

在上面的示例中,似乎反斜杠被读取为ascii char(5c),值42保留在堆栈中(奇怪的是?)。

如何在gdb输入文件中指定十六进制值?

由于

1 个答案:

答案 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。