写在前面
打感比较差的一次比赛,上午开赛的时候实验室里面的队员完全登录不上去(土豆服务器)
过了快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)3≡Ci(modni
。
把三个模 n1,n2,n3
下的方程合并成一个模 N=n1n2n3
下的方程
m3+k2m2+k1m+k0≡0(modN)![]()
因为 m
的值远小于 N
,直接用 Coppersmith得到 m
。
最后将m变成字节流得到flag




被折叠的 条评论
为什么被折叠?



