大家好,我正在学习缓冲区溢出,并研究如何输入正确的攻击有效负载,以便将返回地址修改为c程序中的特定函数。
下面是一个char大小为0-13(0-12 + Null)的数组,我的目标地址是 0x080484C7。
char buffer[14]
gets(buffer);
我已确定堆栈上返回地址的位置,但是,通过使用gets()函数的用户输入,我无法正确输入地址并尝试输入输入为\ xC7 \ x84 \ x04 \ x08指定十六进制但是,它将每个向后斜杠,数值和字母字母输入为(ascii)输入错误的十六进制值。
如何通过linux中的用户输入通过gets函数输入特定的十六进制值?
答案 0 :(得分:2)
您可以使用echo
输出所需的字符,然后将其输入您的程序:
echo -e "\xC7\x84\x04\x08" | ./yourprogram