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%202%093%0a4%0b5%0c6%0d7%a08%009


由此可看出:
-
%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
太痛苦了,目前还没有头绪,等学精了再看

浙公网安备 33010602011771号