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