【发布时间】:2011-07-27 15:48:20
【问题描述】:
我正在尝试对课程分配的程序执行缓冲区溢出攻击。攻击程序和易受攻击的程序都是我写的。
易受攻击的代码使用scanf从标准输入读取数据。
./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但你已经知道了。那么,问题到底是什么? -
@Susam Pal - 我一直在寻找一种比每次都为 echo 生成进程更有效的方法。每次我运行
system都会有一个bash 进程、echo 进程和易受攻击的进程。 -
正如我在下面的一个 cmets 中提到的,
echo通常是一个内置的 shell。如果是这样,它不会产生新的进程。运行命令type echo来查看它是否是shell-builtin。 -
@Susam Pal - 好的。我不知道这个。谢谢:-)
-
您似乎对在命令行中指定和在标准输入中提供之间的区别感到困惑。此外,您还担心效率实际上并不重要。
标签: c security penetration-testing stack-smash