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 ...
随机推荐
- 制作视频教程,用Camtasia你也可以
一直以来,每当我在电脑使用过程中有不会的地方,往往我就会通过百度或者b站寻找教程,尤其是视频教程来学习,这样我往往就可以快速的学会相应的操作.当朋友在qq或者微信问我们一些操作时,我们却不能向他们提供 ...
- 如何使用ABBYY FineReader 的用户模式?
在运用ABBYY FineReader 15(Windows系统)进行文档识别时,用户可能会遇到识别的文档包含一些特殊字符或者其他软件无法识别的字体等情况,容易造成识别出现乱码的结果.在这种情况下,用 ...
- linux配置tomcat项目包
安装配置tomcat 操作系统: centos 7.1 使用模式:命令模式 使用工具:xshell5 .xftp5 注意之前有配置过tomcat需要进行以下4个步骤 1.关闭网管服务 输入命令: 进 ...
- Mac 安装Homebrew慢的问题解决
一开始安装,在官网上的命令: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma ...
- web端项目如何测试
1.是否支持各种网络 2.网络如果演示能否正常加载 3.加载时断网还能加载出来么 4.浏览时断网页面是否保持 5.是否兼容各种不同的浏览器 6.不同的浏览器加载出的页面是否一致 7.页面效果如何 8. ...
- 17_Android网络通信
1. Android异步任务处理 在程序开启后,就会有一个主线程,负责与用户交互.如果在主线程中执行了耗时操作,那么界面就会停止响应,所以要将耗时操作转移到别的线程中. AsyncTask的用法,包括 ...
- docker centos容器无法yum
问题 dockerfile yum -y install vim的时候一直未响应 但是在本地虚拟机centos7上运行则没问题 https://blog.csdn.net/jimiao_xxx ...
- CSP-2020 退役记
CSP-2020 游记 第2次参加CSP-- Day -5~-7 每天笔试+机试 Day -8~-9 在家放松(写作业) Day 0 鸡鸭月考 Day 1 9:30以前 愉快的在别人月考的时候离开鸡鸭 ...
- sitespeedio前端性能测试工具介绍
很久没有写博客了,今天给大家介绍一款比较好用的前端性能测试工具. sitespeedio简介: sitespeed.io是Jonathan Lee发布的一款可监视和衡量网站前端性能的开源工具. 1.开 ...
- 第15.32节 PyQt(Python+Qt)入门学习:containers容器类部件QToolBox工具箱介绍及使用案例
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...