攻防世界crypto

2021-09-27 12:01:28 字數 3701 閱讀 8967

1、base64

看一下題目就知道這是乙個base64加密,我們可以直接在網上搜尋解密工具,也可以使用下面指令碼進行解密

import base64

a = open('d:\\crypto1.txt','r')

s = a.read()

print(base64.b64decode(s))

flagcyberpeace2、caesar這一題也可以直接用解密工具,也可以使用以下指令碼

a = open('d:\\caser.txt','r')

ciphertext = a.read()

b='abcdefghijklmnopqrstuvwxyz'

for key in range(26):

flag = ''

for i in ciphertext:

if i in b:

num = b.find(i)

num = num - key

if num<0:

num = num + len(b)

flag = flag + b[num]

else:

flag = flag + i

print('key %s :%s'%(key,flag))

得到flag

3、railfence這乙個是柵欄密碼,看一下題目描述

題目描述:被小魚一連將了兩軍,你心裡更加不服氣了。兩個人一起繼續往前走, 一路上雜耍賣藝的很多,但是你倆毫無興趣,直直的就衝著下乙個謎題的地方去了。 到了一看,這個謎面看起來就已經有點像答案了樣子了,旁邊還畫著一張畫,是一副農家小院的 圖畫,上面畫著乙個農婦在柵欄裡面喂5只小雞,你嘿嘿一笑對著小魚說這次可是我先找到答案了。

題目中說喂5只小雞,應該是5個欄數,但當我們使用正常的柵欄解密的話根本解不出來。這是乙個普通柵欄密碼指令碼

#!/usr/bin/env python3

# 常見的柵欄解密

e = input('清輸入要解密的字串\n')

elen = len(e) # 計算字串長度

field =

for i in range(2, elen): # 做乙個迴圈,從2開始到數字elen(字串長度)

if elen % i == 0: # 計算那些數字能整除字串長度

for f in field:

b = elen // f # 用字串實際長度除以上面計算出能整出的數字f

result =

for i in range(elen): # 字串有多少位,就迴圈多少次

a = i % b

result.update() # 字串截斷,並更新資料

d = ''

for i in range(b):

d += result[i]

但這樣解不出來。後來查了一下柵欄密碼還有乙個www型的。而這個題就是www型的。

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

傳統型

假如有乙個字串:123456789

取字串長度的因數進行分組,假如key=3

1 2 3 \\分組情況,每三個數字一組,分為三組

4 5 6

7 8 9

然後每一組依次取乙個數字組成乙個新字串:147258369 \\加密完成的字串

解密方法:

遇到這種的柵欄加密的密文,解密的key值就是字串的長度除以加密的key值 (de_key = len / key)再用de_key將密文字串加密就可以得到原文本串。

www型

同樣乙個字串:123456789

key=3

1----5----9 \\讓數字以w型組織,同樣是三組,但每組的數量不一定相同

-2--4-6--8

--3----7--

加密密文:159246837

解密方法:

www型的加密金鑰就不只能是字串長度的因子,小於其長度的任何乙個數都可能是其key值,所以第一步也是確定金鑰。

字串:159246837

假設 key = 3 \\具體情況下可以遍歷key值,每個值都算一次

確定key值之後就可以確定字串的排部方法,即:

分組2:-1-1-2-2 \\確定長度的排布之後將密文帶入解密即可

分組3:--1---2-

原文:123456789

www型的可以直接在這個**解密

4、轉輪機加密

直接上個指令碼吧

import re

sss = '1: < zwaxjgdlubviqhkypntcrmosfe < 2: < kpbelnaczdtrxmjqoyh**sfuwi < 3: < bdmaizvrnsjuwfhteqgyxplock < 4: < rplndvhgfcuktebsxqyizmjwao < 5: < ihfrlabeuotsgjvdkcpmnzqwxy < 6: < amkghiwpnycjbfzdrusloqxvet < 7: < gwthspybxizulvkmrafdceonjq < 8: < nozutwdcvrjlxkisefapmyghbq < 9: < xpltdsrfhenyvubmcqwaoikzgj < 10: < udnajfbowt**rsczqkelmxyihp < 11 < mnbvcxzqwertpoiuyalskdjfhg < 12 < lvncmxzpqoweiurytasbkjdfhg < 13 < jzqawsxcderfvbgtyhnumkilop

m = 'nfqksevoqofnp'

# 將sss轉化為列表形式

content=re.findall(r'< (.*?)

# re.s:dotall,此模式下,"."的匹配不受限制,可匹配任何字元,包括換行符

iv=[2,3,7,5,13,12,9,1,8,10,4,11,6]

print(content)

vvv=

for i in range(13):

index=content[iv[i]-1].index(m[i])

print(vvv)

for i in range(0,26):

flag=""

for j in range(13):

flag += content[iv[j]-1][(vvv[j]+i)%26]

print(flag.lower())

flag就是這乙個,沒有花括號

攻防世界 crypto新手練習區

1 railfence 題目傳統型 假如有乙個字串 123456789 取字串長度的因數進行分組,假如key 3 1 2 3 分組情況,每三個數字一組,分為三組 4 5 6 7 8 9 然後每一組依次取乙個數字組成乙個新字串 147258369 加密完成的字串 123456 www型 同樣乙個字串 ...

攻防世界crypto練習 冪數加密

題目描述 你和小魚終於走到了最後的乙個謎題所在的地方,上面寫著一段話 親愛的朋友,很開心你對網路安全有這麼大的興趣,希望你一直堅持下去,不要放棄 學到一些知識,走進廣闊的安全大世界 你和小魚接過謎題,開始了耐心細緻的解答。flag為cyberpeace 解析 原以為是二進位制冪數加密法,但是比照之後...

攻防世界mfw 攻防世界 Web mfw

題目資訊 image.png 工具 githack,dirsearch 知識點 git漏洞 審計 開啟題目場景,檢查 發現這樣乙個頁面 image.png 訪問.git目錄,疑似存在git原始碼洩露 image.png 再用dirsearch掃瞄,發現git原始碼洩露 使用 githack獲取原始碼...