Ski*_*tch 2 hex gdb buffer-overflow
我正在尝试通过使用 gdb 内的 run < inputfile 重定向输入(以获取)来对 DVL 进行特定的利用
我可以成功地溢出程序,但在将十六进制值附加到字符串时遇到问题。我尝试过引用、将 mem addr 的值转换为 ascii 以及各种转义尝试(\、\、\),但没有成功
输入文件示例:AAAA\x42
在上面的示例中,反斜杠似乎被读取为 ascii 字符 (5c),并且值 42 保留在堆栈中(奇怪?)。
如何在 gdb 输入文件中指定十六进制值?
谢谢
使用perl!:)
reader@hacking:~/booksrc $ ./overflow_example $(perl -e 'print "A"x30')
Run Code Online (Sandbox Code Playgroud)
使用 'e' 选项 perl 将计算以下命令,并且周围的所有内容都将把 perl 的输出视为字符串。所以上面的命令等同于:
reader@hacking:~/booksrc $ ./overflow_example AAAAAAAAAAAAAAAAAAAAAAAAA
Run Code Online (Sandbox Code Playgroud)
(在字符串后添加 x30 将重复该字符串 30 次)。当然,perl 接受带有符号 的其他十六进制值\x??。还有一个词,要连接字符串,请使用点:
reader@hacking:~/booksrc $ perl -e 'print "A"x20 . "BCD" . "\x61\x66\x67\x69" ;'
AAAAAAAAAAAAAAAAAAAABCDafgi
Run Code Online (Sandbox Code Playgroud)
因此,您可以在输入文件中重定向 perl 的输出,或者在运行程序时直接在 gdb 中调用 perl。