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. 史上最大电池!小米智能家庭屏Pro 8图赏

    今天小米智能家庭屏 Pro 8正式开售,集智能家居中控,智能网关以及娱乐教育三大功能为一体,首发749元. 它是一款全新的智能生态产品中控屏,配备了7500mAh大容量电池以及通用性更好的USB Ty ...

  2. 【算法】【回溯】N皇后问题【力扣-51】超详细的注释和解释手撕N皇后

    [算法][回溯]N皇后问题[力扣-51]超详细的注释和解释手撕N皇后 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要的动力 看完之后别忘记关注我 ...

  3. 一文搞懂 Vue3 defineModel 双向绑定:告别繁琐代码!

    前言 随着vue3.4版本的发布,defineModel也正式转正了.它可以简化父子组件之间的双向绑定,是目前官方推荐的双向绑定实现方式. vue3.4以前如何实现双向绑定 大家应该都知道v-mode ...

  4. Oracle私网mtu滚动修改实施方案

    之前测试遇到过mtu修改不能滚动的情况,目前在自己测试环境重新反复验证发现正常是可以滚动的,下面梳理下整个实施方案: 环境:RHEL6 + Oracle 11.2.0.4 RAC(2 nodes) / ...

  5. 【译】宣布推出适用于 .NET 的 Azure Migrate 应用程序和代码评估工具

    原文 | Olia Gavrysh 翻译 | 郑子铭 我们很高兴地宣布发布一款新工具,可以帮助您将本地 .NET 应用程序迁移到 Azure. 适用于 .NET 的 Azure Migrate 应用程 ...

  6. JS leetcode 杨辉三角 超详细题解分析

    壹 ❀ 引 刷leetcode的第四天,原题出处为杨辉三角,题目描述如下: 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. ...

  7. NC15128 老子的全排列呢

    题目链接 题目 题目描述 老李见和尚赢了自己的酒,但是自己还舍不得,所以就耍起了赖皮,对和尚说,光武不行,再来点文的,你给我说出来1-8的全排序,我就让你喝,这次绝不耍你,你能帮帮和尚么? 输入描述 ...

  8. 优雅地使用pt-archiver进行数据归档(转)

    一.引言 最近由于业务需求,需要将公有云RDS(业务库)的大表数据归档至私有云MySQL(历史库),以缩减公有云RDS的体积和成本. 那么问题来了,数据归档的方式有n种,选择哪种呢?经过一番折腾,发现 ...

  9. junit运行Parameterized参擞化测试

    Parameterized (参数化)的测试运行器允许你使用不同的参数多次运行同一个侧试. 运行此测试的必备条件: 1.必须使用@RunWith(Parameterized.class) 2.必须声明 ...

  10. vue+antv g6+element-ui完整流程图

    最近一直在研究流程图相关的技术,一次在逛GitHub时发现了一个技术栈为vue+g6+element-ui的项目,基础功能完好,如node与edge的托拉拽,主界面如下: