-
-
[求助]为什么这里read没有被调用?
-
发表于:
2017-4-14 11:16
3181
-
这里已经控制了pc指针,准备通过控制寄存器来调用read,把"/bin/sh\0"写入bss段
其中:
r12 :0x601020 (read 的got表地址)
rdi :0 (标准输入流)
rsi : 0x601040 (bss段地址)
rdx : 写入长度 (我这里是16)
但是call了之后没有要求我输入东西就直接调用下一句了,可是调试信息是跟预想的一样的,用edb调试改写也是可以输入的,为什么?
补充,call之后的截图
rax是0x00
漏洞程序简化版(linux 64):
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dlfcn.h>
void vulnerable_function() {
char buf[128];
read(STDIN_FILENO, buf, 512);
}
int main(int argc, char** argv) {
write(1, "Levle5\n", 7);
vulnerable_function();
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课