C语言 我如何利用段错误并运行shell命令?



接下来:我如何利用缓冲区溢出?

我有一个代码编译使用-fno-stack-protector:

#include <stdio.h>
void shellcode(){
printf("n Reached shellcode!");
}
int main(int argc, char **argv){
char buf[3];
sprintf(buf, "%s", argv[1]);
return 0;
}

但无法执行shellcode功能。

就像我在那篇文章中使用的:

python -c 'print "A"*27+"x49x11x00x00x00x00x00x00"' > input
./a < input

获取段错误:

./a 12345678901
Segmentation fault (core dumped)

但是什么也没发生。

我的主要目标是在linux操作系统上执行ls而不是shellcode函数。但是现在什么都不行。

这里有两个潜在的问题:

  1. 通过使用sprintf(.., argv[1]),您似乎期望从argv输入。但是./a < input将文件指向STDIN

  2. ASLR可能会把你的exploit搞砸。意思是你不知道地址是否正确。

如果没有二进制文件(a)本身,或者至少没有Makefile,很难回答这样的问题。

如果我是你,我会使用调试器(GDB是伟大的),直到利用工作。但值得注意的是,使用ASLR,这将是困难的。

相关内容

  • 没有找到相关文章

最新更新