蜗蜗侠's Blog-关注网络安全移动版

主页 > 技术笔记 >

DVWA 1.9 通关分析(二)

本文原创作者:sn0w,本文属i春秋原创奖励计划,未经许可禁止转载!

注:本篇文章请结合 DVWA 1.9 通关分析(一) 查看,中间很多部分进行了省略,必须结合第一篇查看。

这次我们玩的是中等难度,主要是结合低难度的源代码与中等难度的代码对比进行的。

攻击模块1:Brute Force(暴力破解)
我们对比一下两个难度的代码。可以看到两边的差别就是medium通过mysql_real_escape_string转义了用户输入的预定义字符,而对暴力破解并没有做修复,所以我们low中的万能密码不能用了,但是burpsuite暴力破解还是可以的。


按照第一篇文章中的操作步骤,最后得到



攻击模块2:Command Injection(命令注入
通过对比代码我们发现对中等难度中对&&进行了过滤替换


通过调试输出我们也可以看到,连接符被过滤成空格,带入windows执行后返回错误

在我们第一篇文章中我们还介绍了另外两种连接符,我们使用另外两种连接符即可成功绕过(&、|绕过)



攻击模块3:Cross Site Request Forgery(CSRF跨站脚本伪造)
这里增加了头部的验证


我们使用第一篇中的csrf.html提交发现无法提交,因为这里的HTTP_REFERER为空,条件不成立,所以无法提交

虽然他验证了HTTP_REFERER,但是他是可控的,我们可以修改啊,修改后的payload,这里加了一段php代码伪造REFERER,所以脚本也变成了php的

再次提交,验证通过



攻击模块4:File Inclusion(文件包含)
我们发现这里过滤了../,这样我们就没法直接跨目录了


后来找了一些资料,问了几位表哥又发现了新的姿势 通过..\也可以跨目录



攻击模块5:File Inclusion(任意文件上传)
对比代码发现在medium中验证了文件类型


我们在上传php脚本会被拦截 因为我们的php脚本是文本类型


这时我们先上传一个图片马

burpsuite本地代理抓包拦截,修改后缀 在上传

上传成功

同理,这里也可以直接上传一个php脚本,抓包修改类型为image/jpeg。

攻击模块6:Insecure CAPTCHA(不安全的验证码)
略过,原因参考第一篇文章


攻击模块7:SQL Injection(SQL注入
这里他有两处修改,一个是前端使用了select标签,想限制我们的输入,但是所有前端的验证都是不安全的,这里直接修改源码即可。


后台代码也通过mysql_real_escape_string进行了转义,但是这里有一个逗比的地方,看一下在将ID带入sql语句查询的时候并没有单引号,是的没有单引号。。。没有单引号。。。。。

这样的话我们在注入的时候就不需要考虑单引号的闭合问题,所以说他的mysql_real_escape_string完全没有卵用,我们直接写注入语句


攻击模块8:SQL Injection (Blind)(SQL注入 盲注)
这个跟上一个攻击模块一样的前端用了选择框,后台代码mysql_real_escape_string过滤同样在查询的时候没有加单引号,同样mysql_real_escape_string没有卵用


这次我们在前端带入查询语句

点击submit后 参数被后台php接受带入语句查询


攻击模块9:Reflected Cross Site Scripting (XSS)(反射型跨站脚本)
通过代码可以看出,这个通过字符串替换函数过滤了<script>关键字


这里我们换个没有script的payload:<img src="1" />
更多xss payload:http://d3adend.org/xss/ghettoBypass



攻击模块10:Stored Cross Site Scripting (XSS)(存储型跨站脚本)
$Message进行了三次确切说是四次过滤,但是$name什么都没干。。。。。。。


虽然name在前端限制了长度 但是没什么卵用








/******************************************************************************
以上只是个人思路,有更好的欢迎补充。
同时上边的好多错误我相信在我们日常的工作中也会经常出现,比如在模块10中对一个变量进行了多次过滤,但是却忘掉了另一个变量的处理。
各位程序猿 写代码一定要细心!!细心!!细心!! (责任编辑:蜗蜗侠)