1. Low级别
首先按照要求输入一个IP地址
提交看效果:
可以看出这个结果和cmd的界面差不多,就是乱码(不用管),那我们在cmd里面尝试一些命令:
在上图中我们可以利用&&来将多个命令结合运行,那么尝试在这个文本内容写入:
这段命令是:先ping地址然后移动到D盘,最后查看当前盘下所有文件。
下面是效果:
注入成功!当然也可以注入一些危险的命令(不要轻易尝试,在你的好兄弟电脑上试)
rm -rf /
2. Medium级别
接下来我们尝试输入上个级别的命令:
可以看出这个方法行不通,我们看下源码时怎么样的:
可以看到后端对传入的数据进行了处理,定义了一个黑名单数组,如果出现‘&&’或‘;’就将他们变为空字符串,因此有两种绕过方法:
方法1:用&来连接
可以看到绕过成功!
方法2:用&;&连接
根据上述过滤规则,它将;和&&都变为空,那么&;&过滤后就变为了&&
同样绕过成功!
3. High级别
根据以上的教训,我们先看源码:
可以看到,本关的黑名单级别数组更高,那咱们该如何绕过呢?
可以看到有一个黑名单字符串是"| ",它后面有一个空串,那咱们可以利用这个规则给它绕过:
这个字符串传到后端为"127.0.0.1 || dir",过滤后变为了"127.0.0.1 | dir",后面的“| ”被过滤掉了,因此该绕过方法成功!