sql注入扫描需精准构造get请求:用urlparse解析url、urlencode编码payload(如%27、--%20),仅修改目标参数值;避免字符串拼接;优先检测状态码变化与错误关键词,而非响应长度;时间盲注须在同一会话测基准耗时,用sleep(5)等数据库特有函数并三次验证超时。

直接用 requests 发请求 + 比对响应差异,就能实现基础 SQL 注入扫描;但真正可用的脚本必须处理参数位置、响应噪声、数据库类型适配和超时控制——否则扫出一堆误报或漏报。
怎么构造带 payload 的 GET 请求
核心是把 payload 插入 URL 的正确位置,不能硬拼在末尾。比如原始 URL 是 http://test.com/search?q=apple,你要测试的是 q 参数,就得生成 http://test.com/search?q=apple%27%20AND%201=1--,而不是 http://test.com/search?q=apple%27%20AND%201=1-- 后再加个问号乱接。
- 用
urllib.parse.urlparse和urlencode解析并重建查询参数,确保只改目标键值 - 单引号、空格、注释符必须 URL 编码:
%27、%20、--要写成--%20 - 别用字符串拼接构造 URL,否则遇到含
&或=的原始值会崩解析 - GET 请求默认走
requests.get(params=...),比手动拼 URL 更安全
为什么用响应长度比对容易误判
很多 Web 应用返回 404 页面长度固定,或前端 JS 动态渲染导致正常/错误响应长度一致;单纯比 len(response.text) 基本不可靠。
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
- 优先检查状态码变化:如
200→500或400是强信号 - 提取关键 HTML 片段,比如用
re.search(r"SQL|mysql|syntax", response.text, re.I)找错误关键词 - 对布尔盲注,要发两组 payload:
' AND 1=1--和' AND 1=2--,再比响应时间或内容相似度(如用difflib.SequenceMatcher) - 加随机 User-Agent 和 Referer 头,避免被 WAF 当爬虫拦截后统一返回 403 导致长度恒定
时间盲注怎么测才不漏掉
时间盲注不是“看延时”,而是“看可控延时”——你得确认是数据库执行了 SLEEP(5) 这类函数,而不是网络抖动或后端排队。
- 基准线必须在同一会话里测:先发一次
' OR SLEEP(0)--得到 baseline 耗时,再发' OR SLEEP(5)-- - 用
time.time()记录真实耗时,别依赖response.elapsed.total_seconds()(它不包含 DNS 解析和 TCP 建连) - MySQL 用
SLEEP(5),PostgreSQL 用pg_sleep(5),SQL Server 用WAITFOR DELAY '00:00:05'—— 不匹配就永远不延时 - 至少连续三次超过阈值(比如 >4.8s)才算数,单次超时大概率是网络抖动
哪些地方最容易写错导致脚本失效
多数人卡在细节:URL 编码没做全、没设 timeout、忽略重定向、没处理 cookie 会话,结果扫半天全是 302 或连接超时。
-
requests.get(..., timeout=(3, 7))必须设 (connect, read) 两个超时,否则大文件响应卡死进程 - 开启
allow_redirects=False,防止 302 跳转掩盖真实响应内容 - 若目标需登录,得先用
session.post()登录,再复用session发测试请求,否则每次都是未授权状态 - 别在循环里反复创建
requests.Session(),DNS 缓存和连接复用全丢掉了
真正难的不是发包,是区分“数据库真执行了 payload”和“WAF 拦截了但返回了伪装页面”。多观察响应头里的 X-Powered-By、Server,配合指纹识别模块判断后端数据库类型,才能选对 payload —— 否则 MySQL 的 SLEEP() 在 PostgreSQL 上永远不生效。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










