目录
前言
一、暴力破解
二、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
Vulnerability: Command Injection
Low:
从题目中看出,给一个IP并调用ping命令。那么我就可以在输入的时候带上一些字符,被带进终端中,从而被执行
成功,被终端执行。
Medium:
这里同样使用 & 。查看源码发现他把 ; && 这两个过滤了。
High:
从这里可以看出,我们的&给过滤了。
查看源码:
仔细观察 可以发现 | 这个东西没有被过滤。
Vulnerability: Cross Site Request Forgery (CSRF)
这个是跨网站伪请求。
Low:
抓包发现,客户端给服务的发现了这样的请求:
那么我就使用这个做一个按钮或者网页欺骗用户去点击。
当用户去点击的时候,便会自动把密码该为password。
Medium:
同样点击发送请求。
这里他会检查你的请求前的网站,就是referer。
请求成功!
High:
这里没有反应。
查看源码:
有token,使用bp抓包查看。
这样的话,我就需要配合xss跨网站攻击了尝试获取token。
构造一个xss代码:
// 这个代码会出现一个窗口。远程窗口,而后我们在这个窗口里,获取里面的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。还有就是他分割了文件名。这看来我这样无脑上传效果是不明显的了,所以我打算上传图片马。并配合文件包含漏洞来激活木马。最后蚁剑连接。
Vulnerability: Insecure CAPTCHA
Low:
不安全的验证码,查看源码发现
当step==2的时候,他才会进行到第二部分,就是更改密码。使用bp抓包,修改step参数为2
成功通过验证。
Medium:
直接修改step为2,发包
出现了以上问题,说我不是captcha。猜测是User-Agent问题,尝试修改User-Agent为CAPTCHA。
无效。查看源码:
这里有一个Post传参,passed_captcha,但是下面没有,添加上去。
修改成功。
High:
同样,直接修改参数,但是修改密码失败了。
查看源码:
这里出现了一个新的参数,而后他还要修改user-agent。
修改成功
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相同。
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
每当我点击一下,这个cookie值就会加一。所以我们可以通过用户点击次数来获取用户的cookie。这就是弱cookie的生成。
Medium:
这个cookie值很像时间戳,于是我找了一个在线的时间戳转换网站。
是的没错这cookie值就是点击时候的时间戳
High:
解密出来是一,那么我在点击一下,在解密发现
这说明,这cookie的值是点击次数的md5加密。
Vulnerability: DOM Based Cross Site Scripting (XSS)
Low:
尝试在url中修改参数,传入js代码。
成功攻击。
Medium:
同样尝试攻击,失败。
查看源码:
代码:
>
// 前面都是闭合标签,而img,则是主要代码,利用img构造出事件触发js代码。弹出/xss/
High:
查看源码:
发现,这里必须要有白名单里的,所以闭合的时候 ,必须包含白名单里的任意一个内容。
English #>
成功攻击。
Vulnerability: Reflected Cross Site Scripting (XSS)
Low:
发现可控参数。
输入xss代码,开始跨网站攻击。
攻击成功!
Medium:
直接攻击:
攻击失败。猜测,这里过滤了
成功攻击。
High:
查看题目:
他说有个页面加载了一些代码,可以修改,从而执行我们自己的代码。
从这里可以看出,他只信任他自己的网页。而上面有有一个/source/jsonp.php。那么我就可以构造一个js代码,给他,他在src里发现有自己的网站就执行这串代码。
这里又发现一个post参数,那么我就可以使用bp抓包,而后发送我构造的js代码。
Include=
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是一个经典的靶场,值得我们多去练习