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>"

也不行。

可见他过滤了尖括号和引号。<>” 分别变成了转义符 &lt;&gt;&quot;

我试试用 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题

这次随便输入东西。发现 <>号被转义为 &lt;&gt;

尝试利用前面的知识:Unicode编码。似乎不行。

突然想起,用这个代码,不需要尖括号:

" onmouseover=alert(document.domain) align="left

弹窗成功。

看答案是基本一样的。

第7题

这一次刚一看,没有长度限制。也没有过滤。仔细看才发现,把&<>” ‘ 这些符号都转义了。

&amp; &lt;&gt; &quot; '

先来试试前面的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

看答案:使用了 &#09 (\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练习题做题过程及感悟的更多相关文章

  1. ACM 做题过程中的一些小技巧。

    ACM做题过程中的一些小技巧. 1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long l ...

  2. ACM做题过程中的一些小技巧

    1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long long或__int64型(两个下 ...

  3. CodeM美团点评编程大赛复赛 做题感悟&题解

    [T1] [简要题意]   长度为N的括号序列,随机确定括号的方向:对于一个已确定的序列,每次消除相邻的左右括号(右左不行),消除后可以进一步合并和消除直到不能消为止.求剩下的括号的期望.\(N \l ...

  4. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  5. C语言程序设计做题笔记之C语言基础知识(上)

    C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...

  6. SDOI2016 R1做题笔记

    SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...

  7. AtCoder Grand Contest 11~17 做题小记

    原文链接https://www.cnblogs.com/zhouzhendong/p/AtCoder-Grand-Contest-from-11-to-20.html UPD(2018-11-16): ...

  8. AtCoder Grand Contest 1~10 做题小记

    原文链接https://www.cnblogs.com/zhouzhendong/p/AtCoder-Grand-Contest-from-1-to-10.html 考虑到博客内容较多,编辑不方便的情 ...

  9. noip做题记录+挑战一句话题解?

    因为灵巧实在太弱辽不得不做点noip续下命QQAQQQ 2018 积木大赛/铺设道路 傻逼原题? 然后傻逼的我居然检查了半天是不是有陷阱最后花了差不多一个小时才做掉我做过的原题...真的傻逼了我:( ...

随机推荐

  1. Lucene.net站内搜索—5、搜索引擎第一版实现

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  2. PS教程:20个新鲜出炉的 Photoshop 中级教程

    Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享最新20个 Photoshop 进阶教程,提高你的图片处理技巧,制作时尚的效果.这些教程可以帮助把你的想法 ...

  3. 7个你可能不认识的CSS单位

    众所周知CSS技术我们虽然很熟悉,在使用的过程却很容易被困住,这让我们在新问题出现的时候变得很不利.随着web继续不断地发展,对于新技术新解决方案的要求也会不断增长.因此,作为网页设计师和前端开发人员 ...

  4. 【初探Underscore】再说模版引擎

    前言 Underscore 是一个JavaScript实用库,提供了类似Prototype.js (或 Ruby)的一些功能,但是没有扩展任何JavaScript内置对象. 它弥补了部分jQuery没 ...

  5. 从0开始学angularjs-笔记02

    上一节课主要跟大家讲解了angularjs的几种特性和看了一个简单的双向绑定的例子.最近都没有时间写博客了....忙成狗呀...今天周末,在写一篇吧~~ 今天主要跟大家详细讲解一下angularjs的 ...

  6. 每日一博 | 用 Ionic2 创建 App 启动页滑动欢迎界面

    原文  https://my.oschina.net/qinphil/blog/777787 效果如下,图片来自网络 本文例子和上图稍有不同,主要功能如下: 每滑动一下展示一张全屏图片: 滑动到最后一 ...

  7. 移动web开发介绍——浏览器

    前段时间了解学习了一下<移动Web手册>,觉得真的需要这种不是偏向技术.框架或工具的书籍,只是单纯的讲解一些关于移动Web最基本的知识.正好今天整理一部分之前学习过的内容,记录和分享,也方 ...

  8. spring+ibatis+多数据源

    环境:spring3.1+ibatis2.3.4+oracle+hbase要求:需要在工程中操作两个不同的数据源,一个是mssql,另一个是hbase.实现:    <bean id=" ...

  9. The quieter you become,The more you are able to hear.

  10. inputType属性

    android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用.这也大大的方便的操作.有时需要虚拟键盘只为字符或只为数字.所以inputType尤为重要.<E ...