我正在尝试通过在 gdb 中使用 run < inputfile 重定向输入(以获取)来解决 DVL 上的特定漏洞
我可以成功溢出程序,但是在将十六进制值附加到字符串时遇到问题。我尝试了引号,将 mem addr 的值转换为 ascii 和各种转义尝试(\,\,\),但没有运气
输入文件示例:AAAA\x42
在上面的示例中,反斜杠似乎被读取为 ascii char (5c) 并且值 42 保留在堆栈中(奇怪?)。
如何在 gdb 输入文件中指定一个十六进制值?
谢谢
我正在尝试通过在 gdb 中使用 run < inputfile 重定向输入(以获取)来解决 DVL 上的特定漏洞
我可以成功溢出程序,但是在将十六进制值附加到字符串时遇到问题。我尝试了引号,将 mem addr 的值转换为 ascii 和各种转义尝试(\,\,\),但没有运气
输入文件示例:AAAA\x42
在上面的示例中,反斜杠似乎被读取为 ascii char (5c) 并且值 42 保留在堆栈中(奇怪?)。
如何在 gdb 输入文件中指定一个十六进制值?
谢谢
使用 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。