
由于A1natas官网和A1CTF正在重构,本博客将用于暂存A1natas的WriteUp
Web:
AAA偷渡阴平
火眼
tgshell 直接连接马就行
直面天命
先爆破
1 | import requests |
路由是/aazz
访问提示可以传参,FUZZ一下,filename任意读,proc/1/environ出了
GAME
通过调试拿到score:
目前到这里
1 | const container = document.querySelector('.container') |
CVE-2025-30208
直接打就完了,http://node2.tgctf.woooo.tech:30852/@fs//tgflagggg?import&raw??
GAME plus
30208被修复了,主要修改了transform.ts。
但是可以打/@fs/etc/passwd?import&?inline=1.wasm?init
inline不行就换成svg
(来自知识星球的一篇文章)
GAME Ultra
附件为"vite": "6.2.5",
直接打CVE-2025-32395
ezupload
fuzz了一下,nginx+php7,黑名单。
.bak找到源码
1 | <?php |
存在任意文件写,可以控制name为/…/ 跳转上一级
直接上传user。ini和一句话shell 就行
flag在环境变量
什么文件上传?
爆破一下上传后缀
直接打phar反序列化就行了
1 |
|
熟悉的配方,熟悉的味道
盲注即可
1 | import string |
直面天命(复仇)
一把梭即可
AAA偷渡阴平(复仇)
什么文件上传?(复仇)
Misc:
简单签到,关注:”杭师大网安“谢谢喵🐱
关注公众号得flag。
ez_zip
爆破得到密码是20250412,解压后得到一个压缩包和一个sh512.txt,把txt中的那句话sha512一下,deflate明文攻击。 根据数据存储区修复了一下压缩包
用Bandizip无密码快速压缩一个例子,然后对照着把压缩包修复一下就行
dirEntry的flag.txt应该是少东西了,需要我们手动补上
修复完成后打开即可得到flag:TGCTF{Warrior_You_have_defeated_the_giant_dragon!}
TeamGipsy&ctfer
桌面上有个mimi.txt,发现出题人用Docker起了一个MySQL,直接去/var/lib/docker目录下翻
发现在/var/lib/docker/overlay2/6ac971c2de3baa602bb4335d6899bbf1963140364ce248decc9557b2f49139f9/diff/root/.mysql_history中就有flag:HZNUCTF{0H!_YOu_are_really_the_TeamGipsy_ctfer}
你能发现图中的秘密吗?
解压得到两张新的图片,第一张的左上角有第二部分的flag:
flag2=_attentive_and_conscientious}
用010打开final_challenge2.png,发现有一块IDAT块不太正常
提取出来,补上PNG文件头尾,然后爆破宽高即可得到另一段flag
Tips:这里要注意把IDAT的前四个字节也一起复制过来,并且保持不变
因为四字节代表的是数据长度,这里如果出错,图片的数据长度就错了,因此再爆破宽高也没用了
两段flag合起来就是最后的flag:flag{you_are_so_attentive_and_conscientious}
next is the end
直接脚本就行
1 | #!/usr/bin/env python3 |
看到flag
where it is(osint)
谷歌识图
点进去发现
站点就是这个:港墘站
你的运气是好是坏?
笑死我了flag直接一试就试出来了:114514
这是啥o_o
下载得到一个无后缀的文件,文件头发现是gif,改成gif后拖进ps里看,发现最后几帧有散开的汉信码碎片。修复如下:
扫码得到:time is your fortune ,efficiency is your life
猜测是帧间隔隐写,用puzzlesolver提出帧间隔放入python转ASCII码,得到flag
a= [‘840’, ‘710’, ‘670’, ‘840’, ‘700’, ‘1230’, ‘890’, ‘1110’, ‘1170’, ‘950’, ‘990’, ‘970’, ‘1170’, ‘1030’, ‘1040’, ‘1160’, ‘950’, ‘1170’, ‘1120’, ‘950’, ‘1190’, ‘1050’, ‘1160’, ‘1040’, ‘950’, ‘1160’, ‘1050’, ‘1090’, ‘1010’, ‘330’, ‘1250’]
s = ‘’
for i in a:
s+=chr(int(i)//10)
print(s)
TGCTF{You_caught_up_with_time!}
Reverse:
XTEA
大端序密文输入。
delta没给,直接爆破0—>0xffffffff
1 | #include<stdio.h> |
最后手动把四字节反转一下
1 | HZNUCTF{ae6-9f57-4b74-b423-98eb} |
conforand
混淆成一坨了,把seed改为1后动调+盯帧查看数据变化和加密逻辑。
魔改rc4,魔改了下面的部分。
时间戳作为种子生成随机数(delta)对密钥进行了异或加密。
加密时盒交换就交换了一次,详情看下面的脚本。
解密时对随机数进行爆破再异或密钥解密魔改rc4就行。
1 |
|
蛇年的本命语言
z3解一下。
1 | from z3 import * |
1 | HZNUCTF{ad7fa-76a7-ff6a-fffa-7f7d6a} |
水果忍者
AES加密
randomsystem
大概逻辑就是矩阵操作,动调拿到密钥和盒解密一下。
1 | import numpy as np |
exchange
魔改des,神秘表,0改1,1改0,推出逆表,再把密文patch回去出原文
333936147332632923d96353321d3345636826d26314621d3349330463126348
1 | import binascii |
Crypto:
宝宝RSA
1 | from Crypto.Util.number import * |
费克特尔
TGCTF{f4888_6abdc_9c2bd_9036bb}
tRwSiAns
1 | from Crypto.Util.number import * |
mm不躲猫猫
1 | from Crypto.Util.number import * |
AAAAAAAA·真·签到
偏移量是1 0 -1 -2 -3……
根据偏移量移动flag,得到flag:TGCTF{WO0O!Y04_5R3_GOOD_AT_MOVE}
🇪🇿🇷🇸🇦
1 | from Crypto.Util.number import * |
LLLCG
1 | from Crypto.Util.number import * |
Pwn:
签到
1 | from pwn import * |
fmt
1 | from pwn import * |
stack
1 | from pwn import * |
shellcode
1 | from pwn import * |
heap
1 | from pwn import * |
overflow
1 | from pwn import * |
noret
1 | from pwn import * |
onlygets
1 | from pwn import * |
qheap
1 | from pwn import * |