CTF_1
CTF_Show
萌新赛
1.签到题
<?php
if(isset($_GET['url'])){system("curl https://".$_GET['url'].".ctf.show");
}else{show_source(__FILE__);
}?>
和 AI 一起分析
1.if(isset($_GET['url']))检查GET请求中是否存在名为url的参数。
curl
2.curl是一个利用URL语法在命令行方式下工作的文件传输工具,它支持多种协议,包括HTTP、HTTPS、FTP等。
基本用法
curl [url?param1=value1] 默认为 get 请求
curl -data "param1=value1" [url] POST请求
curl -o filename [url] 下载文件
curl -F filename [url] 上传文件
由于 用户输入命令被直接拼接到 system 里执行,故可以用 ; 来分隔不同语句(Linux)
==》
?url=love;ls;love
关键在于 ;ls;
复原后为
curl http://love;ls;love.ctf.show

?url=love;less flag;love
ctfshow{b3f6c155-0fd8-4a2b-baf4-7f1c798379e9}
less 命令:
- less file,打开文件,并允许逐页浏览内容
Page Up或b:向上翻页。Page Down或Space:向下翻页。/word:向下搜索“word”这个词。
2.假生赛
<?php
session_start();
include('config.php');
if(empty($_SESSION['name'])){show_source("index.php");
}else{$name=$_SESSION['name'];$sql='select pass from user where name="'.$name.'"';echo $sql."<br />";system('4rfvbgt56yhn.sh');$query=mysqli_query($conn,$sql);$result=mysqli_fetch_assoc($query);if($name==='admin'){echo "admin!!!!!"."<br />";if(isset($_GET['c'])){preg_replace_callback("/\w\W*/",function(){die("not allowed!");},$_GET['c'],1);echo $flag;}else{echo "you not admin";}}
}
?>
题目提示 register.php,login.php,是两个登录窗口
根据index里的内容判断,首先需要以admin身份登录(session认证),然后传入c绕过正则
这里注册同名账号admin

直接注册 admin空格 ,pass=1

登录成功

分析 index.php 的判断语句
这里的正则表达式
/\w\W*/意味着匹配一个单词字符(\w)后面跟着任意数量的非单词字符(\W*)。这个正则表达式可以匹配任何非空字符串。工作原理是查找匹配非空字符串,并使用一个回调函数来替换它们。在这个例子中,回调函数是一个匿名函数,当匹配到任何字符串时,它会终止脚本执行(
die("not allowed!")),并且不会替换任何内容。
1是preg_replace_callback函数的第四个参数,表示只进行一次替换。
传入 c=666,也被当作字符,不行;c留空,即c=
得到flag
ctfshow{1f7d382e-2ca1-4f55-89a0-7586f4a58826}
瞅了一眼官方wp
这题其实考的是二次注入。可以注册和登陆。登陆后会将用户名带入查询。
需要成为admin。进入下一关
预期解:
二次注入。写入session内容为name|s:5:"admin";。然后替换session就能成为admin用户。
因为session实质上是将数据序列化后存入session_对应sessionID的。
比如/tmp/sess_2bevmvtacut18mlo3de90j6hha内容是name|s:5:"admin";
那么sessid为2bevmvtacut18mlo3de90j6hha的用户就是admin。
payload:
" union select unhex('6e616d657c733a353a2261646d696e223b') into outfile '/tmp/sess_2bevmvtacut18mlo3de90j6hha'#
然后替换sessionid登陆即可。
然而。在写入session时。是以mysql用户写入的。而session文件必须和中间件(apache)是同一用户。当时部署环境时。修改所属用户的脚本没写好。所以没部署成功就上线了。
非预期1:
群主直接在数据库中。插入了admin用户的数据。导致二次注入可以拿到admin密码。从而登陆
非预期2:
由于源码中只将输入小写。判断admin。并没有去除空格。而插入数据库时。mysql会自动忽略空格。所以注册admin空格。可以绕过检测。并成功插入数据库。从而登陆
直接对于session和数据库操作不熟,还是得练。
相关文章:
CTF_1
CTF_Show 萌新赛 1.签到题 <?php if(isset($_GET[url])){system("curl https://".$_GET[url].".ctf.show"); }else{show_source(__FILE__); }?> 和 AI 一起分析 1.if(isset($_GET[url]))检查GET请求中是否存在名为url的参数。 curl 2.curl…...
【系统】Mac crontab 无法退出编辑模式问题
【系统】Mac crontab 无法退出编辑模式问题 背景一、问题回答1.定位原因:2.确认编辑器类型3.确保编辑器进入正确3.1 确认是否有crontab调度任务3.2 进入编辑器并确保编辑器正常3.3 保存操作 4.确认crontab任务存在5.确保脚本的可执行性和正确性 二、后续 背景 之前…...
K8s中 statefulset 和deployment的区别
在 Kubernetes 中,StatefulSet 和 Deployment 是两种管理 Pod 的控制器,它们的主要区别在于 状态管理 和 Pod 的标识。以下是详细对比: 1. 功能定位 Deployment 用途:用于 无状态应用 的部署,例如 Web 服务、API 服务…...
springboot中的AOP以及面向切面编程思想
快速入门体验AOP aop中相关概念 实现导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 新建aop文件夹,里面声明XXXAspect类 @Aspect // 声…...
降低Mobx技术债问题-React前端数据流方案调研整理
我们现在主要是使用Mobx,但是Mobx的易于上手和灵活度也带来了很多预期以外的问题,随着项目的增长我们的代码技术债变得愈加沉重,不同的模块杂糅一起、单一store无限膨胀。 为此我们的调研是希望能找到一个更好的state配置、数据流的约定方案。…...
RabbitMQ消息可靠性保证机制7--可靠性分析-rabbitmq_tracing插件
rabbitmq_tracing插件 rabbitmq_tracing插件相当于Firehose的GUI版本,它同样能跟踪RabbitMQ中消息的注入流出情况。rabbitmq_tracing插件同样会对流入流出的消息进行封装,然后将封装后的消息日志存入相应的trace文件中。 # 开启插件 rabbitmq-plugins …...
SQL进阶技巧:如何求解直接线上最多的点数?
目录 0 问题描述 1 数据准备 2 问题分析 3 求解优化 步骤一:构建 “斜率键” 并统计点的数量(核心步骤) 步骤二:找出最多的点数(最终结果) 0 问题描述 “平面上最多的点数” 问题通常是指在一个二维平面中给定了若干个点的坐标(例如以 (x,y) 的形式表示),要求找…...
【老白学 Java】泛型应用 - 卡拉 OK(四)
泛型应用 - 卡拉 OK(四) 文章来源:《Head First Java》修炼感悟。 上文说到,解决了按歌名排序的问题后,老白立刻想到了按歌手名字排序的问题。 老白决定趁热打铁,尝试着实现自定义排序方式。 Collections…...
android studio更改应用图片,和应用名字。
更改应用图标,和名字 先打开AndroidManifest.xml文件。 更改图片文件名字( 右键-->构建-->重命名(R))...
SQL Server 表值函数使用示例
在 SQL Server 中,表值函数(Table-Valued Functions, TVFs)是一种用户定义函数,它可以返回一个表。表值函数有两种类型:内联表值函数(Inline Table-Valued Function)和多语句表值函数(Multi-Statement Table-Valued Function)。下面分别介绍这两种类型的表值函数及其使…...
SpringBoot项目的创建方式
目录 1.通过idea创建SpringBoot项目 2.在idea中通过aliyun创建SpringBoot 3.通过spring官网下载再用idea打开 5.通过mavenjava项目改为springboot项目 6.测试springboot 第二种方法使用的是idea2021版本,其余方法使用idea2017版本 1.通过idea创建SpringBoot项…...
微服务设计(第2版)读书笔记
微服务概述 什么是微服务? 答:微服务(microservice)是基于业务领域建模的,可独立发布的服务。它会把业务内聚的功能封装起来,并通过网络供其他服务访问。将这样的服务组合起来构建出更复杂的系统。 微服务…...
idea无法识别文件,如何把floder文件恢复成model
前景: 昨天,我在之前的A1214模块包下新增了一个demo类,然后又新建了一个A1216模块,写了算法题,后面打算用git提交,发现之前的A1214模块下的demo类和新建的模块源文件都已经被追踪了,都是绿色的&…...
vscode的keil assistant 中搜索不到全局变量
搜不到 但是在包含的文件中输入 ../../../,就是全局搜索的结果 我的文件结构是:\Desktop\LVGL文件系统移植(lvgl8.3)\Projects\MDK-ARM 盲猜是keil assistant 当前文件夹打开的时候是进入到了MDK-ARM文件夹层次&…...
html+css网页设计 美食 餐饮杰12个页面
htmlcss网页设计 美食 餐饮杰12个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1ÿ…...
重撸设计模式--代理模式
文章目录 定义UML图代理模式主要有以下几种常见类型:代理模式涉及的主要角色有:C 代码示例 定义 代理模式(Proxy Pattern)属于结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。 通过引入代理对象&am…...
Redis性能调优:深入剖析变慢原因及应对策略
如果观察到,这个实例的运行延迟是正常 Redis 基准性能的 2 倍以上,即可认为这个 Redis 实例确实变慢了。 1.如何查看实例的运行延迟 (1)redis-cli -h 127.0.0.1 -p 6379 --intrinsic-latency 60 执行该命令,就可以测…...
Python联合Halcon的详细教程
以下是一份Python联合Halcon的详细教程: 一、简介 Halcon是一款由德国MVTec公司开发的高级机器视觉软件,提供了一套强大的图像处理库,包括特征检测、识别、测量等功能。Python联合Halcon是一种将Python编程语言与计算机视觉库Halcon集成的应…...
raid 状态查看 storcli64
场景 当磁盘报错的时候使用该命令排查 fdisk -l /dev/sdb fdisk: cannot open /dev/sdb: Input/output error进一步使用 smartctl 排查 smartctl -a /dev/sdb 输出 smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-144-generic] (local build) Copyright (C) 2002-19, B…...
时间管理系统|Java|SSM|JSP|
【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...
【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...
