文章目录

  • 一.sql_宽字节注入概念
  • 二.sql_宽字节注入源码分析
  • 三.sql_宽字节注入演示
  • 四.sql_宽字节注入总结

一.sql_宽字节注入概念

1.了解宽字节注入前,必须先了解字符集编码:点击这里

2.gbk占用两个字节,ascll占用一个字节,php编码为gbk,
函数执行添加的是ascll编码,
mysql默认字符集是gbk等宽字节字符集

%DF’ :会被PHP当中的addslashes函数转意%DF\’,"\" 既是url中的"%5C", 也就会被转成"%DF%5C%27",如果网站的字符集是GBK,mysql也是gbk,就认为%DF%5C%27是一个宽字节,也就是"縗"

我们理清一下思路

<1>.既然被addslashes函数转意,多了一个,所以我们就要想办法去掉他,或者让他无法转义’
.<2>mysql使用gbk编码时,两个字符是一个汉字(也就是一个汉字占2个字节)

<3>.当我们使用%DF’ 时,就变为了%DF%5C%27,而%DF%5C,刚好是两个字符,这两个字符合起来也就变成了中文"縗",此时我们发现我们就逃出了\ ,所以我们就可以进行探测了

3.最常用的宽字节注入利用%df,只要ascii码大于128就可以了,比如ASCII码为129(十进制)转化为十六进制,
gbk首字母对应0x81-0xFE ,尾部对应0x40-0xFE(除了0x7F)
所以只要在这个范围都可以,比如0xbf 一样可以,也就是%bf’

二.sql_宽字节注入源码分析

1.介绍两个函数
这里是借鉴大佬的总结

addslashes()函数,这个函数在遇到意前,添加反斜杠\,
预定义:单引号’ 、双引号"、反斜杠\、和空值,这个函数有一个特点,虽然加\转义,但是\并不会插入数据库中, 这个函数的功能和魔术引号完全相同,当打开了魔术引号时,不应该使用这个函数。

mysql_real_escape_string()函数,这个函数用来转义sql语句中的特殊字符x00 ,\n,\r,,等

魔术引号:当打开时,所有的单引号’、双引号"、反斜杠\ 和 NULL 字符都会被自动加上一个反斜线来进行转义,这个和 addslashes()函数的作用完全相同。所以,如果魔术引号打开了,就不要使用addslashes()函数了。一共有三个魔术引号指令。

magic_quotes_gpc 影响到 HTTP 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。

参见 get_magic_quotes_gpc()。 magic_quotes_runtime 如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。

参见 set_magic_quotes_runtime() get_magic_quotes_runtime()。 magic_quotes_sybase 如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ‘’。而双引号、反斜线 和 NULL 字符将不会进行转义。 如何取得其值参见 ini_get()

2.看看 less-33 源码
1.使用了addslashes函数过滤
2.使用了gbk编码
3.传入sql语句

3.看看less-32源码
可以看到转义了固定字符

问题来了,当程序员使用了gbk编码时,并且过滤不全面时,是很有可能被绕过的,所以最好使用预编译来防御,
好,既然我们看了源码,我们往下测试less-33,less-32

三.sql_宽字节注入演示

打开less-33
输入?id=1’
看看语句,发现和我们学的概念一模一样
因为addslashes函数,而多了个\


想办法去掉他,
使用%df’
在url中就变为了%DF%5C%27
所以两个字节算一个汉字,所以就变成了 縗’
就绕过了
就报错了
所以应该存在宽字节注入


我们使用–+闭合
返回正常
因此,更加证明存在宽字节注入


使用order by 推测字段,3时返回正常,所以存在3个字段

使用union select 联合查询语句,爆出存在注入的字段


加入database()
可以看到数据库名就出来了
接下就可以继续探测了,具体 就不写了

我们打开less-32
使用其他gbk编码范围的探测
一样报错
说明可能存在宽字节注入



–+闭合
正常
再次证明存在
接着就可以使用其他sql语句探测了


四.sql_宽字节注入总结

1.当发现宽字节注入时可以使用sqlmap探测在参数后面加一个%df就可以。
2.宽字节注入的防御,应该使用预编译方法,否则,很有可能被绕过

sql注入_1-8_宽字节注入相关推荐

  1. mysql宽字节注入_转宽字节注入详解

    在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等, 还有一种情况是magic_quote_gpc,不过高 ...

  2. mysql注入转义绕过_SQL注入防御绕过——宽字节注入

    01 背景知识 字符集 在了解宽字节注入之前,我们先来看一看字符集是什么.字符集也叫字符编码,是一种将符号转换为二进制数的映射关系. 几种常见的字符集: ASCII编码:单字节编码 latin1编码: ...

  3. mysql sql宽字节注入_sql注入之(宽字节注入篇)

    注入原理 在magic_quotes_gpc=On的情况下,提交的参数中如果带有单引号',就会被自动转义\',使很多注入攻击无效, GBK双字节编码:一个汉字用两个字节表示,首字节对应0×81-0xF ...

  4. SQL注入 | 宽字节注入2

    SQL注入 | 宽字节注入2 1.宽字节注入基础 最常使用的宽字节注入是利用%df,其实我们只要第一个ASCII码大于128就可以了,比如ASCII码为129的就可以,但是我们怎么将他转换为URL编码 ...

  5. mysql sql宽字节注入_sql注入之宽字节注入

    宽字节注入是因为数据库使用了GBK编码,不过现在大都使用unicode国际编码,大多数网站都使用了utf-8的编码 不过既然是sql注入的一部分,也搭建环境  做做实验 实验环境: wamp集成包 实 ...

  6. sql注入--宽字节注入

    sql注入–宽字节注入 靶场:sqli-labs-master 下载链接:靶场下载链接 第32关 php源码 <?php //including the Mysql connect parame ...

  7. SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用

    Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...

  8. SQL注入教程——(四)宽字节注入

    前言 在mysql中,用于转义(即在字符串中的符号前加上"\")的函数有addslashes,mysql_real_escape_string,mysql_escape_strin ...

  9. ctf php sql注入,【CTF-Web Learning 1】0x01 SQL注入之宽字节注入

    0x01 前言 准备系统梳理和总结提高这一年所学的关于Web方面东西,如有问题欢迎指点. 在计算机中,字符的表示与存储都离不开编码.例如ASCII,utf-8,gbk2312等.通常字符的表示都只需1 ...

最新文章

  1. 情人节到了!这枝18星「黑玫瑰」只送给你
  2. eclipse:快捷键(补充。。。)
  3. Java数据结构与算法(25) - ch11哈希(双重哈希)
  4. 同事查询多行_从零学会SQL-简单查询
  5. 柴油发电机组常见故障及处理方法
  6. python123第三章作业答案_swift playground类似的游戏
  7. linux gst qt,【ARM-Linux开发】Gstreamer+QT+摄像头 编程总结
  8. python命名空间特性_PHP关键特性之命名空间实例
  9. 知识付费阅读小程序源码,前端+后台+代理+分销
  10. 用c语言递归函数实现焚天塔的过程,梵天塔问题.PPT
  11. 对linux的CFS调度算法的理解
  12. 代码实现:输入某年某月某日,判断这一天是这一年的第几天?
  13. 易语言中动态地址的理解
  14. POJ--3984--迷宫问题
  15. 比Spark更适合工业互联网的数据库——热门时序数据库介绍与核心文档汇总【施工中,欢迎留言加入】
  16. php 写聊天室源码,php写的简易聊天室代码
  17. k8s 1.25学习8 - 使用Ratel工具部署应用
  18. 使用NetMHCpan进行肿瘤新抗原预测分析
  19. 水上运动装备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 【C语言】-关于strlen的介绍以及三种模拟实现的方法

热门文章

  1. Python编程专属骚技巧8
  2. 孙悟空为什么被封为斗战胜佛
  3. io流文本文档的快速读取
  4. llinux的shell脚本编程详解
  5. Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)
  6. [老老实实学WCF] 第八篇 实例化
  7. sql2012包含数据库,快速生成用户tsql脚本
  8. HTML转PDF(C#---itextsharp)(转自别人的文章)
  9. Android source开发环境搭建
  10. JSON的應用(Javascript Object Nonation)