一、一般可利用的编码1.URL编码格式:%十六进制数
文章插图
记住常用符号、字母的 ASCII 码 , 能熟练转换 10 -16 进制即可 。中文的URL编码略有不同 , 因为用的地方没有 , 也就不想写了
如何利用:浏览器的 URL 地址栏 , 反射型 XSS , 可以将特殊字符进行 URL 编码 , 可以尝试多次编码试一试;POST过去的数据 , 存储型 XSS , 跟反射型的一样 。最后提一点:因为一般网站处理数据的时候最开始解码的一般是 URL 解码 , 所以可以在用其他编码构造完成 payload 后 , 最后再进行 URL 编码 , 由此可见 , 可以根据解码顺序 , 灵活得进行编码 , 最先解码的 , 就最后编码 , 懂我什么意思吧 , 我也不太懂我到底有没有说懂
2.html实体编码格式:&#十进制/十六进制; (一般是用十进制)十六进制的时候为 &#x十六进制数
文章插图
对照ASCII码表基本就可以轻松转换了
HTML实体编码对照表参考地址:https://www.w3school.com.cn/html/html_entities.asp
如何利用:注意不要编码 标签的 <> 、属性名、以及赋值号(等号= , 冒号:)就可以了
3.JS编码格式:①--unicode:\u十六进制 ②--八进制、十六进制
文章插图
如何利用:一般使用 jsUnicode编码比较多 , 其他的两种还在研究 , 望得到高人指点
4.css编码格式:1~6位十六进制数后边就不能直接紧跟数字或字母 , 否则会被当成转义里的内容处理 , 所以CSS 选择了空格作为终止标识 , 在解码的时候 , 再将空格去除 。
如何利用:在使用 style 属性或标签的时候使用 , 或者也可以在引入外部 CSS 文件的时候 , 将引入的文件内容进行编码
二、弄清楚浏览器解码顺序浏览器解析顺序:
示例HTML代码:<a href="JAVAscript:%0a%61l\u0065rt(1)">click me</a>
解释:1.首先浏览器接收到HTML代码 , 会先开始进行HTML解析 , 构造DOM树 , 粗略的讲就是识别 <> 这些标签 , 赋予其特殊含义 , 区别于纯文本内容 。注意此时并不会做任何解码操作 , 所以构造 &#lt;img src="JavaScript:al\u0065rt(1)">是不会弹窗的 , 因为没有识别到标签 , 它相当于就是一个纯文本 , 具体来说就是:标签属性名和赋值符号不能编码 , 但是标签属性的值可以编码
2.DOM树构造完成 , 开始HTML解码 , 变成了<a href="javascript:%0a%61l\u0065rt(1);">click me</a>
3.唉 , 碰到链接类属性 href 了 , 尽管发现了是javascript伪协议 , 浏览器也会直接 URL 解码一次 , 然后就变成了 <a href="javascript:al\u0065rt(1)">click me</a>
4.解码后 , 因为是 javascript 伪协议 , 所以 JS 解析器便开始工作了 , 解析成了 <a href="javascript:alert(1)">click me</a>,注意在识别协议的时候 , 协议是不能被任何编码的 , 除非在识别之前已经被解码了 , 不然的话是不能被识别出来的的 , 比如说 href="j%61vascript:alert(1)" , 冒号被编码也不行 , 浏览器虽说会 URL 解码 , 但是并不会解码之后再识别一次这是什么协议 , 于是不管是 http 协议还是 javascript 伪协议也好 , 此时都发挥不了作用而且 , 此时 href="j%61vascript:alert(1)" 中的冒号括号也不能被 js 编码 , 否则不会弹窗
5.然后就顺利弹窗了
6.当然 , 并不是所有时候都是这种解码顺序 , 要依据具体情况而定 。
7.演示一下如何自己进行编码:可以看到上述例子浏览器解码顺序为 HTML实体解码 -> URL解码 -> JSUnicode解码 <-----> 于是便反过来编码 JSUnicode解码 -> URL解码 -> HTML实体解码假设要编码的内容:<img/src/onerror=alert(1)> , 可以先思考一下该如何编码 , 再往下看
首先JSUnicode编码 : <img/src/onerror=\u0061\u006c\u0065\u0072\u0074(1)> , 加不加双引号包裹onerror后面的内容无所谓 , 加也好 , 不加也好 , 最好不加 , 因为双引号被过滤了的话 , 会更麻烦 , 依据前文所述 , 此处的注意点有:不能编码括号 (),还有一点很奇怪 , 弹窗提示的 1 字符也不能被编码 , 否则不会弹 , 除非加引号包裹起来 。其次HTML编码 : <img/src/onerror=\u0061u006c\u0065\u0072\u0074(1)>此处的注意点有:不能编码标签的 <>、属性、等号=最后URL编码 : %3Cimg/src/onerror%3D%5Cu0061%26%23x5C%3B%26%23x75%3B006c%5Cu0065%5Cu0072%5Cu0074%26%23x28%3B1%29%3E
推荐阅读
- 剪辑大神都在用的加字幕神器,你知道嘛
- 黑客大神告诉你:Getshell总结
- 黑客大神教你:Weblogic相关漏洞复现
- 黑客演示CVE-2020-7961_Liferay Portal反序列化漏洞
- 喝茶对熬夜的作用,枸杞苦瓜菊花茶的功效与作用
- 黑客术语介绍!web渗透小白的进阶之路
- 探秘十大神奇自然现象 自然界十大奇特现象
- 2019年十大web黑客技术榜单
- 现代黑客使用的10种常用技术
- 熬夜的危害