黑客大神熬夜整理的xss各种骚操作( 二 )


最后一个问题:这句payload应该插在哪?一般是反射型的XSS直接便可以见到效果 , 有php环境的可以试一下:a.php 内容为 <?php echo $_GET["a"]; ?> , 然后用浏览器打开这个文件 , 后面接 ?a=%3Cimg/src/onerror%3D%5Cu0061%26%23x5C%3B%26%23x75%3B006c%5Cu0065%5Cu0072%5Cu0074%26%23x28%3B1%29%3E , 即可弹窗
【黑客大神熬夜整理的xss各种骚操作】如图

黑客大神熬夜整理的xss各种骚操作

文章插图
 
注意点总结:
1.转义编码应当只出现在标示符部分 , 不能用于对语法有真正影响的符号 , 也就是括号 , 或者是引号、等号、冒号
2.浏览器是不会在html标签里解析js中的那些编码的!所以我们在onerror=后面放js中的八进制、十六进制编码(jsUnicode编码除外)是不会解析 你放进去是什么 解析就是什么!而另一方面 , 如果想用这种方式来替换掉圆括号 , 或者引号 , 会判定为失败 。同时 , 主要注意的方式 , 上边这种直接在字符串外进行转移的方式 , 只有Unicode 转义方式被支持 , 其他转义方式则不行 。其实 , 这样的策略是正确的 , 因为对于JavaScript , 转义编码应当只出现在标示符部分 , 不能用于对语法有真正影响的符号 , 也就是括号 , 或者是引号 。其实 , 这样的处理方法 , 反而是比CSS 更加合理的 。
3.HTML解析器在建立文档树的时候会针对节点内的Entity编码(即实体编码)解码后传输 。
4.使用DOM 操作 , 对DOM Tree 造成了改变 , 会调用到 HTML 解析器重新对其解析 , 意思就是 , 用 DOM 操作创建了节点标签什么的 , 会重新调用 HTML 解析
5.在一个页面中 , 可以触发 JS 解析器的方式有这么几种:直接嵌入< script> 代码块 。通过< script sr=… > 加载代码 。各种HTML CSS 参数支持JavaScript:URL 触发调用 。CSS expression(…) 语法和某些浏览器的XBL 绑定 。事件处理器(Event handlers),比如 onload, onerror, onclick等等 。定时器 , Timer(setTimeout, setInterval)eval(…) 调用 。可以想一下这个 <script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0029</script> , 为什么这个不弹窗呢?????????????????不清楚可以看一下参考文章的第一篇!!
6.<script>alert('1')</script>是无法弹框的 , 因为script标签内无法解析HTML实体编码 。但是 <svg><script>alert('1')</script>是可以被解析的<svg>属于外部标签 , 是一种特殊的标签 , 它使用 XML 格式定义图像 , 支持 XML 解析 。因为 xml 支持在标签内解析 HTML 实体字符 , 所以在 XML 中 ( 会被解析成( 。
另外一些例子:以下两个表示相同:<img src=https://www.isolves.com/it/aq/sj/2020-08-12/"/uploads/allimg/220420/2132204621-4.jpg">黑客大神熬夜整理的xss各种骚操作因为在识别协议之前 , 已经HTML解码了 , 所以并不会出现识别协议失败
下面两个例子代码不会执行 , 因为 , 编码的是标签本身的结构而非节点内的内容:(这一点非常重要)<img src=https://www.isolves.com/it/aq/sj/2020-08-12/"/uploads/allimg/220420/2132204621-4.jpg">黑客大神熬夜整理的xss各种骚操作
三、骚操作HTML新增字符:冒号 换行
1) HTML编码:实体编号 , 就是ASCII码的10进制 , 还可以$#000060来实现绕过一些WAF 。2) 当 <> 这些符号被编码的时候 , 因为在JS中常见的传输中文或者非ASCII码字符就会使用unicode编码 , 同样这种编码可以用来绕过一些WAF 。如 '<':编码为 '\u003c'(unicode编码) , 'a'->\x61 。此时需要考虑网站传输数据的方式!3) 如果任何形式引号都被拦截的情况下 , 你可以使用fromCharCode()方法来创造你需要的XSS Payload.如<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))> , 然后再编码4) 还有 , 数字编码前面加「0」 , 这也是一条很好的绕过 WAF 的向量 。5) 多观察网站传输数据的编码格式 , 利用其对应特点进行编码6) 巧用 location + javascript 伪协议 <img/onerror=loaction="javascript:alert%611)"> 通过location会经过一层url解码<img/src/onerror=location="javasc"+"ript:a"+"lert%28"+"1)">这样写还可以绕过黑名单限制


推荐阅读