Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 缓冲区溢出函数地址被转义_Assembly_Gdb - Fatal编程技术网

Assembly 缓冲区溢出函数地址被转义

Assembly 缓冲区溢出函数地址被转义,assembly,gdb,Assembly,Gdb,我有一个可执行文件,没有调试符号或任何源代码。它基本上要求您输入一个密码,如果您输入的密码正确(但不是作为命令行参数),它将为您提供root 我试图做一个缓冲区溢出,并从程序中执行一个特定的函数,通常只有在密码正确的情况下才会调用该函数。我使用了info functions来获取函数的地址,现在我正在构建漏洞 下面的输入只会导致溢出,并以这种方式覆盖下面的寄存器 buffer, ebp , eip 24 chars, 4 chars, 4 chars aaaaaaaaaaaa

我有一个可执行文件,没有调试符号或任何源代码。它基本上要求您输入一个密码,如果您输入的密码正确(但不是作为命令行参数),它将为您提供root

我试图做一个缓冲区溢出,并从程序中执行一个特定的函数,通常只有在密码正确的情况下才会调用该函数。我使用了
info functions
来获取函数的地址,现在我正在构建漏洞

下面的输入只会导致溢出,并以这种方式覆盖下面的寄存器

buffer,     ebp ,       eip
24 chars, 4 chars, 4 chars
aaaaaaaaaaaaaaaaaaaaaaaabbbbcccc - 24a and 4b, 4c
因此,我尝试(使用函数的地址):

但是,由于某些原因,它不起作用,发生的情况是:

EBP: 0x62626262 ('bbbb')
ESP: 0xbffffc40 ("\\x84\\x04\\x08")
EIP: 0x6364785c ('\\xdc')

基本上,由于斜杠被转义,寄存器会被错误的值覆盖……为什么会这样?我如何修复它?

由于程序通过
scanf
获取输入,您需要在gdb中使用以下格式: 此语法模拟来自键盘的输入

run < <(python -c 'print "a"*28"')

run<这取决于您如何将输入提供给程序。您必须使用某些东西来转换反斜杠转义。此语法模拟键盘输入。不完全是这样;输入来自管道,而不是TTY。但是,这是一种将二进制数据提供给程序stdin的好方法。
EBP: 0x62626262 ('bbbb')
ESP: 0xbffffc40 ("\\x84\\x04\\x08")
EIP: 0x6364785c ('\\xdc')
run < <(python -c 'print "a"*28"')