一.DVWA
1
(1)low
简单的爆破用户名和密码,这里不再过多赘述
账号为admin,密码为password
(2)medium
同上依然可以使用爆破解决,就是时间有点长。。
(3)high
抓包,看到有token
将token和password两项设置为变量 (因为已知用户名为admin,为了方便演示,不在破解用户名)攻击模式使用Pitchfork(音叉攻击)
选择options将线程数设置为1(递归查找,将上一个请求的相应token作为下一个请求的payload的token,所以就不并发。因为token是每次验证完后才会新生成token,所以不能使用多线程进行爆破)
继续下滑找到Grep-Extract
Grep-Extract模块进行相应设置,获取相应的token,截取相应token的前后标识,用于下次截取
回到有效载荷页面
设置第二个参数——token,有效载荷类型改为递归搜索,在第一个请求的初始有效负载部分把我们复制的token粘贴上去
再添加词典,开始爆破
(4)IMPOSSIBLE
他说无解,账户被锁了,不是很会。。。
2
(1)LOW
他让输入一个ip,先试试127.0.0.1
没什么反应,查看源码,发现是输出wondos命令,那就应该是windos的ping命令,然后源码里说我们可以执行ping命令,那么也有可能可以执行其他命令,使用命令链接符试试,得到结果
(2)mediumm
查看源码,发现过滤了两个连接符,那么拿其他的绕过即可,得到结果
(3)high
查看源码。发现全过滤了。。但是仔细看一下,发现|这个有个空格,好像是没完全过滤,那么试试用这个,在参数与连接符之间不要加空格,得到结果
3.
(1)
查看源码
他这个意思是说要改个密码在这个网站里,然后就会在url里注入东西
那就先改个密码试试,
出来这些
抓个包试试
我们可以看到抓出来得到的信息和请求的信息是一致的,
那是不是说明如果我能控制url栏里传入的参数,就能够不在网站内执行更改密码的操作呢?
改一下参数
成功
(2)medium
在传入密码和确认密码参数前先进行了一个if语句的判断,判断里面的内容主要是验证这个访问请求是否是从dwva网站本身发起的,若不是就不执行后面的操作
源码是通过referrer这个字段的参数进行判断的,通常情况下在增加referrer验证时就是网站本身当前页面的ip地址,我们通过抓包看看信息
自己写一个更改密码的url,网站的ip地址为:172.16.16.108,把设计的html页面名字改为网站的ip地址,里面的a标签就是更改密码的操作,把设计好的标签拖到dvwa的csrf里点击
再点击这个显示修改成攻
(3)high
查看源码
又是token的校验,每次登录都会校验token是否正确,若想要执行更改密码操作必须知道正常用户的token,获得用户token的方式有两种:
构造一个页面让用户点击,点击之后偷偷的读取用户登录网站的token,把token加到自己构造的更改密码的表单上做让用户点击完成攻击,但由于同源策略,一半无法获得token,也有解决方法,但那个更繁琐,这里不赘述了
如果用户网站上刚好有存储型漏洞,可以利用存储型漏洞与csrf漏洞配合,即通过存储型漏洞获得token再利用csrf漏洞结合拿到的token完成攻击
获取token后把token放到原来抓包的代码中攻击就行
4.
(1)low
发现一个可变参数
读取一下文件
找到隐藏文件
(2)medium
一样的。。(3)high
也是一样,不知道有什么区别。。可能做错了
5.
(1)
让上传东西,直接编写一个一句话木马上传即可
(2)限制了格式,抓包改包即可
(3)抓包改包也不行了,查看源码
发现限制了文件大小以及分割了文件名,所以选择使用图片码上传,正好之前有一张直接穿了就行
6.
(1)
查看源码
意思是将代码中的step改为2,抓包
上面那个图是错的,不知道出啥问题了,后面试了一次过了
(2)查看源码发现比low多了个post传参,添加上去即可
(3)抓包后出现新参数,修改useranget即可
7.
(1)输个id上去发现上面有个可变参数,尝试使用sql注入
发现报错
说明存在注入点,这是一个字符型注入。当输入1‘ and 1=2 # 时,没有回显。找到注入点后,使用order by 查看回显位数。
爆库
爆表
爆字段
查询字段内容
注入成功
(2)选择不同的ID显示对应的name,并且没有在URL中传参,抓包试试
数字型注入
判断字段数
字段数为2
判断回显点
判断版本号
然后就是查表查字段爆密码
(3)
当访问页面时,发现通过一个链接才能修改对应的ID
点击链接,传参
之后就和之前一样了
8.
(1)
当输入user ID后显示用户ID存在,当输入id特别打的时候
满足布尔盲注场景,使用SQLMap自动化注入
获取当前用户的cookie值,将当前的cookie信息用SQLmap跑包,指定布尔盲注类型,查询当前数据库,查询当前数据库下的表名,查询users表下的字段名,查询数据
(2)
选择不同的ID,返回的结果都为User ID exists in the database.,并且URL栏中没有相关传参,猜测可能使用了POST传参,对当前页面抓取数据包,页面发生了变化,满足布尔类型的盲注,使用sqlmap自动化注入,,将文本保存在sqlmap的根目录,将当前页面的数据包信息,复制到本地的txt文本里面,并在id=处标记*号,然后宝库爆表爆字段查询数据
(3)
前面都一样,就是使用sqlmap自动化跑包时由于这里输入时一个url,响应是另一个URL故使用参数–second-url= (设置二阶响应的结果显示页面的url),后面也一样
9.
(1)
他说这个将会建立一个新的cookie,f12查看储存
每当我点击一下,这个cookie值就会加一。
所以我们可以通过用户点击次数来获取用户的cookie。这就是弱cookie的生成。
(2)
cookie是点击时的时间戳
(3)cookie的值是点击次数的md5加密。
9.
(1)
插入js代码
成功
(2)
禁止js代码了,可以用img构造一个
检查元素发现输入的值在select里面,所以要加一个闭合标签
(3)
查看源码
发现,这里必须要有白名单里的,所以闭合的时候 ,必须包含白名单里的任意一个内容。
English #><img src=2 οnerrοr=alert(/xss/) >
10.
(1)直接用xss代码共计就行
(2)
大小写绕过即可
(3)
因为对xss用了正则所以用事件型构造
<img src=1 οnerrοr=alert(1)>
11.(1)
还是和之前一样,输入的可以直接显示出来,那么就继续使用xss命令攻击,但是name输入长度有限,所以只在下面那个地方输入就行
(2)和low一样
(3)留言板不让攻击了,那就修改一下name最大长度的值就行
13.(1)
查看源码
head那可以看出以下外部资源网站可以被执行:
https://pastebin.com
hastebin.com
example.com
code.jquery.com
https://ssl.google-analytics.com
访问https://pastebin.com/
创建连接
点击raw
复制出现的连接回去输进去即可
(2)
输入源码中的注释内容# ,发现可以直接弹窗
(3)
查看source/high.js源码:
在点击网页的按钮使 js 生成一个 script 标签,src 指向 source/jsonp.php?callback=solveNum。
使用HackBar发送post提交
14.
输入success后提示需要token,这时只需要在前端调用generate_token()方法生成相应token就行
页面源代码中token的值由md5(rot13(phrase))决定的。
通过console控制台直接拿到token值。
使用bp抓包然后修改数据包中的token值即可。
(2)原理和Low一样,只是加密方法被更换了,那步骤应该就是:
1、将输入框的值改为success
2、在前端控制台执行一次do_elsesomething()方法,执行代码为:do_elsesomething(“XX”);
do_something(e)方法是将phrase变量的值逆序,也就是sseccus,生成的token值=XXsseccusXX
使用bp将输入框的值改为XXsseccusXX。
(3
查看源码
查看high.js,但是这里的代码明显被加密混淆了。
可以使用在线解码工具:http://deobfuscatejavascript.com/#。
核心源码
几个函数调用顺序及生成token的步骤如下:
首先将phrase 的值清空document.getElementById(“phrase”).value = “”;
然后执行token_part_1(a, b),取phrase值并进行字符串翻转(逆序)处理。
延迟300ms后执行token_part_2(e = “YY”),传入参数字符串’XX’和token值拼接并调用sha256()加密。
点击按钮时执行token_part_3(t, y = “ZZ”),将token值和字符串’ZZ’拼接并调用sha256()加密,从而得到最终的token。
在输入框输入 success 后,再到控制台输入token_part_1(“ABCD”, 44)和token_part_2(“XX”)这两个函数,最后点击按钮执行token_part_3()
成功获得正确 token。(这道不会,网上抄的)
15.
(1)
他这个是让你以非管理员的身份登录并且访问这个页面,那我们切到登录页面换一个非管理员的账号密码登录
嗯,low好像非管理员也可以访问。。
(2)
这个就不行了
那我们试试不访问数据而访问数据文件试试
(3)不会
16.
(1)
重定向页面没有限制,您可以重定向到您想要的任何地方。所以我们只需要使用redirect函数将其重定向到我们指定的网页即可
(2)
查看源码
这个难度是防止我们将url带离这个网站,所以我们用函数将其带到照顾个网站的其他部分就行了
(3)重定向页面试图锁定我们仅重定向到 info.php 页面,但通过检查 URL 是否包含“info.php”来实现。