Projectworlds在线录取系统1.0 SQL注入漏洞利用分析

本文详细分析了Projectworlds在线录取系统1.0版本存在的SQL注入漏洞,包含完整的C语言利用代码,涉及多种SQL注入技术,包括联合查询、布尔盲注和时间盲注等攻击手法。

Projectworlds在线录取系统1.0 SQL注入

风险等级: 中等
本地利用: 否
远程利用: 是
CVE编号: CVE-2025-8471

漏洞概述

Projectworlds在线录取系统1.0版本存在SQL注入漏洞,攻击者可通过构造恶意SQL语句获取数据库敏感信息。该漏洞位于adminlogin.php文件的a_id参数中。

技术细节

漏洞利用代码结构

利用程序采用C语言编写,使用libcurl库发送HTTP请求,包含以下主要功能模块:

内存管理结构

1
2
3
4
struct Mem {
    char *buffer;
    size_t len;
};

SQL注入载荷

程序实现了多种SQL注入技术:

两阶段注入载荷

1
2
3
4
5
6
const char *twoStageInjection[] = {
    "INSERT INTO stages (id,code) VALUES (3, 'UNION SELECT NULL --');",
    "SELECT SLEEP(2);",
    "SELECT code FROM stages WHERE id = 3;",
    NULL
};

深度注入载荷: 包含22种不同的SQL注入变体,如:

  • '/**/OR/**/1=1--
  • '/**/UNION/**/SELECT/**/NULL,NULL--
  • '/**/AND/**/SUBSTRING(@@version,1,1)='5'--

SQL错误关键词检测

程序检测响应中包含的SQL错误关键词,如:

  • “syntax error”
  • “mysql_fetch”
  • “unclosed quotation mark”
  • “database error”

主要功能函数

  1. payloadInject函数:执行SQL注入攻击,发送编码后的恶意载荷
  2. simpleRequest函数:发送正常请求获取基准响应长度
  3. value函数:比较正常响应与注入响应的长度差异
  4. logFile函数:记录攻击结果到日志文件

攻击流程

  1. 发送正常请求获取基准响应长度
  2. 遍历所有SQL注入技术载荷
  3. 对每个载荷进行URL编码
  4. 发送恶意请求并分析响应
  5. 检测响应中的SQL错误关键词
  6. 记录成功的注入尝试

技术特点

  • 支持Cookie认证
  • 详细的Verbose模式输出
  • 自动重定向跟随
  • SSL证书验证绕过
  • 自定义HTTP头部
  • 响应长度比较分析

防御建议

  • 对用户输入进行严格的参数化查询
  • 实施输入验证和过滤
  • 使用预编译语句
  • 限制数据库用户权限
  • 部署Web应用防火墙

该漏洞利用代码展示了SQL注入攻击的完整流程,为安全研究人员提供了分析此类漏洞的实用工具。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计