[ACTF2020 新生赛]BackupFile

打开题目就一句话:尝试找到源文件
和上一题一样,用dirsearch扫描网站找到了一下内容

flag.php,0B,虚假flag
瞅一眼index.php.bak是啥

下载了一个文件,把bak后缀删掉,打开了index.php源码

is_numeric(): 检查变量是否为数值
is_numeric()函数用于检查一个变量是否为数值,并返回一个布尔值,即true(1)或者false(空)。
is_numeric()函数可以检测一个变量是否为数值。它接受一个参数,即要检查的变量,可以是一个整数、浮点数、甚至是一个数值字符串。如果变量是数值,则返回true;否则,返回false。

intval(): 函数用于获取变量的整数值。
intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1。
最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。
字符串有可能返回 0,虽然取决于字符串最左侧的字符。


==
当数字与字符串作比较时,系统会先将字符串转化为数字,再与数字进行比较。
数字和字符串进行比较时,当这个字符串是一个无法转换为数字的字符串,它就会被强制转化为数字,结果总是为0
依据上述理论,会出现四种情况
1.数字+字符(字符串)

2.字符(字符串)+数字

3.数字+字符(字符串)+数字

4.字符(字符串)+数字+字符(字符串)

由以上实践可得出,$a与$b比较,$b中含有数字和字符,截取到第一次出现字符,$b中第一次出现字符前的数字与$a比较。
<?php
include_once "flag.php";if(isset($_GET['key'])) {//从用户输入获取key$key = $_GET['key'];//将获取的用户输入付给变量$keyif(!is_numeric($key)) {//判断$key是否是数值exit("Just num!");//不是数值输出Just num!}$key = intval($key);//获取$key的整数值,再赋值给$key$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";if($key == $str) {//判断$key是否与$str相等echo $flag;//相等输出flag}
}
else {echo "Try to find out source file!";用户没有输入,输出Try to find out source file!
}
//输入错误数值的情况未说明
所以,我们让key=123就可以输出flag

再验证一下刚刚代码分析的对不对

相关文章:
[ACTF2020 新生赛]BackupFile
打开题目就一句话:尝试找到源文件 和上一题一样,用dirsearch扫描网站找到了一下内容 flag.php,0B,虚假flag 瞅一眼index.php.bak是啥 下载了一个文件,把bak后缀删掉,打开了index.php源码 is_numeric()&am…...
WPF面试题:WPF绘图技术介绍
作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 WPF绘图基本用法绘制直线在XAML中绘制直线在C#代码中绘制直线使用Path绘制直线注意矩形绘制在XAML中绘制矩形在C#代码中绘制矩形设置矩形的位置使用圆角矩形画刷1. SolidColor…...
三、Lua变量
文章目录 一、变量分类二、变量赋值三、索引 一、变量分类 lua变量分为全局变量,局部变量。 全局变量:默认,全局有效。 局部变量:从作用范围开始到作用范围结束,需加local 修饰。 a1function ff()local b1 endprint(a…...
C#每天复习一个重要小知识day4:枚举的概念/申明/使用
目录 1.枚举的概念: 2.申明枚举和申明枚举变量: 申明枚举语法: 申明枚举变量语法: 1.枚举的概念: 枚举是什么?枚举是一个比较特别的存在,它是一个命名的整形常量的集合,一般用它…...
C++:对象模型和this指针
对象模型: 成员变量和成员函数分开存储 在C中,类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空对象占用空间: 1字节 C编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存的位置 每个…...
碳酸氢锂/硫酸锂溶液纯化除钙镁解决方案
碳酸锂是锂电行业阳极生产中的一个重要原材料,主要用于制造钴酸锂、镍酸锂、锰酸锂等电极材料,也用于充电 锂电池中作非水溶液电解质等,具有良好的电化学性能,应用领域还在不断扩大。工业级碳酸锂主含量(Li2CO3&#x…...
消失的数字,旋转数组(leetcode 一题多解)
目录 一、消失的数字 思路一(暴力求解)代码实现: 思路二(数列的思想)代码实现: 思路三(异或的运用)代码实现: 二、轮转数组 思路一(暴力求解)…...
肠道菌群16s检测粪便采样工具包 粪便采样套装
肠道菌群16s检测是一种常见的分子生物学技术,用于研究人体肠道中的微生物群落。该技术通过分析16s rRNA基因序列,可以快速、准确地鉴定并定量不同种类的肠道微生物。 肠道菌群16s检测通常通过采集粪便样本进行分析。在实验室中,通过提取微生物…...
实现领域驱动设计-07-领域服务
领域中的服务表示一个无状态的操作,它用于实现特定于某个领域的任务。当某个操作不适合放在聚合和值对象上时,为了避免过程式的编程方式,最好的方式便是使用领域服务来实现该操作。 什么是领域服务? 当领域中的某个操作过程或转换过程不是实…...
井盖位移传感器厂家批发,守护井盖安全
窨井盖广泛分布于城市街道,其管理效果直接反映了城市治理的现代化程度。根据住房和城乡建设部发布的《关于进一步加强城市窨井盖安全管理的通知》,全国各地需加强窨井盖的安全管理。作为市政基础设施的一个重要的组成部分,井盖的管理工作不仅…...
python命令行交互 引导用户选择宠物
字多不看,直接体验 代码 以下代码将在命令行中,引导用户选择一个或者多个宠物,并反馈用户选择的宠物 # -*- coding:UTF-8 -*- """ author: dyy contact: douyaoyuan126.com time: 2023/11/22 15:19 file: 在命令行中引导用户…...
Leetcode—167.两数之和 II - 输入有序数组【中等】
2023每日刷题(四十一) Leetcode—167.两数之和 II - 输入有序数组 实现代码 /*** Note: The returned array must be malloced, assume caller calls free().*/ int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {*returnSiz…...
MybatisPlus改造逻辑删除有多方便
MybatisPlus的逻辑删除可以有效保留历史数据。之前没有用逻辑删除的项目,想改造成逻辑删除总共需要几步? 答案:4步搞定 一、修改pom.xml的MybatisPlus版本(注意版本兼容性) <properties>...<!--<mybatis-…...
希尔伯特变换-matlab仿真
希尔伯特变换(hilbert transform)简介 在信号处理中我们常见的有傅里叶变换,用来分析频域信息,还有拉普拉斯变换和z变换,用于系统分析系统响应。短时傅里叶分析和小波分析用于时频分析。希尔伯特变换似乎听到的比较少。我因为最近在做信号幅度提取的时候看到可以用希尔伯…...
python字典的基本操作详解
Python字典是一种数据结构,它存储的是键值对(key-value pair)。在Python中,字典用于存储和组织数据,并且提供了快速查找和访问数据的方法。 以下是一些Python字典的基本操作: 创建字典: # 创…...
[ CSS ] 内容超出容器后 以...省略
内容超出容器后 以…省略 当前效果 代码 <template><div class"box">有志者,事竟成,破釜沉舟,百二秦关终属楚; 有心人,天不负,卧薪尝胆,三千越甲可吞吴</div> </templa…...
Java远程连接本地开源分布式搜索引擎ElasticSearch
文章目录 前言1. Windows 安装 Cpolar2. 创建Elasticsearch公网连接地址3. 远程连接Elasticsearch4. 设置固定二级子域名 前言 简单几步,结合Cpolar内网穿透工具实现Java远程连接操作本地Elasticsearch。 什么是elasticsearch?一个开源的分布式搜索引擎࿰…...
递归回溯剪枝-子集
LCR 079. 子集 - 力扣(LeetCode) 方法一 1. 决策树:对于决策树,思考的角度不同,画出的决策树也会不同,这道题可以从两个角度来画决策树。 2. 考虑全局变量的使用: 使用全局变量 List<List&…...
VC++、MFC中操作excel时,Rang和Rangs的区别是什么?
Rang 参考微软说明 作用 表示一个单元格、一行、一列、一个包含单个或若干连续单元格区域的选定单元格范围,或者一个三维区域。 说明 Range 的默认成员将不包含参数的调用转发至 Value 属性 如,someRange someOtherRange 等效于 someRange.Value …...
使用Rust开发小游戏
本文是对 使用 Rust 开发一个微型游戏【已完结】[1]的学习与记录. cargo new flappy 在Cargo.toml的[dependencies]下方增加: bracket-lib "~0.8.7" main.rs中: use bracket_lib::prelude::*;struct State {}impl GameState for State { fn tick(&mut self,…...
从理论到实践:共射极放大电路的设计与调试全攻略
1. 共射极放大电路的核心原理 共射极放大电路之所以被称为"电子工程师的必修课",关键在于它完美展现了晶体管放大的本质。想象一下,你正在用麦克风唱歌,但声音太小无法让全场听到——这时候就需要一个"声音放大器"。共射…...
为什么你的神经网络训练效果差?可能是激活函数没选对!
为什么你的神经网络训练效果差?可能是激活函数没选对! 在深度学习项目的实战中,许多开发者都遇到过这样的困境:模型训练过程看似正常,但验证集准确率始终徘徊不前,甚至出现预测结果完全随机的情况。上周一位…...
别再只抄电路图了!手把手教你用RC复位电路,从电容选型到时间计算(附常见坑点)
从零构建可靠复位电路:RC参数设计与避坑指南 当你第一次翻开单片机开发板的原理图,那个看似简单的RC复位电路背后,其实隐藏着一整套精妙的电子学原理。很多初学者会直接照搬现成电路,却不知道不同的电容类型会导致系统稳定性天差地…...
从Prompt失败到用户留存翻倍,生成式AI UX设计的5个反直觉真相,
第一章:Prompt失败不是终点,而是UX设计的起点 2026奇点智能技术大会(https://ml-summit.org) 当用户输入“帮我写一封辞职信,语气坚定但留有余地”,而模型返回一封格式混乱、逻辑断裂、甚至包含虚构公司名称的文本时,…...
3步解决显示器色彩失真:用novideo_srgb实现专业级色彩校准
3步解决显示器色彩失真:用novideo_srgb实现专业级色彩校准 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirrors/no/novideo_srgb …...
嵌入式Linux远程Shell新选择:Rtty对比SSH/WebSSH的实战体验与配置详解
嵌入式Linux远程Shell新选择:Rtty对比SSH/WebSSH的实战体验与配置详解 当你在凌晨三点收到现场设备告警,却发现客户防火墙阻断了所有SSH端口时;当你需要同时监控分布在三个不同城市的设备终端,却苦于没有统一管理界面时——传统远…...
Flyby11终极指南:如何轻松实现Windows 11多语言界面设置
Flyby11终极指南:如何轻松实现Windows 11多语言界面设置 【免费下载链接】FlyOOBE Fly through your Windows 11 setup 🐝 项目地址: https://gitcode.com/gh_mirrors/fl/FlyOOBE Flyby11是一款专业的Windows 11升级助手工具,它提供了…...
工业 AI 产品对比:研发与生产场景选型思路解析
工业 AI 市场产品类型多样,不同方案在场景适配、功能落地、易用性、安全性等方面存在明显差异。企业在选型时,通常聚焦图纸管理、SOP 标准化两大高频场景,对比维度包括场景贴合度、操作门槛、数据安全、扩展能力等。本文结合市场现状…...
联盟链:企业数字化转型的“信任基建“开发全攻略
引言:当信任成为商业世界的稀缺品在数字化转型的浪潮中,企业正面临一个核心矛盾:数据共享的需求与信任缺失的鸿沟。供应链中,核心企业难以实时追踪供应商的原材料来源;金融领域,跨境支付仍需依赖第三方机构…...
如何高效使用LaserGRBL:7大专业技巧完整指南
如何高效使用LaserGRBL:7大专业技巧完整指南 【免费下载链接】LaserGRBL Laser optimized GUI for GRBL 项目地址: https://gitcode.com/gh_mirrors/la/LaserGRBL LaserGRBL是一款专为GRBL控制器优化的激光雕刻软件,通过直观的图形界面让用户轻松…...
