pikachu靶场通关(上)

第一关:暴力破解

1.1基于表单的暴力破解

首先打开burp suite拦截,然后在随意输入账号密码,

pikachu靶场通关(上)_第1张图片

可在burpsuite上抓到皮卡丘的包,可以看到刚才输入的账号密码

pikachu靶场通关(上)_第2张图片

我们选择放包,然后看到提示“用户名或密码不存在”,说明刚刚随便输入的账号密码是错的(废话)

pikachu靶场通关(上)_第3张图片

这怎么办呢,可以看到右上角有提示,我们点开发现三个账号密码,其中肯定有一个是正确的,当然我们可以一个一个地试。但是数量多的话我们就不好试了。把这三个记下来,下面用到。

pikachu靶场通关(上)_第4张图片

再次随便输入账号密码,拦截抓包

pikachu靶场通关(上)_第5张图片

发送

pikachu靶场通关(上)_第6张图片

攻击类型选择集束炸弹

pikachu靶场通关(上)_第7张图片

添加要攻击的位置,即账户和密码位置

pikachu靶场通关(上)_第8张图片

第一个负载集对应账户,添加输入上面提示给的三个账户,第二个负载对应密码,

添加三个密码

pikachu靶场通关(上)_第9张图片

pikachu靶场通关(上)_第10张图片

然后开始攻击,返回长度与其他不一样的一组即为正确的账号密码

pikachu靶场通关(上)_第11张图片

pikachu靶场通关(上)_第12张图片

1.2验证码绕过(on server)

随意输入账号密码,输入正确的验证码,登录。然后提示账号密码不存在,验证码改变。

pikachu靶场通关(上)_第13张图片

打开burp suite拦截,再次随机输入账号密码和正确的验证码,burp查看数据包

pikachu靶场通关(上)_第14张图片

把数据包发送给重发器,修改数据包中的验证码,然后发送,在右边响应栏可以看到,验证码输入错误的提示,说明后台会对验证码进行验证。

pikachu靶场通关(上)_第15张图片

点击右上角有个小提示告诉我们验证码一直有效

pikachu靶场通关(上)_第16张图片

关闭burp拦截,返回平台重新随机输入账号密码和正确的验证码,burp拦截抓包

pikachu靶场通关(上)_第17张图片

把数据包发送给重发器,点击发送,右侧响应栏提示账号密码不存在。

pikachu靶场通关(上)_第18张图片

然后我们修改账号密码,验证码不动,再发送,还是提示账号密码不存在。但是却不提示验证码错误。说明我们修改账号密码登录,验证码不过期,可以重复使用。

pikachu靶场通关(上)_第19张图片

把数据包发送给测试器,因为验证码不会改变,我们输入的验证码又是正确的,所以我们只要设置账号密码两个攻击变量

pikachu靶场通关(上)_第20张图片

两个攻击载荷分别添加字典,开始攻击

pikachu靶场通关(上)_第21张图片

返回长度不同的就是正确的账号密码。

pikachu靶场通关(上)_第22张图片
pikachu靶场通关(上)_第23张图片

1.3验证码绕过(on client)

首先随机输入用户名密码和正确的验证码,burp拦截抓包

pikachu靶场通关(上)_第24张图片

把数据包发送给重发器,修改验证码,然后发送过去,发现响应栏只提示用户名和密码错误,却没有说验证码错误,是不是说明后台根本没有检验发送过来的验证码,或者说验证码根本没有发送到后台。

pikachu靶场通关(上)_第25张图片

我们看一下右上角的提示

pikachu靶场通关(上)_第26张图片

打开码源,发现这个验证码是JavaScript前端随机生成的,每点击一次就随机生成一个验证码,

并且验证码的检验也是由前端来检验的,后台没有检验这个验证码。

pikachu靶场通关(上)_第27张图片

那就好办了,我们只需要随机输入账号密码,输入正确的验证码,然后只需要对发送到后台的数据包中的账号密码进行字典攻击就可以了。后面的操作跟1.1一样。

第二关:Cross-Site Scripting

2.1反射型xss(get)

输入特殊字符,查看源码,发现被原封不动的输出,说明没有对输入的内容进行过滤处理

pikachu靶场通关(上)_第28张图片

我们尝试输入script语句:

发现不能完整输入,输入长度被限制了。

pikachu靶场通关(上)_第29张图片

F12打开码源,搜索length,修改长度,原来的是20,我们修改大一点,200。

pikachu靶场通关(上)_第30张图片

返回,继续输入script语句提交,弹出xss窗口,刷新就消失,这就是反射型xss,也就是一次性的

pikachu靶场通关(上)_第31张图片

这个xss是以get方式提交,也就是体现在url中

pikachu靶场通关(上)_第32张图片

用burp拦截也能看到

pikachu靶场通关(上)_第33张图片

2.2反射型(post)

登录

pikachu靶场通关(上)_第34张图片

输入script语句,并用burp拦截才能发现,在url中没有体现。GET方式的XSS漏洞更加容易被利用, 一般利用的方式是将带有跨站脚本的URL伪装后发送给目标,而POST方式由于是以表单方式提交,无法直接使用URL方式进行攻击

pikachu靶场通关(上)_第35张图片

2.3存储型xss

这是一个留言板,我们输入什么信息,下面的留言列表就会永久存储该信息,没有对输入的内容进行过滤处理,包括特殊符号。

pikachu靶场通关(上)_第36张图片

pikachu靶场通关(上)_第37张图片

那我们尝试输入上面用到的Javascrip语句:

pikachu靶场通关(上)_第38张图片

把scrip语句留言到留言板后,该语句就会被执行,弹出窗口,并且刷新后或者退出重新访问还是会弹出。

pikachu靶场通关(上)_第39张图片

打开页面源码查看,我们写入的代码已经变成了页面的JavaScript脚本了,每次访问该页面都会运行脚本。也就是说我们可以利用这个漏洞写入恶意代码,每当用户访问该留言页面时,恶意代码将会被执行。

存储型xss与反射型差不多,区别就是一个是永久存储,一个是一次性的。

pikachu靶场通关(上)_第40张图片

2.4DOM型xss

先随便输入,点击,出现一个类似a标签的东西。

pikachu靶场通关(上)_第41张图片

打开源码查看,这个意思就是说当我们在这个标签里面输入一个字符串之后

就会把这个字符串通过dom方法 通过字符串拼接的方式拼接到a标签的herf属性中

这个a标签会被写道id=dom的div标签里面

pikachu靶场通关(上)_第42张图片

what do you see?

复制源码 做对应的分析 构造闭合

what do you see?

Str我们输入的内容

我们可以把输入部分删除

what do you see?

在个这个地方把前面的a标签闭合掉

随便输入一个字符串 单引号 用一个conclik弹一个窗 然后闭合a标签

#'οnclick="alert(1111)"> 

这就是我们构造的payload

经过我们前面的分析 知道

通过dom的方式获取到我们的输入 在输出到div里面

我构造闭合后,并没有弹窗出现

pikachu靶场通关(上)_第43张图片

换了另一条js语句,点击a标签,弹出窗口

pikachu靶场通关(上)_第44张图片

2.5DOM型xss-x

与上面差不多

pikachu靶场通关(上)_第45张图片
pikachu靶场通关(上)_第46张图片

2.6xss之盲打

随便输入内容提交后内容消失,点击提示,需要我们登录后台

pikachu靶场通关(上)_第47张图片

根据所给提示,登录到后台,发现我们刚才随意输入的内容发送到了后台存起来的

pikachu靶场通关(上)_第48张图片
pikachu靶场通关(上)_第49张图片

写入恶意弹窗代码,提交

pikachu靶场通关(上)_第50张图片

再次登录后台,一登陆就出现弹窗,管理员被攻击到。这种情况就是xss盲打,对攻击者来说只是尝试的输入,并不知道后台是否被输出,只是尝试的输入跨站脚本。管理员被攻击到,攻击者成功。这种危害比较大,如果在前端输入一段盗取cookie的脚本,管理员一登陆,管理员的cookie就会被获取。攻击者就可以伪装管理员登陆后台,后台的权限就大了。

pikachu靶场通关(上)_第51张图片

2.7xss之过滤

直接输入特殊字符,发现没有过滤处理

pikachu靶场通关(上)_第52张图片

然后我们直接输入弹窗语句

pikachu靶场通关(上)_第53张图片

提交后发现,我们的语句被吞掉了,应该是设置了过滤把我们的

pikachu靶场通关(上)_第54张图片

我们来验证一下,输入,提交,确实被吞掉了

pikachu靶场通关(上)_第55张图片

查看源码,所以可以确定的是它对标签进行了过滤

pikachu靶场通关(上)_第56张图片

pikachu靶场通关(上)_第57张图片

接下来,我们试试大小写混用,看看是不是还被过滤

pikachu靶场通关(上)_第58张图片

看来它只是对小写进行简单的过滤,用大写就可以绕过了

pikachu靶场通关(上)_第59张图片

我们也可以用img标签

pikachu靶场通关(上)_第60张图片

2.8xss之htmlspecialchars

关于htmlspecialchars()函数:

htmlspecialchars()是PHP里面把预定义的字符转换为HTML实体的函数

预定义的字符是:

& 成为 &

" 成为 "

' 成为 '

< 成为 <

> 成为 >

可用引号类型

ENT_COMPAT:默认,仅编码双引号

ENT_QUOTES:编码双引号和单引号

ENT_NOQUOTES:不编码任何引号

pikachu靶场通关(上)_第61张图片

查看php源码,htmlspecialchars默认不对 ' 处理

构造闭合:

' onclick='alert(111)'
pikachu靶场通关(上)_第62张图片

2.9xss之href输出

输入payload

Javascript:alert(111),

查看页内源码

pikachu靶场通关(上)_第63张图片

点击a标签,弹出窗口

pikachu靶场通关(上)_第64张图片

查看php源码,

这个页面会接收我们的输入的message,然后判断我们输入的网址,如果输入的不是百度的网址会对我们输入的内容用 htmlspecialchars()函数 进行处理

这个函数转义单引号、双引号和左右尖括号

然后输出到 a 标签的 href 属性中,在 a 标签的href属性中,可以用javascript协议来执行JS

pikachu靶场通关(上)_第65张图片

如果要对 href 做处理,一般有两个逻辑:

  • 输入的时候只允许 http 或 https 开头的协议,才允许输出

  • 其次再进行htmlspecialchars处理

2.10xss之js输出

根据提示,我们输入tmac,然后查看页内源码,发现它会把我们的输入放到JS中,然后对这个变量进行判断,然后再输出

我们可以构造一个闭合,先用一个单引号和闭合掉页面中的

pikachu靶场通关(上)_第67张图片

对比上面的图,

你可能感兴趣的:(pikachu靶场通关,安全,web安全,网络安全,网络)