BUUCTF-Crypto(1)

386 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情

变异凯撒

加密密文:afZ_r9VYfScOeO_UL^RWUc

格式:flag{ }

a=1 f=6 位移=5,f=6 l=12 位移=6可以发现每一位的ASCII码比前一位多一,所以可以写个脚本。

key = 'afZ_r9VYfScOeO_UL^RWUc'
j = 5 #第一次位移为5,之后每位位移+1
for i in key:
    print(chr(ord(i) + j), end='')
    j += 1

得到flag

flag{Caesar_variation} 

Quoted-printable

Quoted-printable可译为“可打印字符引用编码”,编码常用在电子邮件中,如:Content-Transfer-Encoding: quoted-printable ,它是MIME编码常见一种表示方法! 在邮件里面我们常需要用可打印的ASCII字符 (如字母、数字与"=")表示各种编码格式下的字符!

Quoted-printable将任何8-bit字节值可编码为3个字符:一个等号"="后跟随两个十六进制数字(0–9或A–F)表示该字节的数值。

下载附件得到加密字符串

=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6

根据题目提示,符合Quoted-printable特征,我们直接找个解密网站

CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码

flag{那你也很棒哦}

Rabbit

Rabbit开头部分通常为U2FsdGVkX1,且可能需要密文,我们解密一下,发现不需要密钥

flag{Cute_Rabbit}

篱笆墙的影子

星星还是那颗星星哟 月亮还是那个月亮 山也还是那座山哟 梁也还是那道梁 碾子是碾子 缸是缸哟 爹是爹来娘是娘 麻油灯呵还吱吱响 点的还是那么丁点亮 哦哦

题目:felhaagv{ewtehtehfilnakgw}

判断是栅栏密码,我们选则number为2直接解密。

flag{wethinkwehavetheflag}

RSA

根据题目得知是RSA加密。两个文件一个flag.enc一个pub.key。其中key的内容为

-----BEGIN PUBLIC KEY-----

MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+

/AvKr1rzQczdAgMBAAE=

-----END PUBLIC KEY-----

openssl rsa -pubin -text -modulus -in warmup -in pub.pem

得到n,e再把n分解得到p,q。

import gmpy2
 
import rsa
 
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
 
d = gmpy2.invert(e,(q-1)*(p-1))
print(d)
 
d = 81176168860169991027846870170527607562179635470395365333547868786951080991441
 
key = rsa.PrivateKey(n, e, d, p, q)
print(key)
 
with open("flag.enc","rb") as f:
	print(rsa.decrypt(f.read(), key).decode())
 

得到flag:

flag{decrypt_256}

RSA(1)

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17

求解出d作为flga提交

参数都告诉我们了,直接脚本解就可以了

import gmpy2
from Crypto.Util import number
p = 
q = 
e = 
d = gmpy2.invert(e,(p-1)*(q-1))
print (d)
输入对应的值即可解出d
 flag{125631357777427553}