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注入详细讲解概括—宽字节注入的更多相关文章

  1. Sql 注入详解:宽字节注入+二次注入

    sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...

  2. SQL注入--宽字节注入

    PHP测试代码: <?php // 面向对象写法 $id=addslashes($_GET[‘id’]); //获取id并转义预定义字符 // /$id=$_GET[‘id’]; $mysqli ...

  3. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 5.全局防护Bypass之宽字节注入

    0x01 背景 首先我们了解下宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.具体原 ...

  4. SQL宽字节注入

    0x00 概述 - 什么是宽字节注入? 宽字节注入就是因为gbk编码方式需要两个ascii码组合来解码,所以形象的叫做宽字节,这个作为了解即可 -宽字节注入的条件 1) 数据库查询设置为GBK编码 2 ...

  5. SQL注入:宽字节注入

    了解GBK编码 尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的 ...

  6. CTF—WEB—sql注入之宽字节注入

     宽字节注入 宽字节注入是利用mysql的一个特性,mysql在使用GBK编码(GBK就是常说的宽字节之一,实际上只有两字节)的时候,会认为两个字符是一个汉字(前一个ascii码要大于128,才到汉字 ...

  7. GBK宽字节注入SQL

    SQL注入:宽字节注入(GBK双字节绕过) 2015-06-09lyiang 宽字节注入的作用是非常大的,实际上在代码层的防御一般不外乎两种,一是反斜杠转义,而就是replace替换成空字节,之前的替 ...

  8. 掌控安全学院SQL注入靶场宽字节注入

    在php中,magic_quotes_gpc这个函数为on时,就开启了转义功能,另外addslashes和mysql_real_escape_string也可以实现转义功能.可转移的的内容包括:单双引 ...

  9. SQL注入篇二------利用burp盲注,post注入,http头注入,利用burpsuit找注入点,宽字节注入

    1.布尔盲注burpsuit的使用 先自己构造好注入语句,利用burpsuit抓包,设置变量,查出想要的信息. 比如----查数据库名的ascii码得到数据库构造好语句 http://123.206. ...

  10. Mysql宽字节注入(转)

    尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...

随机推荐

  1. jwt 生成的token exp 的单位是秒

    public class Test { public static void main(String[] args) throws UnsupportedEncodingException { Dat ...

  2. Delphi中的注释,仅此一篇

    在Pascal中,注释括在大括号中或带星号的圆括号中.Delphi 也认可C++ 风格的注释,即把注释放在双斜线后.例如: {this is a comment} (* this is another ...

  3. Android项目结构和文件间关联

    版本选择 Android 开发 SDK一般选择用最新的SDK版本, 这是Google官方建议的, App能运行的Android版本不是由SDK决定的, 是由每一个项目的minSDK决定的. SDK都是 ...

  4. 《深入理解Java虚拟机》(二) GC 垃圾回收机制

    @ 目录 一.概述 二.判断对象是否需要被回收方式 1.引用计数法: 2.可达性分析法: 三.垃圾收集算法 1.分代收集理论基础 2.标记-清除算法 3.复制-收集算法 4.标记-压缩(整理)算法 5 ...

  5. Array.forEach() 与 Array.map()这些方法的第三个可选参数 array 的作用

    说明 let thisArray = [] thisArray.forEach((item, index, array)=>{ //为什么要有array,而不是直接用thisArray? }) ...

  6. http.Handler接口

    // 示例 // net/http package http type Handler interface{ ServeHTTP(w ResponseWriter, r *Request) } fun ...

  7. 使用paramiko模块远程连接遇到paramiko.ssh_exception.NoValidConnectionsError的解决办法

    连接时报错paramiko.ssh_exception.NoValidConnectionsError, 解决办法 首先在ubuntu终端上输入:cat /etc/ssh/ssh_config,查看端 ...

  8. ASP.NET Core 微信支付(一)【统一下单 APIV3】

    官方参考资料 签名:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml 签名生成:https://wechatp ...

  9. SpringMvc原理概述

    目录 MVC整体架构和流程 SpringMVC 框架组件概述 SpringMVC 配置详解 springmvc.xml MVC整体架构和流程 用户发送请求至前端控制器 DispatcherServle ...

  10. 【Azure App Service】误删除App Service资源,怎么办?

    问题描述 操作不当,误删除了App Service的资源,怎么办? 问题解答 根据Azure 官方文档,可以使用 Powershell 命令恢复到原始 App Service 应用名称. 操作步骤 第 ...