一个单引号,撬开一所高校的数据库
三垣网安
2026年9月26日 12:16
湖南
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
前言
一个不起眼的搜索参数,一个单引号,就让数据库的门缝露了出来。本文完整记录从资产测绘、注入点定位、数据库指纹确认,到布尔盲注验证的全过程,含 payload、复现思路、危害分析。
1
缘起:从资产测绘开始
做 SRC 的第一步永远是找面。通过网络空间测绘平台,以学校名称配合业务关键词检索,很快锁定了一台互联网资产:IP 为 xxx.xxx.xx.xxx,开放 443/HTTPS 与 80/HTTP 端口,站点标题 MicrobialBioinformaticG...,后端应用为 PHP。
从标题判断,这是某高校一个微生物生物信息学数据库站点,对外开放检索功能。这类科研数据库往往是外包开发的「小项目」,安全投入有限,是值得重点关注的对象。
2
注入点:一个单引号就报错
name 参数用于按菌属名检索。老规矩,先在参数后面加一个单引号:
GET/TADB3/search\_tax.php?level=genus&name=Escherichia'&type= HTTP/1.1 Host: xxx.edu.cn
页面直接报错——典型的参数未过滤,SQL 语句被拼坏了
3
指纹:/phppgadmin/ 暴露的数据库类型
动手打注入之前,先确认数据库类型。前期信息搜集用 dirsearch 扫目录时,扫到一个关键路径:https://xxx.edu.cn/phppgadmin/
phpPgAdmin 是 PostgreSQL 的 Web 管理工具。打开一看,版本 5.6,服务器列表显示 PostgreSQL 运行在 5432 端口——至此确认:后端数据库是 PostgreSQL。
这一步很关键,因为 PostgreSQL 在字符串拼接、类型转换上的语法与 MySQL 差异很大,直接影响 payload 的构造方式。
4
构造 payload:布尔盲注的思路
1、先确认正常检索:
name=Escherichia 是能搜到东西的。然后构造布尔条件:
Escherichia'+and+(user+like+'r%')+or+'0
2、逻辑拆解:Escherichia' 负责闭合原查询里的字符串;and (user like 'r%') 判断当前数据库用户是否以 r 开头;or '0 兜底,保证语法闭合、页面不报错。条件为真,页面返回数据;条件为假,返回空结果——这就是布尔盲注的判定依据。
3、为了确认 user 首字母,用 Burp Intruder 对 payload 中的字母位做爆:
GET/TADB3/search\_tax.php?level=genus&name=Escherichia'+and+(user+like+'r%')+or+'0&type= HTTP/1.1 Host: xxx.edu.cn
4、当字母为 r 时,页面返回了 Escherichia coli str. K-12 substr. MG1655 的记录,其余字母均为空——证明当前数据库用户名首字母为 r,SQL 注入确实存在。
觉得有收获的请关注三垣网安
更多技术分享我们将及时推送与你,感谢支持
请为我点个赞再走
安全漏洞 #网络安全实战 #sql注入#教育src信息搜集 #漏洞挖掘
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论