ksnctf #02 Easy Cipher
直接給了一段密文
EBG KVVV vf n fvzcyr yrggre fhofgvghgvba pvcure gung ercynprf n yrggre jvgu gur yrggre KVVV yrggref nsgre vg va gur nycunorg. EBG KVVV vf na rknzcyr bs gur Pnrfne pvcure, qrirybcrq va napvrag Ebzr. Synt vf SYNTFjmtkOWFNZdjkkNH. Vafreg na haqrefpber vzzrqvngryl nsgre SYNT.
我第一次看到這題的時候其實一直看不出什麼端倪,看到Cipher這個關鍵字我只想到了之前遇過的凱薩加密法,寫了一個小程式去試所有的位移可能也沒看到什麼結果。
過了幾天再回來看才忽然注意到其中這一串字:
SYNTFjmtkOWFNZdjkkNH
ksnctf flag的形式是FLAG_123456xyz
,整串密文中只有這字一串的長度夠長、開頭都是大寫而且前四個字母沒有重複,用FLAG這四個字去分析了一下還真的發現有規律,查了一下資料後得知這是所謂的ROT-13,一種簡易的替換式密碼。
知道加密方法就好辦事了,ROT-13屬於對等加密(reciprocal cipher),所以只要把密文再使用ROT-13加密一次即可回復原始文字。簡單的PHP程式就可以解密:
1 |
|
ROT XIII is a simple letter substitution cipher that replaces a letter with the letter XIII letters after it in the alphabet. ROT XIII is an example of the Caesar cipher, developed in ancient Rome. Flag is FLAGSwzgxBJSAMqwxxAU. Insert an underscore immediately after FLAG.
網路上也有現成的rot13.com可以直接ROT-13轉換。
看到FLAG別太興奮直接複製提交,在FLAG後面還要自己再加個底線才符合FLAG_123456xyz
的形式,密文的最後一句話有貼心的提醒XD。
我絕對不是那個看到FLAG太興奮就直接複製貼上結果Wrong Flag在電腦前面煩惱的人