Web常用编码以及攻击绕过笔记
一、URL编码
形式:“%”加上ASCII码(先将字符转换为两位ASCII码,再转为16进制),其中加号“+”在URL编码中和“%20”表示一样,均为空格。
当遇到非ASCII码表示的字符时,如中文,浏览器或通过编写URLEncode,根据UTF-8、GBK等编码16进制形式,进行转换。如“春”的UTF-8编码为E6 98 A5,因此其在支持UTF-8的情况下,URL编码为%E6%98%A5。值得注意的是采取不同的中文编码,会有不同的URL编码。
在URL传递到后台时,首先web容器会自动先对URL进行解析。容器解码时,会根据设置(如jsp中,会使用request.setCharacterEncoding("UTF-8")),采用UTF-8或GBK等其中一种编码进行解析。这时,程序无需自己再次解码,便可以获取参数(如使用request.getParameter(paramName))。
但是,有时从客户端提交的URL无法确定是何种编码,如果服务器选择的编码方式不匹配,则会造成中文乱码。为了解决这个问题,便出现了二次URLEncode的方法。在客户端对URL进行两次URLEncode,这样类似上文提到的%E6%98%A5则会编码为%25e6%2598%25a5,为纯ASCII码。Web容器在接到URL后,自动解析一次,因为不管容器使用何种编码进行解析,都支持ASCII码,不会出错。然后在通过编写程序对容器解析后的参数进行解码,便可正确得到参数。在这里,客户端的第一次编码,以及服务端的第二次解码,均是由程序员自己设定的,是可控的,可知的。
绕过:
有些waf并未对参数进行解码,而后面程序处理业务时会进行解码,因此可以通过二次url编码绕过。例如:
%253cscript%253ealert(1)%253c%252fscript%253e
二、Unicode编码
形式:“\u”或者是“%u”加上4位16进制Unicode码值。
Unicode编码可以在js中先被解析,再作为命令执行,而在html上下文中,unicode不会被解析,会直接作为字符串输出。
绕过:
(1)JavaScript的String.fromCharCode(numX),其中numX为Unicode值(十进制),此方法需和eval联合使用。例如:
<script>eval(String.fromCharCode(97,108,101,114,116,40,49,41))</script>
(2)<script>标签中,可以直接先将\u转换为代码,再执行,例如:
<script>\u0061\u006C\u0065\u0072\u0074(1)</script>
三、HTML编码
形式:“&#”加上十进制、16进制的ASCII码或Unicode编码。
浏览器在根据HTML对网页进行渲染时,会先对html编码进行解析,然后再进行渲染,但是该html编码需在“值”当中,比如src属性的值,可用html表示,浏览器会正确解析,但如果src本身使用html编码,则会渲染出错。
绕过:
将属性值,用html编码表示,例如:
<img src=#οnerrοr="alert(2)">
————————————————
版权声明:本文为CSDN博主「快递小哥大琦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gc_msc/article/details/76050232
Web常用编码以及攻击绕过笔记的更多相关文章
- 安全学习笔记-web安全之XSS攻击
web安全之XSS攻击 XSS 即跨站脚本攻击,是 OWASP TOP10 之一.它的全称为 Cross-site scripting,因为 CSS 这个简称已经被占用表示为前端三剑客之一的CSS,所 ...
- Web的攻击技术笔记
HTTP不具备必要的安全功能,就是一个通用的单纯协议机制,比如远程登录时会用到的SSH协议来说,SSH具备协议级别的认证及回话管理等功能,HTTP协议则没有.另外在架设SSH服务方面,任何人都可以轻易 ...
- WEB前端 [编码] 规则浅析
前言 说到前端安全问题,首先想到的无疑是XSS(Cross Site Scripting,即跨站脚本),其主要发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中出现了不被 ...
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
C#不用union,而是有更好的方式实现 用过C/C++的人都知道有个union,特别好用,似乎char数组到short,int,float等的转换无所不能,也确实是能,并且用起来十分方便.那C# ...
- 有关Web常用字体的研究?
Windows自带字体: 黑体:SimHei 宋体:SimSun 新宋体:NSimSun 仿宋:FangSong 楷体:KaiTi 仿宋GB2312:FangSongGB2312 楷体GB2312:K ...
- 阅读OReilly.Web.Scraping.with.Python.2015.6笔记---BeautifulSoup---findAll
阅读OReilly.Web.Scraping.with.Python.2015.6笔记---BeautifulSoup---findAll 1..BeautifulSoup库的使用 Beautiful ...
- 解析WEB开发编码问题
解析WEB开发编码问题 URL: http://tcking.javaeye.com/blog/726643 在进行web开发的时候经常会遇到乱码的问题,乱码一般出现在: 1.写在jsp文件中的中文变 ...
- 超级有用的各类web常用手册
以下是链接地址: 各种web常用手册
- 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级
[web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...
随机推荐
- 锐安信sslTrus与GeoTrust SSL证书的对比
当您想要为您的网站购买一款SSL证书时,是不是既想要价格便宜,又想要安全性能服务好的证书,最后又在品牌上犹豫不决?如何选择SSL证书?哪款SSL证书是最适合您的?本文将详细对比分析锐成信息平台上畅销品 ...
- linux ssh远程连接控制 linux(centOS) 口令、密钥连接
sshd服务提供两种安全验证的方法: 基于口令的安全验证:经过验证帐号与密码即可登陆到远程主机. 基于密钥的安全验证:需要在本地生成"密钥对"后将公钥传送至服务端,进行公共密钥的比 ...
- 探究 | 如何捕获一个Activity页面上所有的点击行为
前言 最近逛wanAndroid论坛,发现一个有趣的问题:如何捕获一个Activity页面上所有的点击行为. 一起研究下吧,不想看源码的小伙伴可以直接看文末总结- 准备工作 先得罗列出页面上的一些点击 ...
- 等待多线程完成的CountDownLatch(带示例)
开始磨刀霍霍向多线程了,这期是 CountDownLatch 的一个小示例. 定义:CountDownLatch 允许一个或多个线程等待其他线程完成操作. 应用需求举例:假设有4个线程,A.B.C.D ...
- JZOJ2020年8月10日提高组T3 玩诈欺的小杉
JZOJ2020年8月10日提高组T3 玩诈欺的小杉 题目 Description 是这样的,在小杉的面前有一个N行M列的棋盘,棋盘上有\(N*M\)个有黑白棋的棋子(一面为黑,一面为白),一开始都是 ...
- 基于 MongoDB 动态字段设计的探索
一.业务需求 假设某学校课程系统,不同专业课程不同 (可以动态增删),但是需要根据专业不同显示该专业学生的各科课程的成绩,如下: 专业 姓名 高等数学 数据结构 计算机 张三 90 85 计算机 李四 ...
- 解决 Zuul 中 OAuth2 报 unauthorized 错误
问题描述 微服务中使用 OAuth2 鉴权,直接访问正常,通过 Zuul 访问报错: { "error": "unauthorized", "erro ...
- MyBatis-01:环境搭建
MyBatis-01:环境搭建 1.搭建实验数据库 CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user`; CRE ...
- ARL资产导出对接Xray扫描
使用ARL资产灯塔系统对目标进行资产整理的时候,能够对获取的结果进行导出: 导出之后为excel文件 想要将site中的URL导出为txt文件,再使用Xray高级版进行批量化扫描: https://w ...
- leetcode——(四)2020.06.08
新的一周,leetcode计划:78,79,98,102,236,124,128 (23)