SQL注入详细讲解概括—宽字节注入
SQL注入详细讲解概括—宽字节注入
1、宽字节注入原理
2、宽字节注入方法
一、宽字节注入原理
What is 宽字节?
字符大小为一个字节时为窄字节
字符大小为两个及以上的字节为宽字节
英文26个字符所以1个字节就够用了,而汉字字符数太多,一个字节显然不够用
宽字节注入原理
为了防止网站被SQL注入,一些网站开发人员会做一些防护措施,其中最常见的就是对一些特殊字符进行转义
通过以前的文章,能够了解到,sql注入非常关键的一步就是让引号闭合和跳出引号,无法跳出引号 ,那么你输入的内容就永远在引号里,那么你输入的东西永远就是字符串,很显然这不符合sql注入的要求,,
So,网站开发者也想到了这一步,于是乎,做个防护补救,>>>> 转义,,对输入的敏感内容、特殊字符进行转义,,PHP里有个转义符 “\” 反斜杠
PHP的防御函数
magic_qutes_gpc(魔术引号)
magic_qutes_gpc函数在php中的作用是解析用户提交的数据,如有:post、get、cookie过来的数据增加转义符“\” 以确保这些数据不会引起程序错误
转义符的 作用:去除特殊意义,只把字符当作字符串进行理解
要理解注意的一个点,就是转义符自动的出现在输入的特殊字符前面:
输单引号>>> ' >>> 有了转义符 >>> \'
要注意转义符是 出现在前面的,,非常重要,,有助于理解后面的内容
ok,,那么 我们输入的引号被转义之后只当作了一个字符串,无法实现包裹字符串的作用了
那么怎么解决,,让转义(\)失去转义的作用,,
ok,,让转义失去作用的方法就是宽字节注入
so,,How does it lose its function?
Frist,you know,宽字节编码
宽字节编码就是 一个字符可能是好几个字节
ok,,,想一个问题,,中国的汉字,,偏旁部首,,
eg:和 由禾+口 组成,
那么,禾+口 >>> 和 这个过程的两个字组成了一个字,既没有了禾的意思也没有了口的意思 变成了和的意思
那 让转义符失去转义作用的方法 于这个汉字方法 可以说是异曲同工之妙
\ >>> 转义通过编码是 >>> %5c
那么 找到一个与 %5c 的另一半 让他们组成一个新字符不就 OK了吗
哪个字节编码能让他们组成一个新字符呢 很多 eg:%df ......
>>> %df%5c
这两个在一块就组成了一个新的字符,准确的说是一个汉字,那么我们输入的引号的特殊意义就存在,可以是包裹字符串的了
PS:只有是中文编码的数据库才可以这样
二、宽字节注入方法
GET传参的宽字节注入
so easy 在引号前加个%df 之后就进行正常的注入就行了
POST传参的宽字节注入
需要借助工具burp,抓包,改包来进行
第一步,正常写入注入语句 ,一般是在引号前写一个字符,并知道此字符对应的ascii码值,方便在包里找到输入数据 ,我比较喜欢用小写a >>>a对应的ascii码值是61
第二步,打开burp进行抓包,在Proxy一栏下的Itercept,点击Hex,找到你输入的内容,绿框里就是,找到引号前的哪个字符,我写的是a,对应的是61,,可以看到有两个61,因为在这一行中,在我输入的前面还有一个name 这里面有一个a 都是按顺序一一对应来的,我们只需要修改第二的个61即可,,双击61,,改为df ,,回车,,放数据包,,搞定


SQL注入详细讲解概括—宽字节注入的更多相关文章
- Sql 注入详解:宽字节注入+二次注入
sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...
- SQL注入--宽字节注入
PHP测试代码: <?php // 面向对象写法 $id=addslashes($_GET[‘id’]); //获取id并转义预定义字符 // /$id=$_GET[‘id’]; $mysqli ...
- 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 5.全局防护Bypass之宽字节注入
0x01 背景 首先我们了解下宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.具体原 ...
- SQL宽字节注入
0x00 概述 - 什么是宽字节注入? 宽字节注入就是因为gbk编码方式需要两个ascii码组合来解码,所以形象的叫做宽字节,这个作为了解即可 -宽字节注入的条件 1) 数据库查询设置为GBK编码 2 ...
- SQL注入:宽字节注入
了解GBK编码 尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的 ...
- CTF—WEB—sql注入之宽字节注入
宽字节注入 宽字节注入是利用mysql的一个特性,mysql在使用GBK编码(GBK就是常说的宽字节之一,实际上只有两字节)的时候,会认为两个字符是一个汉字(前一个ascii码要大于128,才到汉字 ...
- GBK宽字节注入SQL
SQL注入:宽字节注入(GBK双字节绕过) 2015-06-09lyiang 宽字节注入的作用是非常大的,实际上在代码层的防御一般不外乎两种,一是反斜杠转义,而就是replace替换成空字节,之前的替 ...
- 掌控安全学院SQL注入靶场宽字节注入
在php中,magic_quotes_gpc这个函数为on时,就开启了转义功能,另外addslashes和mysql_real_escape_string也可以实现转义功能.可转移的的内容包括:单双引 ...
- SQL注入篇二------利用burp盲注,post注入,http头注入,利用burpsuit找注入点,宽字节注入
1.布尔盲注burpsuit的使用 先自己构造好注入语句,利用burpsuit抓包,设置变量,查出想要的信息. 比如----查数据库名的ascii码得到数据库构造好语句 http://123.206. ...
- Mysql宽字节注入(转)
尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...
随机推荐
- P10009 [集训队互测 2022] 线段树 题解
题目链接:P10009 [集训队互测 2022] 线段树 神仙分块题,先给一下出题人的神仙官解: 官解链接 前面还看得懂.后面是啥?这不是 ds 题咋和 dp.轮廓线扯上关系了.看了半天,还是这个启发 ...
- VS Code 使用
Tips 总结 1. VSCode显示空格和tab符号 1.打开setting,在搜索框中输入renderControlCharacters,选中勾选框,即可显示tab 2.在搜索框中输入render ...
- JuiceFS v1.0 正式发布,首个面向生产环境的 LTS 版本
今天,JuiceFS v1.0 发布了 经过了 18 个月的持续迭代和大量生产环境的广泛验证,此版本将成为第一个被长期维护的稳定版(LTS).同时,该版本提供完整的向前兼容,所有用户可以直接升级. J ...
- Jacoco 生成单元测试覆盖率
1. 引入Jacoco插件和Maven Site插件 <plugin> <groupId>org.apache.maven.plugins</groupId> &l ...
- BZOJ3156 防御准备 题解
原题 令 \(S_{i} =\sum\limits_{j=1}^{i}j\) , \(f_{i}\) 为处理到第 \(i\) 个位置放置守卫塔的最小花费. 观察题意,容易得到在\((1 \le j \ ...
- JS leetcode 最长公共前缀 题解分析
壹 ❀ 引 今天做的又是一道让我沮丧的题,思路有,但是代码逻辑最后还是没能正确理出来,题名为最长公共前缀,题目如下: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 ...
- 云原生服务网格Istio:原理、实践、架构与源码解析
华为云原生团队600多页的Istio实战精华总结,云原生服务网格Istio:原理.实践.架构与源码解析的电子书. 图书介绍 <云原生服务网格Istio:原理.实践.架构与源码解析>分为原理 ...
- MySQL基础之DCL语句
DCL(Data Control Language)语句:数据控制语句. 用途:控制数据库.表.字段.用户的访问权限和安全级别. 常用关键字:grant.revoke等 一般用于管理数据库和用户的权限 ...
- 【Unity3D】Renderer Feature简介
1 3D 项目迁移到 URP 项目后出现的问题 3D 项目迁移至 URP 项目后,会出现很多渲染问题,如:材质显示异常.GL 渲染不显示.多 Pass 渲染异常.屏幕后处理异常等问题.下面将针对这 ...
- ORA-39087: Directory Name Is Invalid
说明 有时我们在Oracle数据库服务器执行expdp/impdp过程中会碰到这个错误:ORA-39087: Directory Name Is Invalid,意思是我们指定的directory参数 ...