【CTFWP】ctfshow-web40
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 题目介绍:
- 题目分析:
- payload:
- payload解释:
- payload2:
- payload2解释:
- flag
题目介绍:
<?php/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-04 00:12:34
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-04 06:03:36
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/if(isset($_GET['c'])){$c = $_GET['c'];if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){eval($c);}}else{highlight_file(__FILE__);
}
题目分析:
-
if(isset($_GET['c'])){:检查GET请求中是否存在参数c。 -
$c = $_GET['c'];:如果存在,将参数c的值赋给变量$c。 -
使用正则表达式检查变量
$c中是否不包含一系列特定的字符。这个正则表达式尝试排除一些可能用于代码注入的特殊字符和一些常见符号。 -
eval($c);:如果$c变量中不包含上述正则表达式定义的任何字符,则使用eval函数执行$c中的PHP代码。这是一个非常危险的操作,因为eval会执行任何传入的PHP代码,这可能包括恶意代码。 -
}else{:如果GET请求中没有参数c,则执行else块中的代码。 -
highlight_file(__FILE__);:如果没有参数c,这个函数会高亮显示当前文件的内容。这通常用于调试目的,但在生产环境中使用可能会暴露敏感信息。 -
}:结束if-else语句。
payload:
?c=echo highlight_file(next(array_reverse(scandir(pos(localeconv())))));
payload解释:
这段代码尝试通过GET请求利用PHP的eval函数执行恶意代码。下面是对这段代码的分析:
?c=echo highlight_file(next(array_reverse(scandir(pos(localeconv())))));:这是一个GET请求的参数c,其值是一个PHP表达式。
echo:PHP中的输出函数,用于输出字符串或表达式的结果。highlight_file:PHP中的函数,用于高亮显示PHP文件的内容。next:PHP中的函数,用于将内部指针向前移动到下一个元素。array_reverse:PHP中的函数,用于反转数组元素的顺序。scandir:PHP中的函数,用于列出目录中的文件和子目录。pos:PHP中的函数,返回数组中当前元素的键名。localeconv():PHP中的函数,返回本地化的数字和货币格式信息。
具体来说,这段代码的执行流程如下:
localeconv():获取本地化的数字和货币格式信息。pos(localeconv()):获取localeconv()返回数组的键名。scandir(pos(localeconv())):列出pos(localeconv())指向的目录中的文件和子目录。array_reverse(scandir(pos(localeconv()))):反转这些文件和子目录的顺序。next(array_reverse(scandir(pos(localeconv())))):将内部指针移动到下一个元素,即下一个文件或子目录。highlight_file(next(array_reverse(scandir(pos(localeconv()))))):高亮显示这个文件的内容。echo:输出这个高亮显示的内容。
payload2:
?c=eval(next(reset(get_defined_vars())));&1=;system("tac%20flag.php");
payload2解释:
-
?c=eval(next(reset(get_defined_vars())));:这是GET请求的一部分,其中c参数的值是一个PHP表达式。get_defined_vars():这个函数返回当前所有已定义变量的数组,包括局部变量和全局变量。reset():这个函数将数组内部指针指向第一个元素,并返回该元素的值。next():这个函数将数组内部指针向前移动一位,并返回当前指针处的元素值。eval():这个函数执行字符串作为PHP代码。
这段代码的目的是尝试执行
get_defined_vars()返回的第一个元素的下一个元素的值作为PHP代码。 -
&1=;system("tac%20flag.php");:这是GET请求的另一部分,尝试通过URL参数执行系统命令。system():这个函数执行一个shell命令,并将完整的输出返回。"tac%20flag.php":这里的命令是tac flag.php,tac是反向输出文件内容的Unix命令,%20是URL编码的空格。
这段代码的目的是尝试执行
flag.php文件的反向内容。
flag

flag=“ctfshow{96c8b1e3-29aa-4010-8f8f-c2437ccb6502}”
相关文章:
【CTFWP】ctfshow-web40
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 题目介绍:题目分析:payload:payload解释:payload2:payload2解释:flag 题目介绍: …...
项目实战1(30小时精通C++和外挂实战)
项目实战1(30小时精通C和外挂实战) 01-MFC1-图标02-MFC2-按钮、调试、打开网页05-MFC5-checkbox及按钮绑定对象06--文件格式、OD序列号08-暴力破解09-CE10-秒杀僵尸 01-MFC1-图标 这个外挂只针对植物大战僵尸游戏 开发这个外挂,首先要将界面…...
百日筑基第三十六天
今日论道还算顺利,只可惜感到也没学到什么东西。晚些时候师祖问话,主要是来这边之后有什么困难之类,好像也没遇到需要他来帮我解决的困难,于是问了些修炼方法之类。...
MySQL: ALTER
正文 在数据库管理系统(DBMS)中,DDL(Data Definition Language)、DCL(Data Control Language)、和 DML(Data Manipulation Language)是三种主要的SQL(Struct…...
微前端技术预研 - bit初体验
1.关于什么是微前端以及微前端的发展, 当前主流框架以及实现技术等,可参考这篇总结(非常全面), 微前端总结:目录详见下图 本文内容主要针对bit框架的实时思路以及具体使用。 1.什么是Bit? Bit 是可组合软件的构建…...
对象关系映射---ORM
一、什么是ORM? ORM(Object Relational Mapping),即对象关系映射,是一种程序设计技术,用于在面向对象编程语言中实现对象和关系型数据库之间的映射。 二、ORM是干什么的? ORM 的主要目的是简…...
Django REST Framework(十七)Authentication
1.认证Authentication 在 Django REST framework (DRF) 中,可以在配置文件中配置全局默认的认证方案。常见的认证方式包括 cookie、session、和 token。DRF 提供了灵活的认证机制,可以在全局配置文件中设置默认认证方式,也可以在具体的视图类…...
FPGA开发——数码管的使用
一、概述 在我们的日常开发中,数字显示的领域中用得最多的就是数码管,这篇文章也是围绕数码管的静态显示和动态显示进行一个讲解。 1、理论 (1)数码管原理图 在对数码管进行相关控制时,其实就是对于8段发光二极管和…...
什么是网络安全等级保护测评服务?
等保测评 依据国家网络安全等级保护制度规定,按照有关管理规范和技术标准,对非涉及国家秘密的网络安全等级保护状况进行检测评估。定级协助 根据等级保护对象在国家安全、经济建设、社会生活中的重要程度,以及一旦遭到破坏、丧失功能或者数据…...
基于深度学习的多模态情感分析
基于深度学习的多模态情感分析是一个结合不同类型数据(如文本、图像、音频等)来检测和分析情感的领域。它利用深度学习技术来处理和融合多模态信息,从而提高情感分析的准确性和鲁棒性。以下是对这一领域的详细介绍: 1. **多模态情…...
Glove-词向量
文章目录 共现矩阵共线概率共线概率比词向量训练总结词向量存在的问题 上一篇文章词的向量化介绍了词的向量化,词向量的训练方式可以基于语言模型、基于窗口的CBOW和SKipGram的这几种方法。今天介绍的Glove也是一种训练词向量的一种方法,他是基于共现概率…...
Plugin ‘mysql_native_password‘ is not loaded`
Plugin mysql_native_password is not loaded mysql_native_password介绍1. 使用默认的认证插件2. 修改 my.cnf 或 my.ini 配置文件3. 加载插件(如果确实没有加载)4. 重新安装或检查 MySQL 版本 遇到错误 ERROR 1524 (HY000): Plugin mysql_native_passw…...
Hive数据类型
原生数据类型 准备数据 查看表信息 加载数据 查看数据 复杂数据类型-数组 准备数据 查看数据 优化 复杂数据类型-map 准备数据 查看数据 复杂数据类型-默认分隔符 准备数据 查看数据 原生数据类型 准备数据 -- 1 建库 drop database if exists db_1 cascade;…...
OSI七层网络模型:构建网络通信的基石
在计算机网络领域,OSI(Open Systems Interconnection)七层模型是理解网络通信过程的关键框架。该模型将网络通信过程细分为七个层次,每一层都有其特定的功能和职责,共同协作完成数据从发送端到接收端的传输。接下来&am…...
MSYS2下载安装和使用
Minimalist GNU(POSIX)system on Windows,Windows下的GNU环境。 目录 1. 安装 2. pacman命令 3. 配置vim 4. 一些使用示例 4.1 编译代码 4.2 SSH登录远程服务器 1. 安装 官网下载:https://www.msys2.org/ 双击.exe文件&am…...
机器学习中的决策树算法——从理论到实践完整指南
决策树在机器学习中的应用与原理 1. 介绍1.1 定义和基本概念1.2 决策树在机器学习中的角色和重要性 2. 决策树的结构2.1 节点、分支、叶子节点的定义和功能2.1.1 节点2.1.2 分支2.1.3 叶子节点 2.2 树的深度和宽度的影响2.2.1 树的深度2.2.2 树的宽度 3. 决策树的构建方法3.1 基…...
FFplay介绍及命令使用指南
😎 作者介绍:欢迎来到我的主页👈,我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun(领取大厂面经等资料),欢迎加我的…...
php实现动态登录
简介: 效果:通过前端页面的注册,通过MD5将密码加密,发送到数据库,通过验证数据库的内容实现登录,以及各种保证安全的措施 实验环境:phphtmlcssmysql数据表,使用html css设计注册&a…...
Servlet2-HTTP协议、HttpServletRequest类、HttpServletResponse类
目录 HTTP协议 什么是HTTP协议 HTTP协议的特点 请求的HTTP协议格式 GET请求 POST请求 常用的请求头说明 哪些是GET请求,哪些是POST请求 响应的HTTP协议格式 常见的响应码说明 MIME类型说明 HttpServletRequest类 作用 常用方法 如何获取请求参数 po…...
探索数据的内在世界:sklearn中分层特征聚类标签的可视化技术
探索数据的内在世界:sklearn中分层特征聚类标签的可视化技术 在机器学习中,聚类是一种探索数据结构的强大工具。对于具有分层特征的数据,如文本、时间序列或分类标签,聚类结果的可视化可以提供深入的洞见。本文将详细介绍如何在s…...
超高压输电线路空载运行时的电压升高现象解析
1. 为什么空载时线路末端电压会升高? 第一次接触超高压输电线路时,很多工程师都会对这个现象感到困惑:明明没有接任何用电设备,为什么线路末端的电压反而比始端更高?这就像往一根长长的水管里注水,结果发现…...
别再手动下载了!教你用Python+Schedule库打造个人YouTube视频自动下载工具
Python自动化神器:用Schedule库打造智能视频下载系统 每次手动下载YouTube视频不仅耗时耗力,还容易错过更新。作为Python开发者,我们完全可以用代码解放双手,打造一个全自动的视频下载系统。今天要分享的这套方案,结合…...
Pixel Couplet Gen实操手册:自定义门神像素图替换与SVG动画扩展方法
Pixel Couplet Gen实操手册:自定义门神像素图替换与SVG动画扩展方法 1. 项目概述 Pixel Couplet Gen是一款融合传统春节元素与现代像素艺术风格的AI春联生成工具。通过ModelScope大模型的文本生成能力,结合精心设计的8-bit视觉风格,为用户提…...
March7thAssistant:崩坏:星穹铁道企业级自动化解决方案
March7thAssistant:崩坏:星穹铁道企业级自动化解决方案 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 【核心价值定位】游戏工作室效率倍增引…...
别再死记硬背了!用DCM模式反激电路,手把手教你搞定宽电压输入的隔离电源
从零构建宽电压隔离电源:DCM反激电路实战指南 当你在深夜调试电路时突然闻到焦糊味,或是面对一堆烧毁的MOS管束手无策,是否想过——电源设计本可以更简单?本文将带你用工程师的思维重新理解反激变换器,避开教科书式的理…...
Python打包神器大PK:Nuitka vs PyInstaller,谁才是你的菜?(附实测数据)
Python打包工具深度评测:Nuitka与PyInstaller的终极对决 当开发者需要将Python项目分发给没有Python环境的用户时,打包工具的选择往往成为关键决策。本文将深入分析两大主流工具Nuitka和PyInstaller在多个维度的表现,帮助开发者根据项目需求做…...
Cocos Creator实战:5步搞定棋牌游戏大厅场景开发(附完整代码)
Cocos Creator实战:5步构建高交互棋牌游戏大厅(附模块化代码) 棋牌游戏大厅作为玩家进入游戏的第一印象,其体验直接决定了用户留存率。根据行业数据,精心设计的大厅界面能提升30%以上的玩家次日留存。不同于传统游戏开…...
OffscreenCanvas黑科技:让你的网页动画性能提升300%的配置指南
OffscreenCanvas黑科技:让你的网页动画性能提升300%的配置指南 当网页动画开始卡顿,用户的体验就会直线下降。传统Canvas渲染在主线程执行,复杂的图形运算很容易阻塞UI响应。OffscreenCanvas的出现彻底改变了这一局面——它允许你将绘制逻辑转…...
AI辅助开发:让快马AI智能生成自适应Win10镜像下载管理工具
AI辅助开发:让快马AI智能生成自适应Win10镜像下载管理工具 最近在折腾一个Windows系统镜像下载管理工具,发现传统下载方式存在不少痛点:下载源选择困难、网络波动导致中断、版本特性不透明。正好接触到InsCode(快马)平台的AI辅助开发功能&am…...
Halcon清晰度检测实战:5种算法全解析,手把手教你选出最清晰的PCB图像
Halcon清晰度检测实战:5种算法全解析,手把手教你选出最清晰的PCB图像 在工业视觉检测领域,PCB板的图像清晰度直接影响缺陷检测的准确率。当相机对焦不准确或存在景深限制时,如何从多张候选图像中自动选择最清晰的一张,…...
