XCTF新手区Crypto writeup
1.base64
直接拿去base64 decode就行:cyberpeace{Welcome_to_new_World!}
2.Caesar
这题凯撒密码。
分别设置位移量为1-25,输出25条结果后看到位移量为12时有意义,故位移量为12:cyberpeace{you_have_learned_caesar_encryption}
3.Morse
摩斯密码,我们在记事本里将1全部替换成“-”,将0全部替换成“.”,得到密文:
-- --- .-. ... . -.-. --- -.. . .. ... ... --- .. -. - . .-. . ... - .. -. --.
摩斯密码解码:
将其转成小写就拿到了flag。
4.混合编码
原文:JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM2ODsmIzY5OyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjNTI7JiM3NjsmIzEyMjsmIzEwNzsmIzUzOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc3OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiMxMDc7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzg7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjODQ7JiM2OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzUwOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc4OyYjMTA1OyYjNTY7JiM1MzsmIzc4OyYjMTIxOyYjNTY7JiM1MzsmIzc5OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM5OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjNjk7JiMxMTk7JiM3NzsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjNjU7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM2OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjMTA3OyYjNTM7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM4NDsmIzEwNzsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzEyMDsmIzc2OyYjMTIyOyYjNjk7JiMxMjA7JiM3ODsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjMTAzOyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjMTE5Ow==
一看就是base64,先解码,解码出来是这样:
LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw
猜想是unicode的HEX编码,拿去解码:
LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw
再次猜想是baae64:
/119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100
这里大佬说是ASCII,把它放进eclipse,将所有“/”替换为“,”,构建数组,转为字符串:
public class Main {
public static void main(String[] args) {
int[] a = {119,101,108,99,111,109,101,116,111,97,116,116,97,99,107,97,110,100,100,101,102,101,110,99,101,119,111,114,108,100};
String result = "";
for(int i:a){
char c = (char)i;
result+=c;
}
System.out.println(result);
}
}
得到结果:
5.幂数加密
密文:8842101220480224404014224202480122
7.easy_RSA
在一次RSA**对生成中,假设p=473398607161,q=4511491,e=17
求解出d
这道题简单粗暴,直接上python3代码:
#已知p,q,e,求解***d
def egcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, y, x = egcd(b % a, a)
return (g, x - (b // a) * y, y)
def modinv(a, m):
g, x, y = egcd(a, m)
if g != 1:
raise Exception('模数分解失败')
else:
return x % m
def main():
e=17
p=473398607161
q=4511491
d = modinv(e,(p-1)*(q-1))
print(d)
if __name__ == '__main__':
main()
执行上述代码就得到flag:
8.不仅仅是Morse
--/.-/-.--/..--.-/-..././..--.-/..../.-/...-/./..--.-/.-/-./---/-/...././.-./..--.-/-.././-.-./---/-.././..../..../..../..../.-/.-/.-/.-/.-/-.../.-/.-/-.../-.../-.../.-/.-/-.../-.../.-/.-/.-/.-/.-/.-/.-/.-/-.../.-/.-/-.../.-/-.../.-/.-/.-/.-/.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../-.../.-/.-/.-/-.../-.../.-/.-/-.../.-/.-/.-/.-/-.../.-/-.../.-/.-/-.../.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/-.../-.../.-/.-/-.../-.../-.../.-/-.../.-/.-/.-/-.../.-/-.../.-/-.../-.../.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/.-/.-/.-/-.../-.../.-/-.../-.../.-/.-/-.../-.../.-/.-/-.../.-/.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/-.../.-/.-/-.../-.../.-/-.../.-/.-/.-/.-/-.../-.../.-/-.../.-/.-/-.../-.../.-
将斜杠去除得到摩斯密码:
-- .- -.-- ..--.- -... . ..--.- .... .- ...- . ..--.- .- -. --- - .... . .-. ..--.- -.. . -.-. --- -.. . .... .... .... .... .- .- .- .- .- -... .- .- -... -... -... .- .- -... -... .- .- .- .- .- .- .- .- -... .- .- -... .- -... .- .- .- .- .- .- .- -... -... .- -... .- .- .- -... -... .- .- .- -... -... .- .- -... .- .- .- .- -... .- -... .- .- -... .- .- .- -... -... .- -... .- .- .- -... .- .- .- -... .- .- -... .- -... -... .- .- -... -... -... .- -... .- .- .- -... .- -... .- -... -... .- .- .- -... -... .- -... .- .- .- -... .- .- -... .- .- -... .- .- .- .- -... -... .- -... -... .- .- -... -... .- .- -... .- .- -... .- .- .- -... .- .- -... .- .- -... .- .- -... .- -... .- .- -... -... .- -... .- .- .- .- -... -... .- -... .- .- -... -... .-
解码:
MAYnullBEnullHAVEnullANOTHERnullDECODEHHHHAAAAABAABBBAABBAAAAAAAABAABABAAAAAAABBABAAABBAAABBAABAAAABABAABAAABBABAAABAAABAABABBAABBBABAAABABABBAAABBABAAABAABAABAAAABBABBAABBAABAABAAABAABAABAABABAABBABAAAABBABAABBA
may be have another decode hhhh AAAAABAABBBAABBAAAAAAAABAABABAAAAAAABBABAAABBAAABBAABAAAABABAABAAABBABAAABAAABAABABBAABBBABAAABABABBAAABBABAAABAABAABAAAABBABBAABBAABAABAAABAABAABAABABAABBABAAAABBABAABBA
根据提示,后面这截由A和B组成的估计是培根密码,直接拿来解密,得到:
这里也可以自己写python代码:
https://blog.csdn.net/weixin_42109012/article/details/97644262
上一篇: Django使用同一局域网访问其他电脑