1、eval执行
我们进去以后首先进行一个代码审计,发现这里密码cmd非常清晰
OK话不多说连蚁剑
我们看到这样一个文件
右键选择在此处打开终端
接下来就是按部就班的找到flag所在的文件,cat查看即可
2、无过滤的命令注入
先审计代码,嗯雀氏没有过滤
输入127.0.0.1返回结果说明可以进行代码注入,接下来还是按部就班
127.0.0.1;ls
127.0.0.1;cat 。。。。。这里没有返回可能是因为进行了加密
127.0.0.1;cat 。。。。。|base64 得到加密后的字符串
把得到的加密字符串扔base64在线解密里,即为flag
3、过滤cat
还是先审计代码
过滤了cat,我们可以用其他命令代替
127.0.0.1;ls
127.0.0.1;less 。。。。。|base64
还是扔在线base64解密得到flag
4、过滤空格
这里过滤了空格,我们可以使用 ${IFS}来代替
127.0.0.1;ls
按部就班替换空格加上base64得到加密字符串,解密即得flag
5、过滤目录分隔符
依然先代码审计,我们发现他过滤的这个符号对我们没有任何影响,直接按部就班ls
1
解密即得flag
6、过滤运算符
审计代码,视乎依然没影响,按部就班吧
我们到最后一步后可能得不到base64加密字符串,这时候我们可以直接查看网页源代码,效果是一样的
7、综合练习
审计代码,这里过滤了很多符号和命令,我们构建payload的思路还是代替
空格 用${IFS}代替
flag用 f***代替
cat用 more代替
; 用%0a 回车代替
按部就班,我们构建的最终的payload是:
127.0.0.1%0acd${IFS}f***_is_here%0amore${IFS}f***_9098301778463.php
这里注意:
我们的payload用的是url命令因此需要在url地址框输入
1
这里依旧查看网页源代码找到flag!