NSSCTF-Crypto(1~15)

本文最后更新于:2023年9月14日 中午

《从0开始的密码学世界生活》😋慢慢学密码方向

有两个有各种加解密的网站

在线工具

Bugku CTF

[鹤城杯 2021]easy_crypto

解压后文件内容是社会主义核心价值观,查了一下竟然有核心价值观编码,有点逆天,那就直接用工具解码即可。

下面贴上两个网站

核心价值观编码-加解密1

核心价值观编码-加解密2


[强网拟态 2021]拟态签到题

打开txt文件,发现看不懂,这什么东西?

2309061

GPT一下

2309062

GPT倒是一眼看出来了,base64编码,直接解码即可,仍然上面的两个网站任意一个即可


[SWPUCTF 2021 新生赛]crypto8

打开txt后又是一段乱码:73E-30U1&>V-H965S95]I<U]P;W=E<GT`

根据题目上面的标签提示,推测是UUencode加密

用工具解密即可

NSSCTF{cheese_is_power}

有个小问题哈,这些编码的具体实现方式我们不用具体了解吗难道🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔🤔,直接用工具就行了吗?


[SWPUCTF 2021 新生赛]crypto7

打开txt,原文如下

69f7906323b4f7d1e4e972acf4abfbfc,得到的结果用NSSCTF{}包裹。

根据标签,发现是MD5加密

直接解密即可,MD5解密

NSSCTF{md5yyds}


[SWPUCTF 2021 新生赛]crypto6

打开txt,原文如下

1
2
3
4
5
var="************************************"
flag='NSSCTF{' + base64.b16encode(base64.b32encode(base64.b64encode(var.encode()))) + '}'
print(flag)

小明不小心泄露了源码,输出结果为:4A5A4C564B36434E4B5241544B5432454E4E32465552324E47424758534D44594C4657564336534D4B5241584F574C4B4B463245365643424F35485649534C584A5A56454B4D4B5049354E47593D3D3D,你能还原出var的正确结果吗?
  • 可以看出加密是先base64,再base32,再base16
  • 所以解密我们就先反过来即可,16 → 32 → 64,用上面的解密网站
  • 得到5e110989-dc43-1bd3-00b4-9009206158fe
  • 所以flag为NSSCTF{5e110989-dc43-1bd3-00b4-9009206158fe}

[SWPUCTF 2021 新生赛]ez_caesar

打开后是一个.py文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import base64
def caesar(plaintext):
str_list = list(plaintext)
i = 0
while i < len(plaintext):
if not str_list[i].isalpha():
str_list[i] = str_list[i]
else:
a = "A" if str_list[i].isupper() else "a"
str_list[i] = chr((ord(str_list[i]) - ord(a) + 5) % 26 + ord(a) or 5)
i = i + 1

return ''.join(str_list)

flag = "*************************"
str = caesar(flag)
print(str)

#str="U1hYSFlLe2R0em1mYWpwc3RiaGZqeGZ3fQ=="

这,有点看不懂,GPT一下吧,下面是GPT的解释 > 这段代码首先导入了base64模块,然后定义了一个名为caesar的函数,该函数接受一个明文字符串作为输入,并返回加密后的字符串。 在函数内部,首先将明文字符串转换为字符列表str_list,然后使用while循环遍历明文字符串的每个字符。 在每次循环中,首先检查当前字符是否为字母。如果不是字母,则将字符保持不变。如果是字母,则根据字母的大小写确定字母表的起始位置(大写字母从'A'开始,小写字母从'a'开始),然后使用凯撒密码的规则对字母进行替换。替换的规则是将字母的Unicode码减去起始位置的Unicode码,再加上一个固定的位移量5,然后对26取模,最后再加上起始位置的Unicode码或者5。这样可以确保替换后的字符仍然是一个字母。 循环结束后,将字符列表转换回字符串,并将加密后的字符串打印出来。 最后一行的注释掉的代码是一个经过base64编码的字符串,你可以在需要时将其解码。

那我就懂了,嘻嘻

  • 凯撒密码(Caesar cipher),原来就是凯撒密码
  • 最后一行注释掉的是base64编码后的结果
  • 那我们就先base64解码,再凯撒解码应该就行
  • 注意凯撒解码还需要一个偏移量,这里的偏移量就是5
  • 最后得到 NSSCTF{youhaveknowcaesar}

[SWPUCTF 2021 新生赛]crypto10

txt中的内容为:AFFPGS{pbatenghyngvbaf!!!},建议直接秒了

观察标签可以看出是个什么ROT加密,直接搜工具解密即可

NSSCTF{congratulations!!!}


[鹤城杯 2021]A_CRYPTO

逆天文本:4O595954494Q32515046324757595N534R52415653334357474R4N575955544R4O5N4Q46434S4O59474253464Q5N444R4Q51334557524O5N4S424944473542554O595N44534O324R49565746515532464O49345649564O464R4R494543504N35

从此知道了ciphey的存在,准备配置啊啊啊啊

全自动解密解码神器 — Ciphey

Windows安装ciphey编码工具,编码工具战神,cry简单题绝对克星!

不知道为啥,就安装成功了,但是只能在windows下的cmd中使用,等会还要在kali里面再下一个ciphey

解密命令为:

ciphey -t "4O595954494Q32515046324757595N534R52415653334357474R4N575955544R4O5N4Q46434S4O59474253464Q5N444R4Q51334557524O5N4S424944473542554O595N44534O324R49565746515532464O49345649564O464R4R494543504N35"

202309071.png

所以flag为:"NSSCTF{W0w_y0u_c4n_rea11y_enc0d1ng!}"

0 0 0 下面的东西可以忽略, byd配环境配了将近一上午都没在kali里面配好,不是python版本问题就是什么PATH路径问题,到最后也没解决,草! 这里由于百度网盘下载的太慢,一顿搜索后发现了其他的方法,怎么没早点发现啊😭 不多说好吧,要是有有缘人看到算是你赚了🤭 下面就是kali中ciphey的配置 http://old.kali.org/virtual-images/kali-2021.2/ https://kali.download/


[SWPUCTF 2021 新生赛]pigpig

根据提示是一个什么猪圈密码

在线解密即可

NSSCTF{whenthepigwanttoeat}

什么时候🐖想吃?🐷


[SWPUCTF 2021 新生赛]ez_rsa

打开txt内容如下,搜了一下确实是最最基础的RSA,

image-20230908233108248

那就了解一下RSA是什么吧,嘻嘻😍

一个简单的介绍视频RSA 算法基本原理_哔哩哔哩_bilibili

简单来说就是:

  • A把一个公钥(e,N)给B,B把想发给A的信息 m 用(e,N)加密成 c 后发给A,A有个私钥(d,N),用私钥解密即可,这里的 d 只有A掌握,别人很难知道(涉及大整数分解问题),所以方案安全。

  • 就是保证了信息加密是容易的,而反向解密是困难的

  • 过程再稍微稍微详细一点就是:

    • 选两个大质数p和q,且p!=q,计算N=p*q,N就算出来了
    • 然后计算N的欧拉函数 φ(N)=(p-1)(q-1)
    • 然后你自己选个e, 1<e<φ(N),且与φ(N)互质,
    • 由e和φ(N)互质,(e,φ(N))=1,再由辗转相除法,则一定有ed - φ(N)k = 1
    • 那么由e就可以算出d,如下图(下图中的p1,p2就是p,q)
    • image-20230908235228225
    • enmmmm,就是这样🐌

下面是视频里面的一个小实例,帮助理解

image-20230908233527952
image-20230908234751944

虽然有些原理还不太清楚,但学到现在这题基本就能解决了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import gmpy2   #一个库,就是能算很多数学运算的 
from hashlib import md5 #hashlib 模块是 Python 中用于进行哈希计算的标准库模块之一。这里使用了 md5 哈希算法,这是其中的一种,通常用于生成数据的 MD5 哈希值。

p = 1325465431
q = 152317153
e = 65537

phi = (p-1)*(q-1)

d = gmpy2.invert(e, phi) #非常的关键❤,该函数计算了一个整数 e 的模逆,也就是找到一个整数 d,使得 (d * e) % phi = 1 成立。%表示取余操作

flag = md5(str(d).encode())
print("flag is : NSSCTF{%s}"%flag.hexdigest())

flag is : NSSCTF{08bb8fb628da85923e5734a75ac19ffe}


[BJDCTF 2020]base??

打开后是这串东西

image-20230909003141021

直接赛博厨子解决了😂,相当于换表操作,查了一下,写python代码还有点复杂🤔,等会再看一下(

image-20230909005020849

[SWPUCTF 2021 新生赛]traditional

打开后是个什么东西,不懂,明天再看吧,byd已经1点力,还没刷牙😭

image-20230909010611371

NSSCTF-Crypto(1~15)
http://viper2383.github.io/2023/09/09/NSSCTF-Crypto(1~15)/
作者
w1per3
发布于
2023年9月9日
许可协议