ctf show web入门 40

打开靶场发现这道题过滤了数字0-9和大量的符号,但是其中过滤的括号为中文状态下的括号这意味着我们不能使用变量,不能使用中括号索引数组,只能使用无参数函数嵌套的方法来获取数据

这里我们要想读取flag.php需要两个步骤

1.找到文件名

2.读取内容

所以我们要使用以下函数

1 localeconv() 返回一个包含本地化数字和货币格式信息的数组。

2 pos() 该函数返回数组中的当前单元(默认是第一个)。在 PHP 中,localeconv() 的第一个元素固定是 点号 .。

3 scandir('.') 扫描当前目录(即 . 目录)。由于 pos(localeconv()) 输出了 .,所以这里等价于 scandir('.'),它会返回当前目录下所有文件的数组。

4 array_reverse() 将文件数组顺序反转。在 ctf.show 的题目环境中,flag.php 通常在目录的倒数位置,反转后它会排在数组的前面。

5 next() 将数组内部指针向前移动一位。通常反转后的数组第一位是 . 或 ...,执行 next() 刚好可以指向 flag.php。

6 show_source() 读取并高亮显示文件内容。此时它的参数就是 next() 选中的 flag.php。

最后的payload如下:show_source(next(array_reverse(scandir(pos(localeconv())))));

相关推荐
searchforAI9 小时前
怎么把视频里的PPT提取出来?视频转图文笔记完整方案
人工智能·笔记·gpt·ai·音视频·语音识别·ppt
東雪木20 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
Oll Correct20 小时前
实验二十九:TCP的运输连接管理
网络·笔记
飞翔中文网1 天前
Java学习笔记之抽象类与接口(设计思想)
java·笔记·学习
智者知已应修善业1 天前
【proteus设计文氏正弦波信号发生器】2023-5-9
驱动开发·经验分享·笔记·硬件架构·proteus·硬件工程
凉、介1 天前
深入理解 ARMv8-A|处理器模式与寄存器
笔记·学习·嵌入式·arm
whyTeaFo1 天前
MIT 6.1810: Lec 5: calling conventions and stack frames RISC-V
笔记
上课不要睡觉了1 天前
【统计法规】4.1统计管理体制概述
笔记·统计师考试
墨白曦煜1 天前
算法实战笔记:剥开回溯算法的外衣——从通用模板到高阶去重(八)
笔记·算法
Upsy-Daisy1 天前
IOTA 学习笔记(四):当前 IOTA 架构总览
笔记·学习·架构