dvwa-low-Command Injection

Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。命令注入攻击的常见模式为:仅仅需要输入数据的场合,却伴随着数据同时输入了恶意代码,而装载数据的系统对此并未设计良好的过滤过程,导致恶意代码也一并执行,最终导致信息泄露或者正常数据的破坏。

命令连接符

command1 && command2   先执行command1后执行command2

command1 | command2     只执行command2

command1 & command2    先执行command2后执行command1

以上三种连接符在windows和linux环境下都支持

如果程序没有进行过滤,那么我们就可以通过连接符执行多条系统命令。



dvwa-low-Command Injection_第1张图片

服务器端核心代码


dvwa-low-Command Injection_第2张图片

stristr() 函数搜索字符串在另一字符串中的第一次出现。stristr(string,search,before_search)string必需,规定被搜索的字符串。search必需,规定要搜索的字符串。如果该参数是数字,则搜索匹配该数字对应的 ASCII 值的字符before_search可选。默认值为 "false" 的布尔值。如果设置为 "true",它将返回search参数第一次出现之前的字符串部分。

php_uname(mode)

这个函数会返回运行php的操作系统的相关描述,参数mode可取值

”a” (此为默认,包含序列”s n r v m”里的所有模式)

”s ”(返回操作系统名称)

”n”(返回主机名)

”r”(返回版本名称)

”v”(返回版本信息)             

”m”(返回机器类型)

可以看到,服务器通过判断操作系统执行不同ping命令,但是对ip参数并未做任何的过滤,导致了严重的命令注入漏洞。

shell_exec—通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

于是我们输入127.0.0.1&&net user


dvwa-low-Command Injection_第3张图片

你可能感兴趣的:(dvwa-low-Command Injection)