那些年做過的ctf之加密篇

wyzsk發表於2020-08-19
作者: 好基友一輩子 · 2015/11/03 10:25

最近ctf做的比較多,順便整理一下做個筆記,大概有加密篇、隱寫篇、逆向破解和web方向的幾篇文章,整理出來之後會陸續發出來。

0x01 Base64


Base64: ZXZhbCgkX1BPU1RbcDRuOV96MV96aDNuOV9qMXVfU2gxX0oxM10pNTU2NJC3ODHHYWJIZ3P4ZWY=

Base64編碼要求把3個8位位元組(3*8=24)轉化為4個6位的位元組(4*6=24),之後在6位的前面補兩個0,形成8位一個位元組的形式。 如果剩下的字元不足3個位元組,則用0填充,輸出字元使用'=',因此編碼後輸出的文字末尾可能會出現1或2個'='

Base32: Base32和Base64相比只有一個區別就是,用32個字元表示256個ASC字元,也就是說5個ASC字元一組可以生成8個Base字元,反之亦然。

線上編解碼:http://base64.xpcha.com/

0x02 希爾密碼


希爾密碼:密文: 22,09,00,12,03,01,10,03,04,08,01,17 (明文:wjamdbkdeibr

解題思路:使用的矩陣是 1 2 3 4 5 6 7 8 10

原文連結:http://bobao.360.cn/ctf/learning/136.html

百度百科:http://baike.baidu.com/link?url=R6oWhCdKvzlG8hB4hdIdUT1cZPbFOCrpU6lJAkTtdiKodD7eRTbASpd_YVfi4LMl7N8yFyhVNOz5ki6TC7_5eq

0x03 柵欄密碼


柵欄密碼:把要加密的明文分成N個一組,然後把每組的第1個字連起來,形成一段無規律的話。

密文樣例:tn c0afsiwal kes,hwit1r  g,npt  ttessfu}ua u  hmqik e {m,  n huiouosarwCniibecesnren.

解密程式:

char s[]= "tn c0afsiwal kes,hwit1r  g,npt  ttessfu}ua u  hmqik e {m,  n huiouosarwCniibecesnren.";  
char t[86]= "";  
int i,j,k;
k=0;
for (i=0;i<17;i++)  
{  
      for(j=0;j<5;j++)  
      {  
                t[k++]= ch[j*17+i];  
      }  
}  
for(i=0;i<85;i++)
{
    printf("%c",t[i]);
}  

原文連結:http://blog.csdn.net/shinukami/article/details/45980629

0x04 凱撒密碼


凱撒密碼:透過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。

密文樣例:U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJG*bRH7YJH7YSH]*=93dVZ3^S8*$:8"&:9U]RH;g=8Y!U92'=j*$KH]ZSj&[S#!gU#*dK9\.

解題思路:得知是凱撒加密之後,嘗試進行127次輪轉爆破:

#!python
lstr="""U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJG*bRH7YJH7YSH]*=93dVZ3^S8*$:8"&:9U]RH;g=8Y!U92'=j*$KH]ZSj&[S#!gU#*dK9\."""  
  
for p in range(127):  
    str1 = ''  
    for i in lstr:  
        temp = chr((ord(i)+p)%127)  
        if 32<ord(temp)<127 :  
            str1 = str1 + temp   
            feel = 1  
         else:  
             feel = 0  
             break  
     if feel == 1:  
         print(str1)

原文連結:http://blog.csdn.net/shinukami/article/details/46369765

0x05 Unicode


密文樣例:\u5927\u5bb6\u597d\uff0c\u6211\u662f\u0040\u65e0\u6240\u4e0d\u80fd\u7684\u9b42\u5927\u4eba\uff01\u8bdd\u8bf4\u5fae\u535a\u7c89\u4e1d\u8fc7\

線上解密:tool.chinaz.com/Tools/Unicode.aspx

0x06 brainfuck


型別:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.

利用BFVM.exe直接解密

用法 loadtxt 1.txt

線上解密:http://www.splitbrain.org/services/ook

0x07 摩斯密碼


密文樣例:--  ---  .-.  ...  .

0x08 jsfuck


密文中 ()[]{}!+

線上解密:

0x09 培根密碼


培根所用的密碼是一種本質上用二進位制數設計的。不過,他沒有用通常的0和1來表示,而是採用a和b。

百科:http://baike.baidu.com/link?url=acaeI3babB7MogPQFh98rDAVSwHfPwh-HnEFTb9cx7DZ5Nz4MkMA14H4SDjBNnOdBsJpliNYa1vnfikQGqvA7K

0x0A 豬圈密碼又稱共濟會密碼


百度百科:http://baike.baidu.com/link?url=yN39kWG2pGd9XHo3RjeUAbd7xs0QlnJ2uHzCJfxC03V-fJcQUdfcJ-WuGoAkKGFVE0AxFK4-98wa4FtzvxRA0_

0x0B CRC32


密文樣例:4D1FAE0B

#!python
import zlib
def crc32(st):
    crc = zlib.crc32(st)
    if crc > 0:
      return "%x" % (crc)
    else:
      return "%x" % (~crc ^ 0xffffffff)

原文連結:http://blog.csdn.net/ab748998806/article/details/46382017

對於其他一些未知密文,可嘗試到下列幾個網站轉換試試,看看運氣

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章