【发布时间】:2013-03-26 14:47:34
【问题描述】:
我们可以通过gdb中的十六进制值给出输入字符串吗?比如一个简单的程序
#include <stdio.h>
int main() {
char buffer[20];
fscanf(stdin, "%s", buffer);
printf("%s", buffer);
}
调试它:
ravi@ravi-desktop:~$ gdb -q ./a.out
Reading symbols from /home/ravi/a.out...done.
(gdb) list 1
1 #include <stdio.h>
2
3 int main() {
4 char buffer[20];
5 fscanf(stdin, "%s", buffer);
6 printf("%s", buffer);
7 }
(gdb) r
Starting program: /home/ravi/a.out
\x41\x41\x41\x41
\x41\x41\x41\x41
Program exited with code 014.
(gdb) quit
我想使用十六进制值\x41 输入四个A 作为输入,但它会分别考虑每个字符。
真正的需求是我在Stack-based Buffer Overflow中玩Shellcode,调试时需要输入十六进制的shellcode。
谁能帮帮我。
谢谢 拉维
【问题讨论】:
标签: c gdb scanf buffer-overflow