DVWA之Command Injection(命令注入)
程序员文章站
2022-07-16 12:37:43
...
前言
- Command Injection,即命令注入攻击,是指由于Web应用程序对用户提交的数据过滤不严格,攻击者可通过构造特殊命令字符串的方式,将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。通常是在&&、&、|、||命令拼接符号再跟上自己需要执行的系统命令。
Low
- 类似于普通SQL注入,先满足原定的命令参数。然后在后面用&&命令拼接符号跟上自己想要执行的命令。
Medium
-
后端把提交的参数做了一定过滤,过滤了”&&” 、”;”,但还可以用&、| 。
-
这里需要注意的是”&&”与” &”的区别:
-
Command 1&&Command 2
先执行Command 1,执行成功后再执行Command 2,否则不执行Command 2 -
Command 1&Command 2
先执行Command 1,不管是否成功,都会执行Command 2 -
Command 1 | Command 2
“|”是管道符,表示将Command 1的输出作为Command 2的输入,并且只打印Command 2执行的结果。 -
由于使用的是str_replace把”&&” 、”;”替换为空字符,因此可以采用以下方式绕过:
127.0.0.1&;&ifconfig
127.0.0.1;&ifconfig
127.0.0.1&;ifconfig
127.0.0.1&&&whoami
127.0.0.1&&| whoami
127.0.0.1|&&whoami
High
- 后端把提交的参数做了多个字符的过滤,过滤了&、; 、| 、- 、$ 、) 、( 、` 、||。
- 代码中把’| ‘替换成了空白符,’|'却没有被过滤掉,可以构造payload 127.0.0.1|cat /etc/passwd
Impossible
- 后端代码中纳入了这三个函数:stripslashes( )、explode( )、is_numeric( )
- stripslashes( ):
删除字符串string中的反斜杠,返回已剥离反斜杠的字符串。 - explode( ):
函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。 - is_numeric( ):
用于检测变量是否为数字或数字字符串。如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。
上一篇: DVWA学习日记——命令注入(Command Injection)
下一篇: 背包-模板题
推荐阅读
-
SQL注入之DVWA平台测试mysql注入
-
DVWA V1.9:SQL Injection(SQL注入)
-
DVWA学习日记——命令注入(Command Injection)
-
DVWA之Command Injection(命令注入)
-
攻击方式学习之SQL注入(SQL Injection)第3/3页
-
设计模式之命令模式(Command )
-
Spring4.X之Constructor Injection 构造方法注入
-
攻击方式学习之SQL注入(SQL Injection)第1/3页
-
代码审计——DVWA SQL Injection(SQL 注入)
-
Spring4.X之Constructor Injection 构造方法注入