利用mcp sqlmap 验证漏洞
利用mcp sqlmap 验证漏洞背景最近在工作中想要集成AI来帮助运营漏洞检测。之前我已经写过一个 mcp-request工具,使用MCP协议让AI帮忙发送和验证漏洞,但只能处理简单的漏洞场景。
对于SQL注入这种复杂场景,mcp-request 虽然能实现,但存在明显问题:
现有方案的局限性
AI智能程度依赖性强:AI需要足够聪明才知道怎么构造注入payload,遇到盲注等复杂场景就束手无策
效率极低:AI每次发包都要思考很久,速度贼慢,完全不适合批量检测
上下文消耗巨大:复杂的注入测试会产生大量上下文,浪费token且影响性能
解决方案:引入SQLMap重型武器经过思考,最简单有效的方法就是集成 SQLMap——这个业界最成熟的SQL注入检测工具。
写了一个小 demo 测试 : https://github.com/godzeo/mcp-sqlmap
核心优势
检测准确性极高:如果SQLMap能跑出结果,几乎可以100%确定存在注入漏洞
执行速度快:相比AI逐个思考payload,SQLMap的快速遍历机制效率高得多(并非所有场景都适合用AI)
功能完整性:不仅能检测,还能 ...
9 如果评估微调过程
9 如果评估微调过程LOSS 是什么?LOSS 是一个可微的数学函数量化模型预测与真实值的误差输出,
数值值越大表示错误越大
注意: loss 和模型微调实际效果是没必然联系的, 只是观察微调过程是否正常
微调时用它干什么?微调的核心目标就是 LOSS 变得越来越小。
作为优化目标指导参数更新方向评估训练效果决定何时停止训练
怎么变小?通过梯度下降算法调整模型参数, 基本上就是上一个文章提到的超参数的调整
场景的几个场景调整1. Loss 持续不降:训练过程中 Loss 始终保持高位,无下降趋势
• 学习率(Learning Rate)过小:參数更新幅度不足,模型难以优化• 数据无规律:数据中存在大量异常值, 数据集太差了
Loss 持续下降但不收敛:Loss 一直在下降,但收敛速度极慢,训练结束时仍未达到理想水平
• 训练轮致太小• 学习串(Learning Rate)过大:參数更新幅度过大
Loss 覆荡波动:Loss 曲线上下一直波动
• 批量大小(Batch Size) 过小:单次更起伏,无稳定下降趋势。
结合验证集的 loss 曲线再评估场景几个情况:
这个图像展示 ...
8 模型微调-关键超参数
8 模型微调-关键超参数1. 学习率学习率决定了模型在每次更新时参数调整的幅度,通常在 (0, 1) 之间
对显存无影响
影响学习速度告诉模型在训练过程中”学习”的速度有多快,平衡进步速度与稳定性
推荐数值常见的 lora 微调中, 推荐 4e-5 和 5e-5 (这个算是前人实验和总结出来的通用比较好的数值)
全参数微调 推荐5e-6
学习率过大会怎么样?
每次调整的幅度都很大, 容易把之前学会都推翻, 都是大的重头学习, 快速但不稳定
学习率过小会怎么样?
每次学习就很慢, 不会走偏, 需要长时间慢慢学习,慢速但是稳定
实际训练注意:不要担心训练速度慢,稳定性更重要, 小数据集不要使用大学习率
2. 训练轮数(Epochs)核心概念训练轮数(Epochs) 一个Epoch表示模型完整地遍历一次整个训练数据集。
关键要点轮数过少会怎么样?
欠拟合,学习不充分, 简单就是没学会东西
轮数过多会怎么样?
过拟合,只记住了学到数据集的内容, 泛化差,就像死记硬背了
推荐参数:一般3轮即可
后面根据LOSS值调整,要LOSS控制在0.5-1.5之间 比较好
loss 趋于0 基 ...
MCP 服务开发到发布
MCP 服务开发到发布环境MCP服务开发环境需要Python 3.10+
我推荐使用uv工具管理Python环境 https://docs.astral.sh/uv/
这个创建一下标准的包结构, 还是比较方便
MCP 调试工具 : https://github.com/modelcontextprotocol/inspector
MCP 服务
官方文档: https://modelcontextprotocol.io/quickstart/server
MCP 服务
MCP主要通信方式:
Stdio transport
Uses standard input/output for communication
Ideal for local processes
Streamable HTTP transport
Uses HTTP with optional Server-Sent Events for streaming
HTTP POST for client-to-server messages
stdio:通过标准输入输出流传递数据,实现简单,兼容性强, ...
7 微调 黑盒蒸馏 突破伦理限制
7 微调 黑盒蒸馏 突破伦理限制简介SecGPT-Distill 是我自己做的一个实验模型,
开源地址: GitHub - godzeo/SecGPT-distill-boundless
主要功能是进行模型微调和知识蒸馏而来
这次是运用微调技术,来突破现有模型在处理安全相关问题时的各种限制和约束
不回答原理大部分模型在面对敏感安全问题时选择不予回答的现象,这种行为可以从我们先前在训练小型模型过程中获得的宝贵经验中得到解释:
在模型的预训练阶段,由于训练数据集中缺乏相关的安全领域内容,导致模型对这类问题缺乏基本的理解和认知能力,因此无法提供有效的回答
在后续的 SFT(监督微调)阶段,模型通过接受大量经过筛选的安全数据集进行训练,逐渐形成了对特定类型问题的自动识别和拒绝机制。这一点在我们使用的 匠数大模型SFT数据集 中表现得尤为明显,该数据集的设计就是为了培养模型的这种保护机制
并使用本公司的内容审核产品对其内容进行了严格的审核
突破的原理:微调我们的微调方案:
第一步是收集和生成一系列当前模型会选择拒绝回答的典型数据样本,这些样本将作为我们的训练基础。
模型的行 ...
6 RAG知识库 和 微调 如何选择?
6 RAG知识库 和 微调 如何选择?因为其实很多时候, 微调和 RAG 都有达同样的效果, 那我们如果区分呢?
这个其实很好理解,我可以举一个非常好理解的例子:
前提场景: 参加一场专业的数学考试, 数学能力很强的大学生 (基座GPT模型)
RAG: 就是给这个大学生带一本相关的数学书,里面有各种习题和公式, 开卷考试, 如果学生悟性够高基础好,那么题也是可以做出来的
微调: 我给这个大学生,进行考前突击, 就给他讲那些他没学过的专业的数学知识, 那么这个学生学会后去考试, 闭卷开始, 也可以做出来
结论: 其实我们得分场景去考虑用哪种方法, 找到适合的方法
1. 快速决策框架直接给一些结论 , 在选择是否微调时,有实际场景强需求的时候, 我们可以大概率直接选择
动态数据 → RAG 知识库
因为微调每次都要训练, 总不能每次微调一遍吧 ,成本太高了
低延迟 → 微调
知识库每次都要去检索一遍数据, 上下文也长,所以整体还是比较慢的
需要解释为什么? (比如需要参考文章) →RAG知识库
这个就很明显了, 还是RAG知识库比较好
还要需要原来模型比较强的 ...
5 什么情况下需要微调
5 什么情况下需要微调这个问题其实很重要,因为现代大模型训练出来已经非常强大,可能真的不需要微调。
我们可以通过 RAG 或提示词工程来实现目标。
需要微调的场景与替代方案分析微调(Fine-tuning)确实不是所有场景都必需的,特别是考虑到现代大型语言模型(LLMs)的强大基础能力
现代大型语言模型(LLMs)就像一位完成全面学习的大学生。然而,并非所有应用场景都需要对这位”大学生”进行额外的微调训练。让我们通过几个通俗易懂的例子来理解何时需要微调,何时不需要。
场景分析场景一:标准任务 - 无需微调,只需优化提示词当要求模型完成它已具备能力的标准任务时,如果你想让他写一篇”上班下班打卡流程规范” , 那么我理解这种任务,大学生就是会做的, 为啥做不好?问题通常不在于模型能力不足,而在于指令不够明确。
解决方案:优化提示词(Prompt Engineering)
提供明确的文档结构和要求
说明写作风格、格式和重点内容
给出示例或模板参考
这类情况无需微调,因为模型已经理解这种任务的基本逻辑,只需要写好提示词就好了.
场景二:知识欠缺 - 无需微调,使用RAG或上下文补充当模型需 ...
从头训练小模型- 3 传统RLHF与DPO的区别
从头训练小模型: 3 传统RLHF与DPO的区别这个步骤我其实是忽略了。如果我的目标是建立一个安全领域的模型,我个人理解这步骤并不太必要。关于人类偏好对齐:在前面的训练步骤中,模型已经具备了基本的对话能力。
此时模型还不知道什么是好的回答,什么是不好的回答。我们希望它能更符合人类偏好,降低产生让人不满意答案的可能性。
简单来说,就是教会模型使用你们公司的安全符合你们自己的表达方式,只知道这么说话更好
主要目的:实现人类偏好对齐
使AI行为符合人类期望:
产生更有帮助的回答
减少有害、错误或误导性内容 (就比如我们问的是安全相关的问题, 他们要选择不回答)
遵循指令并理解微妙的人类意图
体现人类价值观和道德准则
所以我的训练步骤中, 暂时省略这个流程
传统RLHF与DPO的区别传统的RLHF (Reinforcement Learning from Human Feedback) 和DPO (Direct Preference Optimization) 都是用于优化语言模型以对齐人类偏好的方法,但它们在实现方式上有显著差异:
传统RLHF方法
三阶段流程:
第一阶段:监督微调 ( ...
从头训练小模型- 4 lora 微调
从头训练小模型: 4 lora 微调1. LoRA (Low-Rank Adaptation)LoRA是一种高效的参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)方法,原理是通过低秩分解的方式对预训练模型进行微调。
相比于全参数微调(Full Fine-Tuning),LoRA 只需要更新少量的参数。 LoRA 的核心思想是:在模型的权重矩阵中引入低秩分解,仅对低秩部分进行更新,而保持原始预训练权重不变。
其实这个也是我最开始研究的一块的东西, 这个是我们现实应用场景最广的的一种情况, 因为我们大部分的都不会去自己完整训练一个模型, 大部分都是微调, 而且自己训练的成本多高, 并且自己训练的效果很差, 数据集处理也非常麻烦 (我自己训练这个小模型,虽然是很小,但是在训练的轮数和数据集不优化的情况下,回答都是不太好的,但我确实也是主要是学成分高)
为啥要使用微调:(优势):
领域知识补充:比如医学或安全领域的知识欠缺,可以在原有模型基础上添加相关领域知识,从而提升模型性能。
防止灾难性遗忘:这是一个专业术语,简单来说就是希望在学习新的领域知识 ...
从头训练小模型- 2 监督微调SFT
从头训练小模型: 2 监督微调SFT简介从头训练小模型是我个人对大语言模型(LLM)学习中的重要部分。
通过对一个小规模模型的最小化复现实践,我不仅能够深入理解模型训练的基本流程,还可以系统地学习其中的核心原理和实际运行机制。这种实践性的学习方法让我能够直观地感受模型训练的每个环节,同时掌握相关的技术细节和实现方式。
目前的工作中,确实存在某些任务是有这种小模型的需求, 也在学习过程中理解运作逻辑, 力求用最小的资源消耗情况下,实现某些子任务的最小模型实现.
ALL in AI
代码已经上传 https://github.com/godzeo/miniGPT
SFT 有监督微调(Supervised Fine-Tuning):为什么要这一步?
因为经过预训练之后,LLM已掌握了大量知识,但此时它只是一个无情的词语接龙机,还不能与人对话。
我们要它就不再盲目接龙,而是能够理解这是一段完整的对话。
那么我们就要这个指令微调的过程,让有了基础知识的学生, 会做题, 而不是一直背课文,成语结论, 需要他会根据学会根据提问, 回答问题做题. 理解什么是一问一答题.
训练命令:
12345678t ...