第二关:Command Injection(命令注入)
什么是命令注入:
命令注入就是在需要输入数据的地方输入了恶意代码,而且系统并没有对其进行过滤或者其他处理导致恶意代码也被执行,最终导致数据泄露或者正常数据被破坏。
常用到的命令:(总结来说就是系统操作命令DOS命令都可以在此执行试试)
ipconfig,net user(查看系统用户),dir(查看当前目录),find(查找包含指定字符的行),whoami(查看系统当前有效用户名)
a && b :代表首先执行前者命令a再执行后命令b,但是前提条件是命令a执行正确才会执行命令b,在a执行失败的情况下不会执行b命令。所以又被称为短路运算符。
(前面的命令执行成功后,它后面的命令才被执行)
a & b:代表首先执行命令a再执行命令b,如果a执行失败,还是会继续执行命令b。也就是说命令b的执行不会受到命令a的干扰。
(表示简单的拼接,A命令语句和B命令语句没有制约关系)
a || b:代表首先执行a命令再执行b命令,如果a命令执行成功,就不会执行b命令,相反,如果a命令执行不成功,就会执行b命令。
(前面的命令执行失败,它后面的命令才被执行)
a | b:代表首先执行a命令,再执行b命令,不管a命令成功与否,都会去执行b命令。
(当第一条命令失败时,它仍然会执行第二条命令,表示A命令语句的输出,作为B命令语句的输入执行。)
low
这一级别是没有任何防护的
安照提示输入IP地址,结果出现了类似于ping命令的乱码
页面出现乱码只需要修改编码格式即可,找到这个文件,打开
然后ctrl+f搜索utf-8全部替换成gb2312,保存
页面的乱码就可以正常显示了
查看IP配置:127.0.0.1&ipconfig
查看系统当前有效用户名:127.0.0.1&whoami
查看当前目录:127.0.0.1&dir
medium
输入127.0.0.1&ipconfig正常显示
但是输入127.0.0.1&&ipconfig,就显示如下,可以猜到,应该是把&&字符进行转义了
查看源码,把&&和;都转义了
那我们就可以利用这个';' 来绕过
high
直接把&也给转义了
但是注意观察转义的是哪些,'| '是有空格的,我们只要不输入空格就行了
impossible
我们来看一下是怎么防命令注入的
首先是设置了token,然后限制输入格式,只能是输入P地址的格式,不能输入其他的了