本文章可做DVWA普及课件所用
暴力破解
low
查看代码可知,代码中并没有任何防护手段,没有防爆破措施,比如验证码或者是错误登录限制措施,仅仅是设置login参数是否存在。
存在暴力破解和SQL注入。
演示自行使用BP以及自带字典。
medium
比较代码看出,username和password参数都是经过一次mysql_real_escape_string
函数转换。查阅手册可知
这个只是减小了sql注入的可能性但是并不影响暴力破解
演示自行使用BP以及自带字典。
high
这个级别的代码加入了CSRF-Token机制,通过抓包可以看到比前面两个等级多了一个参数user_token
。查看提交页面,我们发现form表单里还存在一个hidden类型的参数。用户每次都要提交这个参数,服务器收到请求后会优先检查token是否匹配。
并且检查username和password参数时又加了一个函数:stripslashes
进行去除字符串中的反斜线,然后使用mysql_real_escape_string
进一步的防止SQL注入。
impossible
查看代码可知,使用可靠的登录次数和频繁登录将会锁定账户,以及在进行SQL查询时使用了预编译,预编译基本上已经杜绝了大部分SQL注入的可能性。
命令注入
low
查看代码看到两个函数介绍一下:
代码逻辑判断就是ping4次,因为Linux系统默认时无限次数ping的。
演示见具体的操作。
medium
这里需要注意的是”&&