sql注入_1-8_宽字节注入
文章目录
- 一.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_宽字节注入相关推荐
- mysql宽字节注入_转宽字节注入详解
在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等, 还有一种情况是magic_quote_gpc,不过高 ...
- mysql注入转义绕过_SQL注入防御绕过——宽字节注入
01 背景知识 字符集 在了解宽字节注入之前,我们先来看一看字符集是什么.字符集也叫字符编码,是一种将符号转换为二进制数的映射关系. 几种常见的字符集: ASCII编码:单字节编码 latin1编码: ...
- mysql sql宽字节注入_sql注入之(宽字节注入篇)
注入原理 在magic_quotes_gpc=On的情况下,提交的参数中如果带有单引号',就会被自动转义\',使很多注入攻击无效, GBK双字节编码:一个汉字用两个字节表示,首字节对应0×81-0xF ...
- SQL注入 | 宽字节注入2
SQL注入 | 宽字节注入2 1.宽字节注入基础 最常使用的宽字节注入是利用%df,其实我们只要第一个ASCII码大于128就可以了,比如ASCII码为129的就可以,但是我们怎么将他转换为URL编码 ...
- mysql sql宽字节注入_sql注入之宽字节注入
宽字节注入是因为数据库使用了GBK编码,不过现在大都使用unicode国际编码,大多数网站都使用了utf-8的编码 不过既然是sql注入的一部分,也搭建环境 做做实验 实验环境: wamp集成包 实 ...
- sql注入--宽字节注入
sql注入–宽字节注入 靶场:sqli-labs-master 下载链接:靶场下载链接 第32关 php源码 <?php //including the Mysql connect parame ...
- SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用
Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...
- SQL注入教程——(四)宽字节注入
前言 在mysql中,用于转义(即在字符串中的符号前加上"\")的函数有addslashes,mysql_real_escape_string,mysql_escape_strin ...
- ctf php sql注入,【CTF-Web Learning 1】0x01 SQL注入之宽字节注入
0x01 前言 准备系统梳理和总结提高这一年所学的关于Web方面东西,如有问题欢迎指点. 在计算机中,字符的表示与存储都离不开编码.例如ASCII,utf-8,gbk2312等.通常字符的表示都只需1 ...
最新文章
- 情人节到了!这枝18星「黑玫瑰」只送给你
- eclipse:快捷键(补充。。。)
- Java数据结构与算法(25) - ch11哈希(双重哈希)
- 同事查询多行_从零学会SQL-简单查询
- 柴油发电机组常见故障及处理方法
- python123第三章作业答案_swift playground类似的游戏
- linux gst qt,【ARM-Linux开发】Gstreamer+QT+摄像头 编程总结
- python命名空间特性_PHP关键特性之命名空间实例
- 知识付费阅读小程序源码,前端+后台+代理+分销
- 用c语言递归函数实现焚天塔的过程,梵天塔问题.PPT
- 对linux的CFS调度算法的理解
- 代码实现:输入某年某月某日,判断这一天是这一年的第几天?
- 易语言中动态地址的理解
- POJ--3984--迷宫问题
- 比Spark更适合工业互联网的数据库——热门时序数据库介绍与核心文档汇总【施工中,欢迎留言加入】
- php 写聊天室源码,php写的简易聊天室代码
- k8s 1.25学习8 - 使用Ratel工具部署应用
- 使用NetMHCpan进行肿瘤新抗原预测分析
- 水上运动装备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 【C语言】-关于strlen的介绍以及三种模拟实现的方法