pikache靶场通关——XSS漏洞


前言

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:

  1. 反射性XSS;
  2. 存储型XSS;
  3. DOM型XSS;

XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。

形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:

  • 输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  • 输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

在这里插入图片描述
靶场一共有10关,现我们就开始通关吧。


环境

靶场安装机器:Windows10(192.168.1.107)
渗透机器:Windows10(192.168.1.108)


第一关、反射型xss(get)

在这里插入图片描述
一个平平无奇的输入框

Step.1、输入特殊字符测试

遇到输入框,作为渗透测试人员,第一反应就是输入特殊字符看看,我这里就先输入一个双引号"瞧瞧。
在这里插入图片描述
能输出,看来特殊字符做了过滤

Step.2、输入js语句

往输入框中输入<script>alert(1)</script>看看
在这里插入图片描述

发现无法完全输入,查看页面源码,这输入框做了长度限制

在这里插入图片描述

把长度限制改成100,再次输入js语句看看

在这里插入图片描述
在这里插入图片描述
能成功弹出,说明存在XSS反射型漏洞

Step.3、在URL中输入js语句

在这里插入图片描述

回车,发现也能成功弹出
在这里插入图片描述
到此,第一关通关


第二关、反射性xss(post)

在这里插入图片描述
登录它吧,pikachu靶场的默认账号密码是:admin/123456,如果你想用渗透手法获取账号密码,也可是使用上一个挑战 —— 暴力破解的手法来获取,这里节省时间,就直接登录了。

在这里插入图片描述
登录后发现,也是一个平平无奇的输入表单

Step.1、输入获取cookie的js语句

输入:<script>alert(document.cookie)</script>
在这里插入图片描述
好了,弹出了cookie信息,说明这里的确存在XSS漏洞,第二关通关


第三关、存储型xss

在这里插入图片描述
平平无奇的一个留言框

Step.1、输入获取cookie的js语句

输入:<script>alert(document.cookie)</script>
在这里插入图片描述
能顺利弹出cookie信息

Step.2、查看页面源码

在这里插入图片描述
直接在留言列表里面能看到我自己输入的payload

Step.3、感受危害性

使用另一个浏览器登录靶场,点开对应页面
在这里插入图片描述
我都还没有进入页面就先弹出我的cookie了,这说明这句payload已经存进了数据库。设想一下,一个正常网站,每次进去都会弹出十几次的弹框,这回让人非常不方便。

打开数据库查看,这一句payload的确已经存进来了。
在这里插入图片描述
第三关通关


第四关、DOM型XSS

在这里插入图片描述
同样也是一个平平无奇的表单。

Step.1、输入js语句测试

输入:<script>alert(document.cookie)</script>
在这里插入图片描述
发现没反应。

Step.2、查看页面源码

在这里插入图片描述
发现被包裹在a标签里面了,难怪不起作用,这稍微构造以下payload吧

Step.3、再次输入js代码编写的payload

输入:'></a><script>alert(document.cookie)</script><a href='
在这里插入图片描述
输入发现没有弹窗,说明这个payload不行

再尝试构造另外一个payload:#' onclick="alert(document.cookie)">
在这里插入图片描述

点击,发现有弹窗了
在这里插入图片描述
第四关通关。


第五关、DOM型XSS-S

在这里插入图片描述
如图,很哀伤的一个表单

Step.1、输入js语句测试

输入:<script>alert(document.cookie)</script>
在这里插入图片描述
没啥反应,这时候得查看页面源码

Step.2、查看页面源码

在这里插入图片描述
这里有个onclick事件,点开它看看
在这里插入图片描述
好了,看到我们输入的内容到这里来了,这直接按照第四关得步骤来吧

Step.3、输入编写好的payload

payload:#' onclick="alert(document.cookie)">
在这里插入图片描述
第五关通关。


第六关、XSS盲打

在这里插入图片描述
有点意思的一个页面

Step.1、输入payload测试

随便输入点payload吧
在这里插入图片描述
提交后什么都没有发生,查看一下页面源码
在这里插入图片描述
同样什么都没有。发现我输入得东西被post表单提交了,想不到,只能看个提示了。
在这里插入图片描述
原来这里要登录后台查看

Step.2、按提示查看后台

在这里插入图片描述
账号密码是:admin/123456,点击登录

在这里插入图片描述
神奇得事情发生了,一登陆,我刚才输入的2个payload都弹出了。
好家伙,原来这就叫盲打,第六关通关。


第七关、XSS之过滤

在这里插入图片描述
一股哲学气息扑面而来。

Step.1、输入payload测试

现在看到这种,第一反应就是扔个payload进去瞧瞧了
<script>alert(document.cookie)</script>
在这里插入图片描述

好的,没反应,再来看看页面源码
在这里插入图片描述
也没看出啥,但是能发现是使用get表单的方式提交,来,抬头看看url
在这里插入图片描述
就在这里了。

Step.2、分析

结合URL和返回结果,只输出了一个 “>”字符,其他的内容被过滤了,但我们完全不清楚它的过滤规则是什么,没办法,就尝试一下把URL中的payload中的部分字母变成大写吧。

Step.3、绕过过滤

把URL中的payload部分字母变成大写
在这里插入图片描述
在这里插入图片描述
显示出来了!这不立即改写一下payload

改写后的payload:'</p><script>alert(document.cookie)</script><p>'
输入后再次提交
在这里插入图片描述
这……看来得想想办法。

换个标签试一试吧,就尝试一下用a标签

输入的payload:<a herf="#" onclick="alert(document.cookie)">
在这里插入图片描述
好了,点击后面变色的内容能够直接弹出了,看来过滤规则是针对script标签的,第七关通关。


第八关、XSS之htmlspecialchars

在这里插入图片描述
这表单挺臭美的

Step.1、输入payload测试

老规矩,输一个payload进去试一试
在这里插入图片描述

查看页面源码
在这里插入图片描述
看到这情况,尝试改造payload,把a标签给闭合掉

Step.2、改造payload再次输入

输入的payload:#' onclick='alert(document.cookie)'>
点击查看
在这里插入图片描述
好了,成功弹出,第八关通关。


第九关、XSS之href输出

在这里插入图片描述
这次反而挺平平无奇

Step.1、输入payload测试

输入payload,发现没反应再查看页面源码
在这里插入图片描述

在这里插入图片描述
发现这里<>被编码了,这样子哪怕是把a标签给闭合也不可能实现,那就只好使用函数了,因为JavaScript里面的a标签中的href属性是可以直接使用函数的。

Step.2、输入js函数格式的payload

输入payload:javascript:alert(document.cookie)
在这里插入图片描述
点击
在这里插入图片描述
好了成功输出。第九关通关。


第十关、XSS之js输出

在这里插入图片描述
回到原初,又是平平无奇

Step.1、输入payload测试

输入payload: <script>alert(document.cookie)</script>
发现下面多了一串乱七八糟的东西
在这里插入图片描述

查看页面源码
在这里插入图片描述
发现我输入的payload到了script标签上来了,顺便还把script标签给闭合了,所以才会出现这一串乱七八糟的东西。

Step.2、输入构造好的payload

接下来就简单了,直接重新构造payload
新的payload:';alert("cookie值是:"+document.cookie); //
在这里插入图片描述
这里cookie值是空获取不到,但弹窗了,第十关通关。


  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值