DVWA通关攻略(适合新手)

目录

前言

一、暴力破解

二、ping命令注入

 三、CSRF

四、文件包含

五、文件上传

六、CAPTCHA

七、SQL注入

九、SQL注入(盲注)

十、会话劫持

十一、DOM性xss注入

十二、反弹性xss注入

十三、存储性xss注入

十四、CSP

十五、javascript攻击

总结


前言

Dvwa是一个适合新手的靶场,他综合了多个注入web的方法。非常值得我们学习

一、暴力破解

Vulnerability: Brute Force:

Low:

 

 由图2,得出结论。这里可以尝试sql注入。于是我使用了admin’ and 1=1#。成功注入。

Medium:

这里的源码加上了过滤。避免了sql注入的问题。于是我打算使用密码枚举爆破。

 最后根据长度大小来判断,结果密码是password,成功登录。

High:

同样抓包。

发现这里多了一个token,面对这种情况。可以使用草叉模式,把这个token带上去爆破。

 

 

 这里设置初始值。

 

 爆破成功,密码为password

二、ping命令注入

Vulnerability: Command Injection

Low:

从题目中看出,给一个IP并调用ping命令。那么我就可以在输入的时候带上一些字符,被带进终端中,从而被执行

 成功,被终端执行。

Medium:

 这里同样使用 & 。查看源码发现他把 ;   && 这两个过滤了。

 High:

从这里可以看出,我们的&给过滤了。

查看源码:

 

 仔细观察 可以发现 | 这个东西没有被过滤。

 三、CSRF

Vulnerability: Cross Site Request Forgery (CSRF)

这个是跨网站伪请求。

Low:

抓包发现,客户端给服务的发现了这样的请求:

那么我就使用这个做一个按钮或者网页欺骗用户去点击。

当用户去点击的时候,便会自动把密码该为password。

 

Medium:

同样点击发送请求。

 

 这里他会检查你的请求前的网站,就是referer。

 请求成功!

High:

这里没有反应。

查看源码:

 有token,使用bp抓包查看。

这样的话,我就需要配合xss跨网站攻击了尝试获取token。

构造一个xss代码:

<iframe src=’../crsf’ onload=alert(frames[0].document.getElementByname(‘user_token’)[0].vlaue)></iframe>
// 这个代码会出现一个窗口。远程窗口,而后我们在这个窗口里,获取里面的element(元素),得到token。从而完成一此crsf攻击。

 

password修改成功!

四、文件包含

Vulnerability: File Inclusion

Low:

 发现一个可控参数。尝试读取其他文件。

成功读取了file4.php

我也可以读取其他文件比如说php.ini,报错是有绝对路径的。

 

 

Mediun:
这里查看源码发现:

他把http过滤了。

这样我们可以使用一下php伪协议。

High:

同样的方法,发现有过滤

查看源码:

 这里需要file 开头。那么我就可以使用file://协议了。

访问成功

当然,失败的时候,会自动爆出绝对路径。

五、文件上传

Vulnerability: File Upload

Low:

没有过滤,直接上传木马。

使用蚁剑连接。

Medium:

直接上传木马,发现,他对content-type好像有检查。

 尝试使用Bp抓包修改。

 成功上传。

 最后交给蚁剑。

High:

同样直接上传木马:

这次同样修该content-type,但是没有成功。

查看源码:

发现,这里检查了大小,content-type。还有就是他分割了文件名。这看来我这样无脑上传效果是不明显的了,所以我打算上传图片马。并配合文件包含漏洞来激活木马。最后蚁剑连接。

六、CAPTCHA

Vulnerability: Insecure CAPTCHA

Low:

不安全的验证码,查看源码发现

当step==2的时候,他才会进行到第二部分,就是更改密码。使用bp抓包,修改step参数为2

成功通过验证。

Medium:

直接修改step为2,发包

出现了以上问题,说我不是captcha。猜测是User-Agent问题,尝试修改User-Agent为CAPTCHA。

无效。查看源码:

这里有一个Post传参,passed_captcha,但是下面没有,添加上去。

修改成功。

High:

同样,直接修改参数,但是修改密码失败了。

查看源码:

这里出现了一个新的参数,而后他还要修改user-agent。

修改成功

七、SQL注入

Vulnerability: SQL Injection

Low:

这里有一个可控参数id,我尝试在这里注入。

报错,说明存在注入点

这是一个字符型注入。当输入1‘ and 1=2 # 时,没有回显。

找到注入点后,使用order by 查看回显位数。

1‘ order by 3# //查看回显位。

最多会显示3段数据,也就是3个回显位。

1’ and 1=1 union select database(),user()# // 使用联合查询,查看当前用户和当前使用的数据库。

1’ and 1=1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

// 查询当前数据库里的所有表。

1’ and 1=1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’users’ #

// 查询users表里的所有字段。

1’ and 1=1 union select group_concat(user),group_concat(password) from users #

// 查询users表的password和user 字段内容。

SQL注入完成。

Medium:

这里的ID也是可以控制的。这里的话,可以修改网页源码。

直接在value 修改。

可以看出,这个是数字型注入。

1 order by 3#

1 and 1=1 union select version(),database() #

1 and 1=1 union select group_concat(table_name),2 from information_schema.tables where table_schema=database() #

1’ and 1=1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’users’ #

1’ and 1=1 union select group_concat(user),group_concat(password) from users #

注入完成。

High:
这里可以直接注入,字符类型

这里有一个limit,就是限制回显条数。这里是只能回显一条消息。我可以给一个不存在的id,从而让他回显我想的数据。注入方法和low相同。

九、SQL注入(盲注)

Vulnerability: SQL Injection (Blind)

Low:

这里输入ID,他不会回显信息。

那么这可以初步判断,这是一个SQL盲注。需要我,猜测字符。

使用ascii()函数,substr()函数,去猜测。

代码:

1’ and ascii(substr(database(),0,1))>89 # //猜测数据库第一个字符的ascii值

1’ and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),0,1))>89 # //猜测表的字符的acii值

1’ and ascii(substr((select group_concat(colunm_name) from information_schema.columns where table_schema=database()),0,1))>89# //猜测字段的值

1’ and ascii(substr((select group_concat(password) from users),0,1))>89# //猜测password内容的ascii值

Medium:

这里同样直接修改网页源码。注入方式同low一样。

注入类型是整数型

1 and 1=1 #

 同样使用上面的代码

High:

注入方式不变,同样使用bool类型盲注。

使用字符型注入

1’ and 1=1 #

  同样使用上面的代码

十、会话劫持

Vulnerability: Weak Session IDs

Low:

每当我点击一下,这个cookie值就会加一。所以我们可以通过用户点击次数来获取用户的cookie。这就是弱cookie的生成。

Medium:

这个cookie值很像时间戳,于是我找了一个在线的时间戳转换网站。

是的没错这cookie值就是点击时候的时间戳

High:

看的第一眼猜测这是md5值。拿去md5在线解密查看。

解密出来是一,那么我在点击一下,在解密发现

这说明,这cookie的值是点击次数的md5加密。

十一、DOM性xss注入

Vulnerability: DOM Based Cross Site Scripting (XSS)

Low:

尝试在url中修改参数,传入js代码。

成功攻击。

Medium:

同样尝试攻击,失败。

查看源码:

代码:

></option></select><img src=1 οnerrοr=alert(/xss/)>

// 前面都是闭合标签,而img,则是主要代码,利用img构造出事件触发js代码。弹出/xss/

High:

查看源码:

发现,这里必须要有白名单里的,所以闭合的时候 ,必须包含白名单里的任意一个内容。

English #></select><img src=2 οnerrοr=alert(/xss/) >

成功攻击。

十二、反弹性xss注入

Vulnerability: Reflected Cross Site Scripting (XSS)

Low:

发现可控参数。

输入xss代码,开始跨网站攻击。

攻击成功!

Medium:

直接攻击:

攻击失败。猜测,这里过滤了<script>标签。尝试使用大小写绕过。

成功绕过,攻击成功!

查看源码发现是str_replace()函数。双写也可以绕过

High:

普通攻击,失败!

改变大小写尝试,攻击,还是失败。猜测,这次使用了正则匹配过过滤了<script>标签。尝试使用a标签。

代码:

<a href=sekljf οnclick=alert(1)>woshinidie</scirpt>

// 同样构造事件,当用户点击的时候运行js代码。

十三、存储性xss注入

Vulnerability: Stored Cross Site Scripting (XSS)

Low:

查看网页发现,这是留言板。尝试普通攻击。

攻击成功!

Medium:

普通攻击,成功。

问题:做了什么过滤?

猜测,对输入长度进行了过滤

猜测成立。

High:
普通攻击,失败!

猜测是正则过过滤了script标签,尝试使用a标签。

同样注入失败。

换个地方试试

成功攻击!

十四、CSP

Vulnerability: Content Security Policy (CSP) Bypass

Low:

查看network,发现有一个content-security-policy,说明存在信任网站,我可以从这些网站中找一个可以写js代码的网站,来进行攻击

但是,发现这些网站都不容易写js代码,所以我打算使用另外的办法。把一个js文件写到csp目录下,也就是配合file_upload 和ping 命令漏洞来进行。

这里的ping漏洞没提示,但是他是确确实实move了。

0.0.0.0|move ../../hacker/uploads/xss.txt ../../ vulnerabilities/csp

输入xss.txt,成功攻击!

Medium:
抓包查看:

可以发现这里有一个写script的凭证,只要有这个东西就会执行。

输入:

<script nonce='TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA='>alert(11)</script>

成功攻击。

High:

查看题目:

他说有个页面加载了一些代码,可以修改,从而执行我们自己的代码。

从这里可以看出,他只信任他自己的网页。而上面有有一个/source/jsonp.php。那么我就可以构造一个js代码,给他,他在src里发现有自己的网站就执行这串代码。

这里又发现一个post参数,那么我就可以使用bp抓包,而后发送我构造的js代码。

Include=<script src=”/source/jsonp.php?callback=alert(‘hello 111’);”></scirpt>

十五、javascript攻击

Vulnerability: JavaScript Attacks

Low:

看题目:

应该是js代码审计。那么我就输入success,提交试试。

这里提示,需要token。查看网页源码。

在源码中发现token,这个值看不懂,猜测是md5,直接解密试试。

结果提示不对,这可能有MD5但是,应该还有其他加密。

查看源码:

有md5,还有一个rot13。上网找在线解密工具解密

解密后发现是changeme。那么我直接给success加密。先使用rot13加密,而后md5加密。在给那个hidden传值。

最后输入success。

成功win

Medium:

同样输入success后

还是需要token,查看网页源码:

这个仔细观察他只是把changeme到着写,而后在开头和最后加上了xx

所以我再给hidden传入XXsseccusXX

成功win

High:

查看源码:

这里又是一堆看不懂的乱码。这样我直接查看源码:

这里有一堆乱码。去在线js解密混淆后的代码

解密成功后发现,这里有三个token。可以看出,这里的token1因为设定原因没有先进行,所以我就要先给token1 进行,而后进行token2,最后在进行token3。

最后token3需要我点击一下,提交键,即可触发。

成功win


总结

DVWA是一个经典的靶场,值得我们多去练习

  • 14
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值