[ACTF2020 新生赛]BackupFile1

打开题目

利用disearch扫描,发现源文件index.php.bak

下载下来

打开文件

代码审计,翻译一下

翻译代码为:

<?php

include_once "flag.php"; //这一行使用 include_once 函数来包含(或插入)另一个 PHP 文件 "flag.php" 的内容。include_once 确保文件只被包含一次,即使它在多个地方被调用。这意味着 "flag.php" 文件中定义的任何变量或函数都将在当前文件中可用。

if(isset(_GET\['key'\])) //这一行检查 GET 请求中是否存在名为 'key' 的参数。_GET 是一个 PHP 超全局变量,用于收集表单数据(HTML 表单)在 URL(地址栏)中发送的变量。isset() 函数检查变量是否设置且不为 NULL。

{

key = _GET'key'; //如果 'key' 参数存在,这行代码将其值赋给 $key 变量。

if(!is_numeric($key))

{

exit("Just num!"); //这两行代码检查 $key 是否为数字。如果不是数字,is_numeric() 函

数返回 false,然后 exit("Just num!") 将终止脚本执行并输出 "Just num!"。

}

key = intval(key); //这行代码使用 intval() 函数将 key 转换为整数。如果 key 是数字

或数字字符串,intval() 将返回该数字的整数形式。

$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3"; //这行代码定义了一个字符串

$str,它包含数字和字符的组合。

if(key == str)

{

echo flag; //这两行代码检查 key 是否等于 str。如果相等,它将输出 flag 的值。由

str 是一个包含非数字字符的字符串,这意味着只有在 key 也是一个包含

相同字符的字符串时,这个条件才会为真。

}

}

else

{

echo "Try to find out source file!"; //如果 GET 请求中没有 'key' 参数,这个 else 块将

执行,输出 "Try to find out source file!"。

}

然后构造payload得到flag

构造payload url+/?key=123,得到flag

相关推荐
FinelyYang3 小时前
UniApp + LiveKit:Android 端为什么要用原生做屏幕共享,以及我们怎么落地的
android·uni-app
蓝速科技3 小时前
蓝速科技信创落地:平衡安全合规与项目成本的实战方案
android·运维·人工智能·科技·安全·电脑·鸿蒙
又见情义6 小时前
RK3568 Android 13 SDK 开机自动开启共享热点实践
android
mmsx6 小时前
return false 不是拦截:一次按键触发两个动作的事件冒泡陷阱
android·bug
DU_YULIN7 小时前
Camera HAL ThreadManager概述
android·camera hal
淡淡的香烟8 小时前
Android中的MQTT通信原理解析
android·物联网
淡淡的香烟8 小时前
Android Camera开发详解
android·音视频
mmsx9 小时前
基于 Android 的校园信息管理系统源码
android·java·okhttp
JTaoX10 小时前
pycharm 集成本地 jupyter notebook
ide·jupyter·pycharm
YF021110 小时前
如何进入Android工程模式
android