[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

相关推荐
小魏小魏我们去那里呀35 分钟前
Java2Flowchart:一款把 Java 方法一键转换成 Mermaid 流程图的 IntelliJ 插件
java·ide·intellij-idea
WHS-_-20221 小时前
Pycharm 使用经验
ide·python·pycharm
2501_916007471 小时前
iOS逆向工程:详细解析ptrace反调试机制的破解方法与实战步骤
android·macos·ios·小程序·uni-app·cocoa·iphone
空中海1 小时前
第三章:状态管理与 Jetpack 架构组件
android·架构
峥嵘life2 小时前
Android + Kiro AI软件开发实战教程
android·后端·学习
流星雨在线2 小时前
安卓路由技术选型调研
android·therouter·arouter
千里马学框架2 小时前
Ubuntu 24 搭建aosp源码环境详细笔记
android·linux·ubuntu·framework·安卓·aosp·源码环境
AIBox3652 小时前
vscode api 配置怎么做:第三方大模型接入 VS Code 的完整方法
ide·人工智能·vscode·gpt·语言模型·编辑器
空中海2 小时前
安卓 第六章:主题、样式与国际化
android
Ehtan_Zheng3 小时前
7个Kotlin Delegate
android