2018-05-18-command injection

命令注入原理在于开发者没有对被当成命令一部分的信息进行过滤和编码,简单地运行执行命令的功能函数,从而造成命令执行。

command injection 1:


2018-05-18-command injection_第1张图片
图一

显然直接将我们的输入当成命令一部分,直接执行了,这时候通过加上&&的手段执行命令。

构造payload如下所示:


2018-05-18-command injection_第2张图片
图二

显然经常会进行url编码绕过.

command injection 2:

这道题目源代码如下:


2018-05-18-command injection_第3张图片
图三

这道题目中明显是用正则表达式对输入进行了匹配,限定只能是点分法的格式,后面不能接其他的,但是我们可以加上换行符绕过,换行符要url编码。%0a,如下:


2018-05-18-command injection_第4张图片
图四

command injection 3:

先上源代码:


2018-05-18-command injection_第5张图片
图五

这是一个普遍做法,当程序员无法对输入确认过滤干净时候,就用head函数直接来重定向了,返回的页面是不会包含什么东西的,因此我们看不到什么,但是其实恶意代码还是执行了,因此直接开代理就可以看到很多东西了。如下图:

2018-05-18-command injection_第6张图片
图六

payload和题目二是一样的。


然后增加一些常见命令注入的函数,例如:eval()、system()、exec()、shell_exec()等。

然后说一些常见的连接符:

command1&&command2:这种就是先执行1再执行2


2018-05-18-command injection_第7张图片
图七

command1&command2:这种就是先执行2再执行1


2018-05-18-command injection_第8张图片
图八

command1|command2:这种就是只执行2不执行1


2018-05-18-command injection_第9张图片
图九

||:标识如果前面执行失败就执行后面的命令

你可能感兴趣的:(2018-05-18-command injection)