DVWA-命令注入漏洞代码审计(High、Impossible)

命令注入

        对用户输入的命令不进行过滤或过滤不严格时,可以通过构造特殊的命令字符串将数据传递到后端,并利用该方式执行外部程序或系统命令实施攻击。 

High 

        high难度的命令注入主要利用了黑名单验证的方式来达到一个过滤的效果。

 对于个别函数这里做一个代码演示

array_keys:

        当创建了一个数组后使用这个函数,可以看到打印出的是这个数组的键名,也就是说在这里arrat_keys函数用于将数组里的键名提出来。

        

 str_replace:

          我按照题中的格式添加了str_replace函数会有什么效果?执行一下试试。

        当我分别输入'qwe'和'abc'时,发现只有'qwe'被成功打印出来,也就是说str_replace函数会将'abc'给替换成空。这样就理解了这个函数在本题的作用,用于对输入的字符串进行替换,当匹配到和键名相同的字符串时,会将其替换成空,进而实现了对字符串的过滤。

        

        但是本题的黑名单内的 '| ' 是有空格的,只要用 '|' 构造命令时不要留空格即可实现绕过黑名单。 

 Impossible

        这题不再使用黑名单过滤而是使用了白名单。

同样对几个关键函数进行解释

        checktoken函数:主要是进行一个token验证,可以防止请求伪造。

        explode函数:使用字符串对另一个字符串进行分割,并且以数组形式返回。这里演示的是以 ' . ' 作为分割符将2023.6.9进行了分割,并返回成数组。

        

         is_numeric:用于检测变量是否为数字或数字字符。

这题的白名单验证配合各种函数的防护机制基本算是无解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值