XSS 挑战之旅通关记录
本文最后更新于:4 年前
XSS 挑战之旅 是一个 xss 的靶场,一共 18 关,练练手
level 1
三步走
1  |  | 
level 2
1  |  | 
level 3
1  |  | 
level 4
1  |  | 
level 5
on替换为o_n, script 替换为 scr_ipt,且一律转为小写
1  |  | 
点击 xss
level 6
herf 也被替换成 he_rf 了,其他和 l5 一样
但是少了大小写转换:
1  |  | 
level 7
关键字替换为空,双写即可:
1  |  | 
level 8
过滤地比较严格
可以换行隔开关键字
1  |  | 
level 9
检测 http:// 存在,不存在则阻止
且替换了 javascript,同样,回车隔开
1  |  | 
level 10
keyword 过滤较严格。
但是有三个隐藏参数:
t_link, t_history,t_sort,都手动加上:
?keyword=&t_link="&t_history="&t_sort="
发现只有 t_sort 有输出:
1  |  | 
level 11
代码中有隐藏参数,只有 t_sort 有输出
t_ref 猜测是 referer 的 xss,bs 改报验证后,常规 payload:
增加一个 referer:
1  |  | 
我做到 level 10 的时候中断了一下,然后直接输入网址打开了 level 11
按照正常情况,level 11 页面中的 t_ref 是有值的
level 12
t_ua,这题是 ua xss:
1  |  | 
level 13
Cookie xss
1  |  | 
level 14
http://www.exifviewer.org
这个网站需要认证。。
这题暂时做不了,看了一下网上的 wp,是一个 EXIF XSS
level 15
注意
这题需要科学上网
这题网址有的问题,应该是
http://127.0.0.1/xsstest/level15.php?src=1.gif
涉及到 AngularJS
简单来说,AngularJS 通过新的属性和表达式扩展了 HTML
源码中的 ng-include 即包含外部的 HTML 文件,文件名来自 src 参数,包含的内容将作为指定元素的子节点。
由于 ng-include 遵循 SOP,所以我们可以选择包 level 1:
1  |  | 
但是这样过不了,不知道为啥。。换 img 试试:
1  |  | 
level 16
对特殊字符进行了编码。script 被限制,用 on 事件代替;空格被限制,用 %0a 的代替(可 fuzzing)
1  |  | 
level 17
on 事件触发:
1  |  | 
level 18
和 17 一样。。
1  |  | 
来呀快活呀