如何通过gets()函数将用户输入作为十六进制字符? (Linux)的

时间:2014-11-15 19:36:08

标签: c linux

大家好,我正在学习缓冲区溢出,并研究如何输入正确的攻击有效负载,以便将返回地址修改为c程序中的特定函数。

下面是一个char大小为0-13(0-12 + Null)的数组,我的目标地址是 0x080484C7。

 char buffer[14]
 gets(buffer);    

我已确定堆栈上返回地址的位置,但是,通过使用gets()函数的用户输入,我无法正确输入地址并尝试输入输入为\ xC7 \ x84 \ x04 \ x08指定十六进制但是,它将每个向后斜杠,数值和字母字母输入为(ascii)输入错误的十六进制值。

如何通过linux中的用户输入通过gets函数输入特定的十六进制值?

1 个答案:

答案 0 :(得分:2)

您可以使用echo输出所需的字符,然后将其输入您的程序:

echo -e "\xC7\x84\x04\x08" | ./yourprogram