一、前言本文原创作者:vk,本文属i春秋原创奖励计划,未经许可禁止转载!很多人对于XSS的了解不深。很多时候,我们的一些关键字被过滤。直接闭合前面payload,插入测试语句,是弹不出窗的。原因有很多,过滤方式也有很多,所以绕过的姿势自然也不少。今天跟大家分享bypass之编码混淆。
二、正文
1、总括很多时候,我们的一些关键字被过滤。
直接闭合前面payload,插入测试语句,
是弹不出窗的。
原因有很多,过滤方式也有很多,所以绕过的姿势自然也不少。
但并不是什么情况都能绕过的,例如:[JavaScript]
接收过来的数据,被php函数htmlspecialchars处理
这个函数是转实体,转实体后,你再怎么折腾,也绕过不了。
2、xss常用的编码
第一个,html实体编码,例如:alert()
第二个,进制类,例如:\x61\x6c\x65\x72\x74\x60\x78\x73\x73\x60,某些时候,也有不带x,例如:\5c\6a
第三个,Unicode,例如:\u0061\u006c\u0065\u0072\u0074\u0060\u4e2d\u6587\u4e5f\u53ef\u4ee5\u0060
第四个,纯转义,例如:\' \" \ ,这样的在特殊字符前加\进行转义。
先变个魔术,猜猜这样的代码能不能成功弹窗。
[JavaScript]
|
|不
|准
|偷
|看
|
|
|
|
好吧,可以弹窗如图:
那这样呢:
[JavaScript]
|
|
|
|不
|准
|偷
|看
|
|
|
|
|
|
|
是不行的哦!你可以自己试试
是不是颠覆了你的xss观。
什么?js伪协议不能用了?
哈哈,其中奥妙无穷,跟我一起来探索吧。3、编码的正确使用姿势。
3.1 总论我相信很多人都知道,是有那么几个编码是运用在xss的