Lor*_*oh. 3 c security penetration-testing stack-smash
我试图对类分配的程序执行缓冲区溢出攻击.攻击程序以及易受攻击的程序都是由我编写的.
易受攻击的代码用于scanf从stdin读取数据.
./vulnerable < malicious_payload_file.txt工作良好.
more malicious_payload | ./vulnerable并且echo JUNK_JUNK_JUNK_JUNK | ./vulnerable也按预期工作.
但是,我想使用攻击程序继续提供更长的有效负载,直到程序崩溃.所以,我需要动态生成更大的有效载荷.我正在使用system ("./vulnerable");反复调用和测试异常退出.
如何指定这样的有效负载?
有没有办法运行./vulnerable < malicious_payload_binary或以某种方式使我不必将恶意有效负载放在文件中,但可以在命令行中指定它?
这个怎么样?
echo "your payload goes here" | ./vulnerable
Run Code Online (Sandbox Code Playgroud)
您可以echo使用任何生成所需的./vulnerable输入的命令替换该命令.一个这样的例子是作为输入的不断的垃圾流,你可以这样做:
cat /dev/urandom | ./vulnerable
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用以下命令,而不是尝试使用命令popen行system:
FILE *fp = popen("./vulnerable", "w");
// write stuff to fp -- it goes to vulnerable's stdin
int exitcode = pclose(fp);
Run Code Online (Sandbox Code Playgroud)
如果您使用另一个进程来创建数据并通过 shell 将其通过管道传输到 ./vulnerable,那么您获得的退出代码与您获得的退出代码pclose相同system