[SUCTF 2018]annonymous1

知识点:

匿名函数创建其实有自己的名字(%00lambda_%d)

进入页面开始代码审计.

php 复制代码
<?php  
  
// 使用 create_function 创建一个匿名函数,该函数调用 die() 函数并执行 `cat flag.php` 命令(在服务器上执行,如果PHP环境配置不当的话)。  
// 注意:`cat flag.php` 尝试读取名为 flag.php 的文件内容,这通常用于CTF(Capture The Flag)竞赛中,文件包含"flag"(即比赛的解决标志)。  
// 但直接在PHP中执行系统命令(如 `cat`)是危险的,特别是当命令来源不可控时。  
$MY = create_function("","die(`cat flag.php`);");  
  
// 生成一个随机的32字节字符串,并使用bin2hex函数将其转换为十六进制表示,用作函数名的前缀。  
$hash = bin2hex(openssl_random_pseudo_bytes(32));  
  
// 使用 eval() 函数动态地创建一个新函数,函数名为 "SUCTF_" 加上之前生成的随机哈希值。  
// 这个新函数全局调用之前创建的 $MY 匿名函数,即执行 `die(`cat flag.php`);`。  
// 使用 eval() 是非常危险的,因为它会执行任何传递给它的PHP代码。  
eval("function SUCTF_$hash(){"  
    ."global \$MY;" // 声明使用全局变量 $MY  
    ."\$MY();" // 调用 $MY 匿名函数  
    ."}");  
  
// 检查 $_GET['func_name'] 是否被设置。  
// 如果设置了,则尝试调用对应的函数。这里存在一个严重的安全问题,因为它允许远程用户通过URL参数调用任意函数。  
if(isset($_GET['func_name'])){  
    $_GET["func_name"](); // 直接调用通过URL参数指定的函数  
    die(); // 调用后终止脚本  
}  
  
// 如果没有通过URL传递func_name参数,则显示当前文件的源代码。  
show_source(__FILE__);

知识点: 当在调用执行 create_function() 创建匿名函数的时候,其实创建的函数是有名字的

格式为:%00lambda_%d ,而%d则是一个计数器会递增,用来记录create_function()这个函数执行了多少次.

所以我们可以通过调用那个匿名函数(%d=1)来实现cat flag.php的操作.

开始构造payload:

php 复制代码
http://1168ccea-8b4f-4672-8b5d-81ce3115b007.node5.buuoj.cn:81/?func_name=%00lambda_1

开始注入.

获得flag.

当然还没有结束 ,尝试了几次%d=1后这个payload才失效,然后就尝试%d=2又成功了,之后经过我多次的尝试当%d递增到9后他又回到了%d=1,而且每次%d的变动都是经过了几次的重复才会递增,

这说明这个服务器可能是一个多进程模式,每次请求都会有一个新的php环境(有限),所以%d会递增(存在规律).

复制代码
相关推荐
安卓修改大师2 小时前
安卓修改大师反编译引擎Apktool深度解析:版本选择、参数说明与实战技巧
android
error:(2 小时前
【系统与实战双精通】VS Code 调试 ROS2 Python 节点与 Launch 系统指南
android·java·python
黄林晴4 小时前
Kuikly 是什么?和KMP有什么关系?
android·前端
帅次5 小时前
Android 高级工程师面试:Kotlin 语法基础 近1年高频追问 22 题
android·面试·kotlin·扩展函数·空安全
想你依然心痛5 小时前
嵌入式日志系统:分级日志、环形缓冲区与远程输出——运行时调试、非侵入
android·前端·javascript
用户69371750013846 小时前
AI Agent 里的 Loop 到底是什么?
android·前端·后端
海天鹰7 小时前
安卓分割空字符串数组长度为1
android
Coffeeee7 小时前
从 Android 15 到 Android 17,谷歌猝不及防的音频改动
android·前端·google
用户69371750013847 小时前
AI 领域的 Harness,到底是什么意思?
android·前端·后端
2501_943782358 小时前
【共创季稿事节】密码生成器:如何构建一个安全的随机密码生成工具
android·数据库·安全·鸿蒙·鸿蒙系统