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

[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

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

http://www.lryc.cn/news/246471.html

相关文章:

  • WPF面试题:WPF绘图技术介绍
  • 三、Lua变量
  • C#每天复习一个重要小知识day4:枚举的概念/申明/使用
  • C++:对象模型和this指针
  • 碳酸氢锂/硫酸锂溶液纯化除钙镁解决方案
  • 消失的数字,旋转数组(leetcode 一题多解)
  • 肠道菌群16s检测粪便采样工具包 粪便采样套装
  • 实现领域驱动设计-07-领域服务
  • 井盖位移传感器厂家批发,守护井盖安全
  • python命令行交互 引导用户选择宠物
  • Leetcode—167.两数之和 II - 输入有序数组【中等】
  • MybatisPlus改造逻辑删除有多方便
  • 希尔伯特变换-matlab仿真
  • python字典的基本操作详解
  • [ CSS ] 内容超出容器后 以...省略
  • Java远程连接本地开源分布式搜索引擎ElasticSearch
  • 递归回溯剪枝-子集
  • VC++、MFC中操作excel时,Rang和Rangs的区别是什么?
  • 使用Rust开发小游戏
  • 笔记二十一、使用路由search进行传递参数
  • python多线程和多进程
  • VMware虚拟机网络配置详解
  • VUE语法--img图片不显示/img的src动态赋值图片显示
  • springboot+vue智能企业设备管理系统05k50
  • C++中的new、operator new与placement new
  • ElasticSearch之cat anomaly detectors API
  • Luminar Neo1.16.0(ai智能图像处理)
  • ElasticSearch之cat aliases API
  • bash编程 数组和for循环的应用
  • Python基础:标准库概览