前些年挖的 仅供学习 现在肯定不能用了
测试网址:http://xxxxxxxx.com?sid=bc18e21cd9518a3a8ed0cbf8370a3d7f03950&keyword=aaa&xx%0a
寻找参数,找到一个切入点:
“ & 过滤 无法构造编码去绕过 利用换行破坏注释 %0aalert(1);
回车后,进入控制台,发现报错,证明我们插入的代码起作用了
利用属性sid 插入%0A报错,点进报错的js文件,定位到
想办法吧alert(1)从函数中挪出来,同时消除错误(js方法中,有一处报错,整个都不会执行)
正确的
所以构造%0aalert(1);$(html5_cart).click(function(){//)
但是同一个<script>标签内 如果有一个语句错误,整个标签内的代码就执行不了 而执行构造的代码后有两处语法错误
一:
与构造的那段代码不在同一个标签内,所以可以不用管,而且找不到闭合字符串,使其不报错的方法
二:
与构造的那段代码在同一个标签呢,所以要使其不报错,但是//注释掉了后面的”>’ 但是有一个知识点:
'aaa\
bb//cc' %0A换行(换行有很多,不至%0A)后,字符串被破坏,但是在%0A换行前写入一个\ 这样第二行还是处于字符串内,这样//就起不到注释的作用了
而之前构造的那段代码,因为第一行处于注释之内,所以\被注释掉了,第二行不在字符串内
构造代码:sid=bc18e21cd9518a3a8ed0cbf8370a3d7f03950%5c%0a});alert(1);$(html5_cart).click(function(){// (\-->%5c)
http:///xxxxxxxx.com?sid=bc18e21cd9518a3a8ed0cbf8370a3d7f03950%5c%0a});alert(1);$(html5_cart).click(function(){//&keyword=aaa
知识点:1.利用换行来破坏注释
2.JS中:'aaa\
bb//cc' 在%0A换行前写入一个\ 这样第二行还是处于字符串内,这样//就起不到注释的作用了
而之前构造的那段代码,因为第一行处于注释之内,所以\被注释掉了,第二行不在字符串内
3.alert("XSS") 如果引号编码 这句实现不了 alert(XSS)也不行 没引号 只能是数字
但是 alert(/XSS/) 这样可以