当前位置: 首页 > backend >正文

BUUCTF之[ACTF2020 新生赛]BackupFile

打开环境就一句话

 找出源文件!

结合题目名字:BackupFile

先用dirsearct扫描网站文件

发现一个index.php.bak ,拼接url下载

打开发现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.if(isset($_GET['key'])) { ... }
  • 作用:检查 URL 中是否有 key 参数(例如 ?key=123)。

  • $_GET['key']:获取用户通过 GET 方法传递的 key 参数值。

  • isset():检查变量是否已设置且非 null

2. if(!is_numeric($key)) { exit("Just num!"); }

  • 作用:检查 $key 是否是数字或数字字符串(如 "123"42),如果不是,则终止脚本并输出 "Just num!"

  • is_numeric():判断变量是否为数字或数字字符串(允许 "123""0xFF""1e3" 等形式)。

    ?key=123a 会被 is_numeric() 拒绝,因为 is_numeric() 不允许字符串中包含非数字字符(除了科学计数法 "1e3" 或十六进制 "0xFF" 等特殊情况)。

示例

  • ?key=123 → 通过

  • ?key=abc → 输出 "Just num!" 并终止

3.$key = intval($key);
  • 作用:将 $key 强制转换为整数(丢弃非数字部分)。

  • intval()

    • "123" → 123

    • "123abc" → 123

    • "abc123" → 0

示例

  • ?key=123abc → $key = 123

  • ?key=abc123 → $key = 0

4. $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
  • 作用:定义一个字符串变量 $str,用于后续比较。

5.. if($key == $str) { echo $flag; }
  • 作用:如果 $key 和 $str 弱类型相等==),则输出 $flag

= = 为弱相等,即当整数和字符串类型相比较时。会先将字符串转化为整数然后再进行比较。比如a=123和b=123admin456进行= =比较时。则b只会截取前面的整数部分。即b转化成123。

也就是说key等于123就会==str

输入的key的值123,就能得到flag

http://www.xdnf.cn/news/10736.html

相关文章:

  • 【latex】易遗忘的表达
  • Vue:组件
  • 分班 - 华为OD统一考试(JavaScript 题解)
  • 【操作系统·windows快捷键指令】
  • sql注入补充——get注入
  • 322. 零钱兑换
  • Day10
  • 【C盘瘦身】给DevEco Studio中HarmonyOSEmulator(鸿蒙模拟器)换个地方,一键移动给C盘瘦身
  • 企业级开发中的 maven-mvnd 应用实践
  • 深度理解与剖析:Odoo系统邮箱配置指南
  • 给stm32cubeide编译出来的bin文件追加crc32
  • 算法训练第六天
  • 检索器组件深入学习与使用技巧 BaseRetriever 检索器基类
  • SystemVerilog—Interface在class中的使用
  • 【DSP数字信号处理】期末复习笔记(一)
  • 交换机、路由器配置
  • Jackson 数值转科学计数法问题分析与解决方案
  • 第一篇:揭示模型上下文协议(MCP):AI的通用连接器
  • MySQL日志
  • kafka幂等生产者和事务生产者区别
  • RK3568+LINUX + CODESYS带授权+实时系统,同时开自己的视觉应用
  • 【算法】分支限界
  • [MySQL初阶]MySQL(7) 表的内外连接
  • CQF预备知识:二、线性代数 -- 2.2.1 矩阵加法详解
  • UE5 2D地图曝光太亮怎么修改
  • MATLAB 安装与使用详细教程
  • 道路目标检测和分类数据集
  • MySQL问题:count(*)与count(1)有什么区别
  • Promise与Async/Await:现代JavaScript异步编程的利器
  • leetcode hot100 二叉树(二)