2021-08-05


前言

命令注入(Command Injection)漏洞,是由于一些函数没有对参数做过滤或过滤不严导致的,可以执行系统或者应用指令(比如说CMD命令或者bash命令)的一种注入攻击手段。

PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一。

命令连接符:
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命令语句的输入执行。)


一、Command Injection --low

在这里插入图片描述
首先解决乱码的问题:找到phpstudy里的WWW\DVWA\dvwa\includes文件下面的dvwaPage.inc.php,将所有的”charset=utf-8”,修改为”charset=GB2312”;
在这里插入图片描述
修改ok后刷新;done。
尝试ping 本机,127.0.0.1,可以看到:在这里插入图片描述
输入命令:127.0.0.1 & ipconfig,得到:
在这里插入图片描述
可以看到,成功执行。然后可以继续执行其他的命令。把ipconfig换成其他的系统命令。

127.0.0.1&&dir
在这里插入图片描述
127.0.0.1|dir
在这里插入图片描述

也可以,比如,执行 127.0.0.1 & net user test0 /add ,尝试ping完后新建一个用户,就可以成功创建用户。
127.0.0.1 && net user 显示用户;(关于user的命令我这里显示不了,可能是权限的问题,哪位大佬知道的可以提点一下)

二、Command Injection --Medium

中等级的命令行注入增加了一些过滤,通过查看源码可以看到,代码中将&&和:过滤成了空字符,但是并没有过滤“|”,因此依然可以进行注入。
在这里插入图片描述
因此可以使用& 、|等;
如使用127.0.0.1&dir:
在这里插入图片描述
还有很多方法可以进行中等级的命令行注入,比如“||”操作(使a命令执行失败),“&;”、"|;"、"||;"…


三、Command Injection --High

看源码发现:high等级的命令行注入过滤的东西比较多,但是在过滤的时候有bug,其bug就是空格。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值