1. 程式人生 > >2018西安工業大學第二屆萌新線上賽密碼學 WP

2018西安工業大學第二屆萌新線上賽密碼學 WP

本次WP,由雒大佬提供!

0x1 base16

直接轉字串

flag{it_is_b4s3sixteen}

0x2 base32

 直接base32

 0x3 base64

 直接base64解碼

0x4 unicode

 直接轉字串

0x5 easy_caesar 

 凱撒解密

 得到flag

0x6 奇怪的字串

R1kzRE1RWldHRTNET04yQ0dNNERHTkpUR0laVFFNWlRHTVpUTU5KV0dFWlRPTlJUR00zVEdOSlRHNDNETU5SUkdNWlRHTkpXR01aVElOUldHTVlER01KVEhBM0RNTlJSR1lZVE1NWlRHWVpUT05SUkdNWVRHTVpYSVE

先拿base64解密

 提示失敗,在字串後面加上=

得到結果

嘗試再次進行base64解碼

 提示失敗,再次加=

 很明顯不是我們想要的

嘗試base32

得到一個十六進位制

轉字串

 得到flag

0x7 easy_rsa1

前面轉了那麼多十六進位制到字串

密文一看就知道轉字元有flag

這道題 如果沒發現特點,可以按rsa常規的套路去做,n裡面出現了非十六進位制數

說明n在這裡肯定用不了

但是給出e=1,rsa加密中 如果e=1 c=m mod n,假如m 與  n 互質,c=m

0x8 easy_rsa0

n = 14783703403657671882600600446061886156235531325852194800287001788765221084107631153330658325830443132164971084137462046607458019775851952933254941568056899
e = 65537
c = 1185049716299203720803420810904079629528218564331492627830830396094648931160053948162527867338891026371024154472597960669760006765402877890901585728358989

常規題目,嘗試分解n

在factordb上查詢 沒有得到結果

用yafu進行分解

分解成功得到 p和q

然後通過p、q、e破解出 d

import gmpy
from Crypto.PublicKey import RSA
n = 14783703403657671882600600446061886156235531325852194800287001788765221084107631153330658325830443132164971084137462046607458019775851952933254941568056899
c = 1185049716299203720803420810904079629528218564331492627830830396094648931160053948162527867338891026371024154472597960669760006765402877890901585728358989
e = long(65537)

p = 121588253559534573498320028934517990374721243335397811413129137253981502291631
q = 121588253559534573498320028934517990374721243335397811413129137253981502291629

d = long(gmpy.invert(e,(p-1)*(q-1)))

key = RSA.construct((n,e,d))

print key

print key.decrypt(c)

print hex(key.decrypt(c))

print hex(key.decrypt(c))[2:-1].decode('hex')

然後直接利用私鑰解密

得到明文 不過明文是十進位制 需要轉成字串

最後得到flag{rsa_1s_s0_interesting}

0x9 cipher

給出的是一串十六進位制

我們將其轉成字串得到

 看著很懵逼,對其進行分析,發現有很多字串重複,於是將其在百度上搜索

替換與置換密碼

對其進行凱撒解密

發現關鍵詞 cipher 通過分析得知 該字串是通過凱撒加密且位移位3後的字串

將其全文進行凱撒解密得到

出現了很多正常的英文單詞

且其中出現了rot46,於是百度搜索

並沒有關於rot46的資訊,但是看到rot47

於是自己寫rot46的指令碼

得到的結果依然不對

後面分析rot47

說是對ascii值進行置換

於是嘗試和對全文進行位移為3的ascii置換

s="4c712366757c7377726a7564736b7c2f23642346646876647523666c736b68752f23646f7672236e71727a71236476234664687664752a7623666c736b68752f23776b6823766b6c697723666c736b68752f234664687664752a7623667267682372752346646876647523766b6c69772f236c762372716823726923776b6823766c70736f687677236471672370727677237a6c67686f7c236e71727a7123687166757c73776c7271237768666b716c7478687631234c77236c76236423777c73682372692376786576776c7778776c727123666c736b6875236c71237a6b6c666b236864666b236f6877776875236c7123776b6823736f646c7177687b77236c76237568736f6466686723657c2364236f6877776875237672706823696c7b686723717870656875237269237372766c776c7271762367727a7123776b6823646f736b64656877312349727523687b6470736f682f237a6c776b2364236f68697723766b6c697723726923362f2347237a72786f67236568237568736f6466686723657c23442f2348237a72786f672365686672706823452f236471672376722372713123576b68237068776b7267236c76237164706867236469776875234d786f6c7876234664687664752f237a6b722378766867236c77236c71236b6c762373756c7964776823667275756876737271676871666831100d576b6823687166757c73776c727123767768732373687569727570686723657c23642346646876647523666c736b6875236c76237269776871236c71667275737275647768672364762373647577237269237072756823667270736f687b2376666b687068762f237678666b23647623776b6823596c6a6871c6ab756823666c736b68752f236471672376776c6f6f236b647623707267687571236473736f6c6664776c7271236c7123776b6823555257343623767c7677687031234476237a6c776b23646f6f23766c716a6f6830646f736b646568772376786576776c7778776c727123666c736b6875762f23776b682346646876647523666c736b6875236c76236864766c6f7c236575726e687123647167236c71237072676875712373756466776c666823726969687576236876766871776c646f6f7c237172236672707078716c6664776c72712376686678756c777c3123100d5d707b6b5d36776d5c5a596d5c5b4d69645b51695d5a497d685b3340"
result=""
i=0
while i < len(s):
	result+=chr(int(s[i:i+2],16)-3)
	i+=2
	print result

得到結果

前兩段話是摘自wiki上關於凱撒加密的介紹

最後一句就是flag了

直接base64解碼

熟悉的flag味道

轉字串

flag{caecar_is_easy}

0x10 總結

這次的密碼題簡單的非常簡單,難的難在腦洞,真正的技術難題感覺並沒有。