NISACTF 2022WP
NISACTF 2022WP
[NISACTF 2022]sign_crypto
题目
提示:flag为大写喔~
思路
签到题是LATEX符号
1 | \ni \sum \sum \chi \theta \forall \{ \eta \Diamond \infty \tau \_ \widehat{nisa} \int \triangle \hookleftarrow \_ \Lambda \aleph \tau \ell \xi \} |
因为flag格式为NSSCTF{}所以发现是提取首字母
NSSCTF{EDIT_WITH_LATEX}
[NISACTF 2022]funnycaeser
题目
凯撒5号说:大家为什么都说我很奇怪?
附件:txt->NRQ;P<uLliW^(XQ/QT\NDh
思路
shift=5
解密一次得到IML;K<pGgdR^(SL/LO\IYc
尝试再解密一次得到了flag
flag:NSSCTF{Stran9e_Caesar}
题目提示很奇怪->变异凯撒
1 | import string |
NSSCTF{Stran9e_Caesar}
[NISACTF 2022]normal
题目:
txt文件里面只包含三个字符!?.Ook!解码使用在线解码dcode.fr/en?q=ook
Ook! 是一种基于 Brainfuck 的 esoteric 编程语言,常用于 CTF 密码学/杂项题目。它的特点是只用 Ook. Ook? Ook! 三种组合来表示不同指令。
\u0065\u0047\u006c\u0069\u005a\u0057\u0067\u0074\u0061\u0032\u0056\u006a\u0062\u0032\u0063\u0074\u0064\u006e\u006c\u0032\u0059\u0057\u0073\u0074\u0062\u0057\u006c\u0073\u0061\u0057\u0077\u0074\u0062\u0058\u006c\u0074\u005a\u0057\u0059\u0074\u0059\u006e\u0056\u0077\u0059\u0057\u0067\u0074\u0065\u006d\u0056\u0077\u0061\u0057\u0067\u0074\u0061\u0047\u0046\u0069\u0065\u0057\u0073\u0074\u0062\u0047\u0056\u0073\u0064\u0057\u0051\u0074\u0059\u0032\u0039\u0073\u0064\u0057\u0073\u0074\u0062\u0048\u006c\u0030\u0062\u0032\u0077\u0074\u0061\u0033\u0056\u0074\u0061\u0057\u0067\u0074\u0062\u0057\u0039\u0036\u0064\u0058\u0067\u003d
Unicode转ASCII
eGliZWgta2Vjb2ctdnl2YWstbWlsaWwtbXltZWYtYnVwYWgtemVwaWgtaGFieWstbGVsdWQtY29sdWstbHl0b2wta3VtaWgtbW96dXg=
一眼base64
xibeh-kecog-vyvak-milil-mymef-bupah-zepih-habyk-lelud-coluk-lytol-kumih-mozux
查找发现是Bubble Babble 编码
以 x 开头和结尾,中间用 - 分隔多个 5 字符组,每个组由辅音-元音-辅音-元音-辅音交替组成:
字母表
| 类别 | 字母 | 数量 |
|---|---|---|
| 元音 (vowel) | a e i o u y |
6 个 |
| 辅音 (consonant) | b c d f g h k l m n p r s t v z |
17 个 |
注意:官方的辅音表 bcdfghklmnprstvz 中没有 j q w x y(w 和 x 被用作特殊标记)
编码原理
每个 5 字符组 (C₁ V₁ C₂ V₂ C₃) 编码 2 个字节:
- 组成两个音节值:A = C₁ × 6 + V₁,B = C₂ × 6 + V₂
- 合并成一个 16 位整数:N = A × 6 + B(范围 0~1295)
- 拆成两个字节:byte1 = N / 256,byte2 = N % 256
- 校验位:C₃ = (A + B) % 36
dcode.fr/bubble-babble-cipher
厨子上面没找到这个编码在线解一下
AVFN{h_xa0j_jU@g_!guvaX}
格式应为NISA{}
猜测有移位随波逐流跑一下,其实可以发现ASCII中A为65,N为78,所以shift=13
ROT13解码得到flag
NISA{u_kn0w_wH@t!_thinK}
NSSCTF上格式为NSSCTF{}我说怎么提交不上去
[NISACTF 2022]xor
题目:
1 | import os |
思路
1 | def gen_key(): |
生成8个16字节的随机密钥
1 | def rnd(b: bytes, k: bytes): |
Feistel 结构
将32字节分为左右各16字节,
将上一轮的left赋值给下一轮的right,
将上一轮的right异或密钥异或上一轮的left赋值给下啊一轮的left
即: L_new = L ⊕ R ⊕ K
R_new = L
1 |
|
进行八轮异或加密
1 | #i03yXzXWe4QTiwJHlUZo6iqEdDkwJVviSOQ7CM3vJmM= |
i03yXzXWe4QTiwJHlUZo6iqEdDkwJVviSOQ7CM3vJmM= ← 解码后 32 字节(明文 a)
4EnYOhbivTMP5r4VYLA8cwJBFTXIeeKAoNf/3ctgLLA= ← 解码后 32 字节(enc_a)
+qyVMEei1eN3YbV/z2kjcaCKngWc2pW2/e7HwpXKaj0= ← 解码后 32 字节(enc_flag)

EXP
1 | import base64 |
NSSCTF{3c4e05db6512d51e0a93ae320c0bb69a}




