【CTF WriteUp】御网杯2026线上赛题解Writeup

写在前面

打感比较差的一次比赛,上午开赛的时候实验室里面的队员完全登录不上去(土豆服务器)

过了快10分钟才修好,进去做WEB题做出来了Flag交不上去(何意味)

而且听说PWN4从开始坏到结束,友友一直在吐槽。

(本质AI大战)几乎做完所有题目才只有1000名左右。

没有反作弊这个功能,容器是Public的【导致WEB-4一个人给Secret_key爆出来了所有人都知道了】

Misc

签到题-损坏的压缩包

直接base解码放到flag{}里面就行了

幻影

010查看原码题目文件中明确提示为 FLAG IS HIDDEN IN BASE64 PLUS XOR!

先对最后一行 Base64 字符串解码,由于题目没有给异或的Key,尝试使用单字节异或去解

Exp:

import base64

enc = "GBIfGQVPR0tLTh8dHFMdSxhOU0ocSRpTHEZNTFNJS0ZHThpHSRpIHBsD"
data = base64.b64decode(enc)

for k in range(256):
    out = bytes(b ^ k for b in data)
    if b"flag{" in out:
        print(out)

b'flag{19550acb-c5f0-4b7d-b832-75890d97d6be}'

Misc4-赛后复现

解压后一张图片,010读源后发现文件末尾带有异常十六进制数据

赛后使用 Codex  解法

迷宫

一个层层压缩的压缩包解压到最后Base64一下就出来了

ZWE2MzJjNjYwNmJlY2Q5ZTQ2YzFkMzkyZjhiMGU2ZGE=

flag{ea632c6606becd9e46c1d392f8b0e6da}

WEB

WEB-Snake_Game

发包修改分数即可得到flag

WEB-PHP_Payment

审计源代码发现代金券存在反序列化漏洞

构建经过Base64编码后的Payload

O:12:"PromoManager":2:{s:12:"promo_credit";i:100000;s:10:"promo_code";s:4:"test";

TzoxMjoiUHJvbW9NYW5hZ2VyIjoyOntzOjEyOiJwcm9tb19jcmVkaXQiO2k6MTAwMDAwO3M6MTA6InByb21vX2NvZGUiO3M6NDoidGVzdCI7f

兑换后无法直接购买,使用BP发包即可买下FLAG

WEB-Enterprise_OA

存在LFI漏洞,能够进行目录穿越读取容易文件

使用index.php 和 ../index.php 测试得到结果一致

判断存在自动过滤../的WAF

构建Payload: ....//....//....//flag.txt

WEB-TaxSystem_SSTI

/这道题开始的时候一直500,只有一段时间修复,过了一段时间又500了/’

审计提供的源码,使用默认密码进入系统 admin/123456

经过源码审计,发现存在SSTI漏洞

通过向数据库插入存在SSTI回显的内容,然后再使用preview页面进行查看,即可回显环境变量设置,拿到Secret_Key:

然后伪造session,进入admin界面即可得到flag

队友题解:

Reverse

1.Rerere

用ida打开shift+f12发现correct,点进去发现加密代码是byte_140004060[*(_BYTE *)(Buffer + v2) ^ byte_140004048[v2 & 7]] == byte_140004020[v2],写脚本解出flag

2.字节码迷踪

下载发现是.pyc文件用uncompyle6反编译发现版本不够,用线上网站https://pylingual.io/反编译发现是先base64再异或最后与输入比较,直接加print输出flag

Reverse3

解压后得到一个pyc文件

跳过 pyc 头部 16 字节,用 marshal.loads 取出 code object

发现加密为先将每个字符base64编码,再对每个字节做 b ^ key,最后 chr() 拼成字符串

编写exp:

  import base64



  encoded = 'CAIPCRVeABgUC1wCX0NXHh1YQx4cBFZDBV1bC0MCWw9fHF5WXV8MBx4T'

  key = 110



  flag = ''.join(chr(b ^ key) for b in base64.b64decode(encoded))

  print(flag)

得到flag:flag{0nvze2l1-9ps6-prj8-k35e-l5a1r0831bip}

Crypto

Babyrsa

因为 e=3 很小,且密文 c 小于模数 n,所以 c 就是明文的立方

直接开立方得到答案

Scatterrsa

已知 ci≡(aim+bi)3(modni),两边乘以 ai 的逆元,变成 m+Bi)3Ci(modni

把三个模 n1,n2,n3 下的方程合并成一个模 N=n1n2n3 下的方程

m3+k2m2+k1m+k0≡0(modN)

因为 m 的值远小于 N,直接用 Coppersmith得到 m

最后将m变成字节流得到flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值