[ACTF2020 新生赛]BackupFile学习笔记

正文

一、.bak备份文件泄露

访问题目主页,页面只显示一句话:

复制代码
Try to find out source file!

这提示我们要去找源代码文件。常见的备份文件名后缀有:

后缀 示例 说明
.bak index.php.bak 最常见的备份文件
~ index.php~ vim 编辑器的临时文件
.swp index.php.swp vim 交换文件
.swo index.php.swo vim 交换文件
.save index.php.save 保存的备份
.old index.php.old 旧版本备份

直接尝试最常见的备份文件名 index.php.bak:

bash 复制代码
curl "http://目标地址/index.php.bak"

成功下载到源码,内容如下:

php 复制代码
<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}

这段代码的逻辑是:

    1. 检查 $_GET['key'] 是否存在
    1. 用 is_numeric() 检查 $key 是否为数字------如果不是,输出 "Just num!" 并退出
    1. 用 intval($key) 把 $key 转为整数
    1. 用 ==(松散比较 )判断 $key 是否等于 $str
    1. 如果相等,输出 $flag

关键在 == 与 === 的区别。

二、PHP 中的 ==(松散比较) vs ===(严格比较)

比较方式 说明 示例
== 只比较值,不比较类型,会自动类型转换 123 == "123abc" → true
=== 同时比较值和类型,不会自动转换 123 === "123abc" → false

为什么 123 == "123ffwsfwefwf24r..." 是 true?

当 PHP 用 == 比较一个整数和一个字符串时,PHP 会尝试把字符串转换成整数 ,转换规则是:

从字符串开头取连续的数字字符,直到遇到第一个非数字字符为止

所以 "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3" 转换成整数就是:

"123" → 遇到 f(非数字)→ 停止 → 得到 123

因此 123 == 123 → true ✅

三、构造请求,获取flag

直接给 key 参数传值 123:

bash 复制代码
curl "http://目标地址/?key=123"

返回 Flag。

相关推荐
Vitaliy Kostrov(柯维远)1 小时前
客户端如何检查直播流:从流内标记到停止播放
android·运维·服务器·驱动开发·网络安全·系统架构·cdn
笨鸟先飞的橘猫1 小时前
skynet热更新实现问题与排错记录
学习·lua·skynet
andrsted2 小时前
练题簿在线免费刷题:将资料、Word 和 PDF导入小程序练习
学习·微信小程序·小程序·pdf·word·学习方法
新手小新2 小时前
通信工程师学习笔记5-通信系统
笔记·学习
我命由我123452 小时前
刚性防水与柔性防水
学习·职场和发展·产品运营·求职招聘·职场发展·学习方法·产品
dtq04242 小时前
C++3 - 分支语句if和string变量
开发语言·c++·学习
恋猫de小郭2 小时前
Dart 3.15 新特性:this 终于支持类型提升了
android·前端·flutter
承渊政道2 小时前
Linux网络学习【深入理解应用层HTTP协议、Cookie与Session机制及HTTPS协议原理】
linux·网络·学习·http·cookie·session
鸽芷咕2 小时前
把 SQL 编辑器用顺:KSQL Developer 从补全到事务的实战笔记
笔记·sql·编辑器
LuminousCPP2 小时前
数据库学习笔记(二):MySQL 基础操作入门|在 CentOS Stream 10 上连接、建库与建表
数据库·经验分享·笔记·学习·mysql·centos