LitCTF2024赛后web复现
复现要求:看wp做一遍,自己做一遍,第二天再做一遍。(一眼看出来就跳过)
目录
[LitCTF 2024]浏览器也能套娃?
[LitCTF 2024]一个....池子?
[LitCTF 2024]高亮主题(划掉)背景查看器
[LitCTF 2024]百万美元的诱惑
[LitCTF 2024]SAS - Serializing Authentication
[LitCTF 2024]exx
[LitCTF 2024]浏览器也能套娃?
类型:ssrf、http协议
尝试输入http://127.0.0.1发现跳出一个相同页面,输入http://www.baidu.com发现跳转到了百度页面,这里我们可以想到可能是ssrf漏洞
直接用file伪协议
file伪协议:允许直接访问本地文件系统
file:///path/file
输入file:///etc/passwd尝试发现有回显
既然有/etc/passwd这个目录存在且里面也没有发现flag的相关信息,尝试查看一下/flag目录存在不存在,直接得到flag。
file:///flag
[LitCTF 2024]一个....池子?
类型:SSTI、Flask(Jinja2)
看到这个页面会联想到的漏洞可能是xss也可能ssti,用xss弹cookie发现没有弹出flag先不考虑先用ssti。
输入{{7*7}},回显49说明存在ssti漏洞
输入{{"".__class__}}发现回显成功不存在过滤
{{"".__class__.__base__.__subclasses__()[137].__init__.__globals__['__builtins__']['eval']("__import__('os').popen('ls /').read()")}}
{{"".__class__.__base__.__subclasses__()[137].__init__.__globals__['__builtins__']['eval']("__import__('os').popen('cat /flag').read()")}}
[LitCTF 2024]高亮主题(划掉)背景查看器
类型:文件包含、目录穿越
进入后看到一段php代码且是文件包含漏洞演示
先根据页面里代码提示的在url里用?url=/ect/passwd尝试看看有没有回显结果发现一直在加载中说明url里不存在漏洞
用hackbar打开post传参一下theme=/etc/passwd发现有报错信息不能打开这个文件且现在的路径是themes//etc/p说明当前页面的路径是themes,可能存在漏洞
用目录穿越继续测试../etc/passwd发现还在themes路径下
../../etc/passwd发现成功穿越到var/www路径下
此时尝试../../flag发现没有这个文件那就继续穿越(正常有/etc/passwd的路径下才可能有flag)
试了半天没动静感觉可能hackbar有问题用bp抓包弄弄(之前也有出现过就无语)
也是成功回显,这时候再改成flag试试
成功得到flag
[LitCTF 2024]百万美元的诱惑
类型:无字母RCE、无数RCE、PHP
代码审计
is_numeric()函数:用于检查传入函数中作为参数的变量是数字还是数字字符串,该函数返回一个布尔值
扩展:
type_digit() 和 is_numeric() 都可以 “判断变量是否为数字”。
type_digit() :只有在字符串中全是「数字」才会返回 true ,整型、浮点型、甚至包含正负符号的值都返回 false。
is_numeric() :对整型、浮点型、以及包含正负符号的值都返回 true 。
由于is_numeric()前有一个!说明逻辑取反,变量c不是数字但是变量c的大小要大于2024所以用2025e即可绕过
完整payload:
?a[]=1&b[]=2&c=2025e
得到一个php文件
访问得到新的php代码
flag在12.php里,通过rce得到,只需要x=12即可得到,但是需要绕过正则。
这里想不到12需要怎么构造来绕过查了一波资料
在Linux中,可以使用
$(())
进行数学运算,$(())
是空运算,默认值是0。$((3*4))=12
由于这里数字全被禁用了所以我们需要进一步构造
$((~$(())))=-1
$(())内部数学表达式的结果为$(())=0,按位取反后的结果是 -1。
继续
$((~$(())))$((~$(())))=-1-1=-2
$((~$(($((~$(())))$((~$(())))$((~$(())))))))=-(-3+1)=2
构造payload:
dollar.php?x=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))))))
打开后是个空白界面根据之前做题经验查看源代码得到flag
[LitCTF 2024]SAS - Serializing Authentication
类型:PHP反序列化
根据代码直接username=admin,password=secure_password且需要base64_encode加密
输入直接得到flag
[LitCTF 2024]exx
类型:XXE、PHP
看到登入界面我们先输个常规的admin 123456进去试试
发现在上面有回显登入失败
接着测试一下有没有sql注入,ssti注入和xss发现都不存在
打开源代码查看(另一种思路则是用bp打开fuzz得到回显)
发现一串代码(且从代码可以看出是关于用户名提交和密码提交),请求包的格式是xml,有一个php文件打开是一个报错页面
看到了DOMDocument::loadXML字样,再根据题目名称和登录请求包格式(XML格式),推测是考察XXE那一块。
DOCTYPE用于定义xml文件中实体内容
DOCTYPE声明
**内部声明DTD**
<!DOCTYPE 根元素 [元素声明]>**引用外部DTD**
<!DOCTYPE 根元素 SYSTEM "文件名">
DOCTYPE内部实体分类
**引用内部实体**
<!ENTITY 实体名称 "实体的值">
**引用外部实体**
<!ENTITY 实体名称 SYSTEM "URL">
或者:
<!ENTITY 实体名称 PUBLIC "public_ID" "URL">实体必须在DTD中声明定义才能在其他位置使用
打开bp开始构造payload
先构造内部实体用伪协议查看发现都不可行,可能在外部,构造payload引用外部实体b
正常会先查看/etc/passwd这个目录这边就不放进去了
得到一串base64字符串解密后得到flag
相关文章:

LitCTF2024赛后web复现
复现要求:看wp做一遍,自己做一遍,第二天再做一遍。(一眼看出来就跳过) 目录 [LitCTF 2024]浏览器也能套娃? [LitCTF 2024]一个....池子? [LitCTF 2024]高亮主题(划掉)背景查看器 [LitCTF 2…...

Elasticsearch:跨集群使用 ES|QL
警告:ES|QL 的跨集群搜索目前处于技术预览阶段,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览中的功能不受官方 GA 功能的支持 SLA 约束。 使用 ES|QL,你可以跨多个集群执行单个查询。 前提: …...

学习笔记4:docker和k8s选择简述
docker和 k8s 占用资源 使用客户体量Docker 和 Kubernetes(K8s)都是流行的容器化技术,但它们在资源管理和使用上有一些不同。以下是关于两者资源占用和使用客户体量的详细比较,基于具体数据和信息: Docker 资源占用…...

关于锁策略
在Java中对于多线程来说,锁是一种重要且必不可少的东西,那么我们将如何使用以及在什么时候使用什么样的锁呢?请各位往下看 悲观锁VS乐观锁 悲观锁: 在多线程环境中,冲突是非常常见的,所以在执行操作之前…...

昇思25天学习打卡营第3天|基础知识-数据集Dataset
目录 环境 环境 导包 数据集加载 数据集迭代 数据集常用操作 shuffle map batch 自定义数据集 可随机访问数据集 可迭代数据集 生成器 MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset)和数据变换(Transfor…...

C++11新特性——智能指针——参考bibi《 原子之音》的视频以及ChatGpt
智能指针 一、内存泄露1.1 内存泄露常见原因1.2 如何避免内存泄露 二、实例Demo2.1 文件结构2.2 Dog.h2.3 Dog.cpp2.3 mian.cpp 三、独占式智能指针:unique _ptr3.1 创建方式3.1.1 ⭐从原始(裸)指针转换:3.1.2 ⭐⭐使用 new 关键字直接创建:3.1.3 ⭐⭐⭐…...

“微软蓝屏”全球宕机,敲响基础软件自主可控警钟
上周五,“微软蓝屏”“感谢微软 喜提假期”等词条冲上热搜,全球百万打工人受此影响,共同见证这一历史性事件。据微软方面发布消息称,旗下Microsoft 365系列服务出现访问中断。随后在全球范围内,包括企业、政府、个人在…...

【Linux C | 网络编程】进程间传递文件描述符socketpair、sendmsg、recvmsg详解
我们的目的是,实现进程间传递文件描述符,是指 A进程打开文件fileA,获得文件描述符为fdA,现在 A进程要通过某种方法,传递fdA,使得另一个进程B,获得一个新的文件描述符fdB,这个fdB在进程B中的作用…...

高并发内存池(六)Page Cache回收功能的实现
当Page Cache接收了一个来自Central Cache的Span,根据Span的起始页的_pageId来对前一页所对应的Span进行查找,并判断该Span,是否处于使用状态,从而看是否可以合并,如果可以合并继续向前寻找。 当该Span前的空闲Span查…...

浅析JWT原理及牛客出现过的相关面试题
原文链接:https://kixuan.github.io/posts/f568/ 对jwt总是一知半解,而且项目打算写个关于JWT登录的点,所以总结关于JWT的知识及网上面试考察过的点 参考资料: Cookie、Session、Token、JWT_通俗地讲就是验证当前用户的身份,证明-…...

Spring AI (五) Message 消息
5.Message 消息 在Spring AI提供的接口中,每条信息的角色总共分为三类: SystemMessage:系统限制信息,这种信息在对话中的权重很大,AI会优先依据SystemMessage里的内容进行回复; UserMessage:用…...

【windows Docker desktop】在git bash中报错 docker: command not found 解决办法
【windows Docker desktop】在git bash中报错 docker: command not found 解决办法 1. 首先检查在windows中环境变量是否设置成功2. 检查docker在git bash中环境变量是否配置3. 重新加载终端配置4. 最后在校验一下是否配置成功 1. 首先检查在windows中环境变量是否设置成功 启…...

02.FreeRTOS的移植
文章目录 FreeRTOS移植到STM32F103ZET6上的详细步骤1. 移植前的准备工作2. 添加FreeRTOS文件3. 修改SYSTEM文件4. 修改中断相关文件5. 修改FreeRTOSConfig.h文件6. 可选步骤 FreeRTOS移植到STM32F103ZET6上的详细步骤 1. 移植前的准备工作 **基础工程:**内存管理部…...

【个人笔记】一个例子理解工厂模式
工厂模式优点:创建时类名过长或者参数过多或者创建很麻烦等情况时用,可以减少重复代码,简化对象的创建过程,避免暴露创建逻辑,也适用于需要统一管理所有创建对象的情况,比如线程池的工厂类Executors 简单工…...

【C语言】数组栈的实现
栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&#…...

kafka 各种选举过程
一、kafka 消费者组协调器 如何选举 Kafka 中的消费者组协调器(Group Coordinator)是通过以下步骤选举的: 分区映射: Kafka 使用一个特殊的内部主题 __consumer_offsets 来存储消费者组的元数据。该主题有多个分区,每…...

树与二叉树【数据结构】
前言 之前我们已经学习过了各种线性的数据结构,顺序表、链表、栈、队列,现在我们一起来了解一下一种非线性的结构----树 1.树的结构和概念 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一…...

简单几步,把浏览器书签转换成导航网页
废话不多说直奔主题上干货 Step 1 下载浏览器书签 1,电脑浏览器点击下载Pintree Pintree 是一个开源项目,旨在将浏览器书签导出成导航网站。通过简单的几步操作,就可以将你的书签转换成一个美观且易用的导航页面。 2. 安装 Pintree B…...

Mac安装Hoomebrew与升级Python版本
参考 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 安装了Python 3.x版本,你可以使用以下命令来设置默认的Python版本: # 首先找到新安…...

代码审计:Bluecms v1.6
代码审计:Bluecms v1.6 漏洞列表如下(附Exp): 未完待续… 1、include/common.fun.php->getip()存在ip伪造漏洞 2、ad_js.php sql注入漏洞 Exp:view-source:http://127.0.0.3/bluecms/ad_js.php?ad_id12%20UNION%20SELECT1,2,3,4,5,6,database() 3、…...

谷粒商城实战笔记-59-商品服务-API-品牌管理-使用逆向工程的前后端代码
文章目录 一, 使用逆向工程生成的代码二,生成品牌管理菜单三,几个小问题 在本次的技术实践中,我们利用逆向工程的方法成功地为后台管理系统增加了品牌管理功能。这种开发方式不仅能快速地构建起功能模块,还能在一定程度…...

如何利用Jenkins自动化管理、部署数百个应用
目录 1. Jenkins 安装与部署步骤 1.1 系统要求 1.2 安装步骤 1.2.1 Windows 系统 1.2.2 CentOS 系统 1.3 初次配置 2. Gradle 详细配置方式 2.1 安装 Gradle 2.1.1 Windows 系统 2.1.2 CentOS 系统 2.2 配置 Jenkins 中的 Gradle 3. JDK 详细配置方式 3.1 安装 JD…...

Java之归并排序
归并排序 归并排序(Merge Sort)算法,使用的是分治思想。分治,顾名思义,就是分而治之,将一个大问题分解成小的子问题来解决。小的子问题解决了,大问题也就解决了。 核心源码: mergeSort(m->n) merge(mergeSort(m-&g…...

了解ChatGPT API
要了解如何使用 ChatGPT API,可以参考几个有用的资源和教程,这些资源能帮助你快速开始使用 API 进行项目开发。下面是一些推荐的资源: OpenAI 官方文档: 访问 OpenAI 的官方网站可以找到 ChatGPT API 的详细文档。这里包括了 API …...

EasyAnimate - 阿里开源视频生成项目,国产版Sora,高质量长视频生成 本地一键整合包下载
EasyAnimate是阿里云人工智能平台PAI自主研发的DiT-based视频生成框架,它提供了完整的高清长视频生成解决方案,包括视频数据预处理、VAE训练、DiT训练、模型推理和模型评测等。在预训练模型的基础上,EasyAnimate可通过少量图片的LoRA微调来改…...

7月23日JavaSE学习笔记
异常: 程序中一些程序处理不了的特殊情况 异常类 Exception 继承自 Throwable 类(可抛出的) Throwable继承树 Error:错误/事故,Java程序无法处理,如 OOM内存溢出错误、内存泄漏...会导出程序崩溃 常见的…...

Linux——DNS服务搭建
(一)搭建nginx 1.首先布置基本环境 要求能够ping通外网,有yum源 2.安装nginx yum -y install nginx 然后查看验证 3.修改网页配置文件 修改文件,任意编写内容,然后去物理机测试 (二)创建一…...

C#中的wpf基础
在WPF中,Grid 是一种非常强大的布局控件,用于创建网格布局。它允许你将界面划分为行和列,并将控件放置在这些行和列中。 以下是一些关键点和示例,帮助你理解 WPF 中的 Grid: 基本属性 RowDefinitions:定义…...

基于微信小程序+SpringBoot+Vue的刷题系统(带1w+文档)
基于微信小程序SpringBootVue的刷题系统(带1w文档) 基于微信小程序SpringBootVue的刷题系统(带1w文档) 本系统是将网络技术和现代的管理理念相结合,根据试题信息的特点进行重新分配、整合形成动态的、分类明确的信息资源,实现了刷题的自动化,…...

SSH -i的用法
缘起 今天使用ssh -i指定私钥时遇到以下错误: WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for /home/ken/.ssh/my.pem are too open. It is required that your private key files are NOT accessible by others. This private key will b…...