攻防世界-Crypto-新⼿练习区wp
base64
难度:1.0
元宵节灯谜是⼀种古⽼的传统民间观灯猜谜的习俗。因为谜语能启迪智慧⼜饶有兴趣,灯谜增添节⽇⽓氛,是⼀项很有趣的活动。你也很喜欢这个游戏,这不,今年元宵节,⼼⾥有个⿊客梦的你,约上你青梅⽵马的好伙伴⼩鱼,来到了cyberpeace的攻防世界猜谜⼤会,也想着⼀展⾝⼿。你们⼀起来到了⼩孩⼦叽叽喳喳吵吵闹闹的地⽅,你俩抬头⼀看,上⾯的⼤红灯笼上写着⼀些奇奇怪怪的字符串,⼩鱼正纳闷呢,你神秘⼀笑,我知道这是什么了。
打开可以看到⼀根 base64 加密的字符串:Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9
使⽤解密即可
cyberpeace{Welcome_to_new_World!}
Caesar
难度:1.0
你成功的解出了来了灯谜,⼩鱼⼀脸的意想不到“没想到你懂得这么多啊!” 你⼼⾥⾯有点⼩得意,“那可不是,论学习我没你成绩好轮别的我知道的可不⽐你少,⾛我们去看看下⼀个” 你们继续⾛,看到前⾯也是热热闹闹的,同样的⼤红灯笼⾼⾼挂起,旁边呢好多⼈叽叽喳喳说个不停。你⼀看⼤灯笼,上⾯还是⼀对字符,你正冥思苦想呢,⼩鱼神秘⼀笑,对你说道,我知道这个的答案是什么了
跟我⼀起读题⽬:caesar~ 凯撒~ 好的打开在线解密⽹站:
开头是字母 o ,可以得到移位的位数是 12 ,解密即可
cyberpeace{you_have_learned_caesar_encryption}
Morse
难度:1.0
⼩鱼得意的瞟了你⼀眼,神神⽓⽓的拿⾛了答对谜语的奖励,你⼼⾥暗暗较劲想着下⼀个谜题⼀定要⽐⼩鱼更快的解出来。不知不觉你们⾛到了下⼀个谜题的地⽅,这个地⽅有些奇怪。上⾯没什么提⽰信息,只是刻着⼀些0和1,感觉有着⼀些奇怪的规律,你觉得有些熟悉,但是就是想不起来这些01代表着什么意思。⼀旁的⼩鱼看你眉头紧锁的样⼦,扑哧⼀笑,对你讲“不好意思我⼜猜到答案了。”(flag格式为cyberpeace{xxxxxxxxxx},均为⼩写)
将 1 替换为 - ,将 0 替换为 . ,解密即可
cyberpeace{morsecodeissointeresting}
幂数加密
难度:2.0
你和⼩鱼终于⾛到了最后的⼀个谜题所在的地⽅,上⾯写着⼀段话“亲爱的朋友,很开⼼你对⽹络安全有这么⼤的兴趣,希望你⼀直坚持下去,不要放弃,学到⼀些知识,⾛进⼴阔的安全⼤世界”,你和⼩鱼接过谜题,开始了耐⼼细致的解答。flag为cyberpeace{你解答出的⼋位⼤写字母}
打开⽂件看到⼀堆数字,观察数字是由 0,1,2,4,8 这⼏个数字组成的,不难发现都是2的指数幂,然后百度了⼀下,发现有⼀种⼆进制幂数加密
简单的来说,就是所有的数都能由 0,1,2,4,8 这⼏个数字相加得到,由此我们可以将字母表的字母按照顺序变换成相应的数字,然后分成若⼲个 0,1,2,4,8 相加,从⽽达到加密的⽅式
对于这题来讲,就是:
然后将数值对应字母,1 ~ A ... 26 ~ Z,得到⼋个字母:WELLDONE
或者是说使⽤脚本
#! /usr/bin/env python
#coding=utf-8
a="8842101220480224404014224202480122"
a=a.split("0")
flag=''
for i in range(0,len(a)):
str = a[i]
list=[]
sum=0
for j in str:
list.append(j)
length = len(list)
for k in range(0,length):
sum+=int(list[k])
flag+=chr(sum+64)
print flag
也可以达到相同的效果python新手代码练习
cyberpeace{WELLDONE}
Railfence
难度:2.0
被⼩鱼⼀连将了两军,你⼼⾥更加不服⽓了。两个⼈⼀起继续往前⾛,⼀路上杂耍卖艺的很多,但是
你俩毫⽆兴趣,直直的就冲着下⼀个谜题的地⽅去了。到了⼀看,这个谜⾯看起来就已经有点像答案了样⼦了,旁边还画着⼀张画,是⼀副农家⼩院的图画,上⾯画着⼀个农妇在栅栏⾥⾯喂5只⼩鸡,你嘿嘿⼀笑对着⼩鱼说这次可是我先到答案了。
根据提⽰得知是栅栏密码,但是去栅栏密码的解密⽹站试了试都不对
傻眼了,百度了⼀下,知道原来还有⼀种 “W型” 加密⽅式
解密⽹站:
栏数为 5 时,可以解密获得flag
cyberpeace{railfence_cipher_gogogo}
不仅仅是Morse
这个题⽬和我们刚刚做的那个好像啊但是为什么按照刚刚的⽅法做出来答案却不对呢” ,你奇怪的问了问⼩鱼,“可能是因为还有⼀些奇怪的加密⽅式在⾥⾯吧,我们在仔细观察观察”。两个⼈安安静静的坐下来开始思考,很耐⼼的把⾃⼰可以想到的加密⽅式⼀种种的过了⼀遍,⼗多分钟后两个⼈异⼝同声的说“我想到了!”。⼀种⾷物,格式为cyberpeace{⼩写的你解出的答案}
拿到 txt 是⼀根摩斯密码,解密⼀下
可以看到解密出来的⼀串字符的后半部分由 A、B 组成,结合题⽬中提到的“⼀种⾷物”,可以确定其为培根密码,解密即可得到flag
cyberpeace{attackanddefenceworldisinteresting}
混合编码
难度:2.0
经过了前⾯那么多题⽬的历练,耐⼼细致在解题当中是必不可少的品质,刚巧你们都有,你和⼩鱼越来越⼊迷。那么⾛向了下⼀个题⽬,这个题⽬好长好长,你知道你们只要细⼼细致,答案总会被你们做出来的,你们开始慢慢的尝试,慢慢的猜想,功夫不负有⼼⼈,在你们耐⼼的⼀步步的解答下,答案跃然纸上,你俩默契⼀笑,相视击掌⾛向了下⾯的挑战。格式为cyberpeace{⼩写的你解出的答案}
拿到后⾸先进⾏ base64 解密,可以得到:
将解密过后的再次进⾏ Unicode 解码,可以得到:
然后再次进⾏ base64 解码,得到:
将其转化为对应的 ASCII 字符,即可获得flag
cyberpeace{welcometoattackanddefenceworld}
easy_RSA
难度:3.0
解答出来了上⼀个题⽬的你现在可是春风得意,你们⾛向了下⼀个题⽬所处的地⽅你⼀看这个题⽬傻眼了,这明明是⼀个数学题啊可是你的数学并不好。扭头看向⼩鱼,⼩鱼哈哈⼀笑,让你在学校⾥⾯不好好听讲现在傻眼了吧~来我来!三下五除⼆,⼩鱼便把这个题⽬轻轻松松的搞定了。flag格式为cyberpeace{⼩写的你解出的答案}
rsa算法不过多介绍,此题使⽤⼯具,注:11是17的16进制
cyberpeace{125631357777427553}
easychallenge
难度:3.0
你们⾛到了⼀个冷冷清清的谜题前⾯,⼩鱼看着题⽬给的信息束⼿⽆策,丈⼆和尚摸不着头脑,你嘿嘿⼀笑,拿出来了你随⾝带着的笔记本电脑,噼⾥啪啦的敲起来了键盘,清晰的函数逻辑和流程出现在了电脑屏幕上,你敲敲键盘,更改了⼏处地⽅,运⾏以后答案变出现在了电脑屏幕上。
拿到题⽬是⼀个 .pyc 后缀,反编译⼀下,可以获得源码:
# uncompyle6 version 3.7.3
# Python bytecode 2.7 (62211)
# Decompiled from: Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)]
# Embedded file name: ans.py
# Compiled at: 2018-08-09 11:29:44
import base64
def encode1(ans):
s = ''
for i in ans:
x = ord(i) ^ 36
x = x + 25
s += chr(x)
return s
def encode2(ans):
s = ''
for i in ans:
x = ord(i) + 36
x = x ^ 36
s += chr(x)
return s
def encode3(ans):
return base64.b32encode(ans)
flag = ' '
print 'Please Input your flag:'
flag = raw_input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
if encode3(encode2(encode1(flag))) == final:
print 'correct'
else:
print 'wrong'
通过分析可以知道:
encode1函数是把输⼊的字符串分割成单独的字符,先转换为ascii数值,再与36异或,然后+25,接着转回字符,最后拼接为新的字符串输出。
因此对应的decode1函数应该是先-25,再与36异或(异或的逆操作还是异或)。
encode2函数是把输⼊的字符串分割成单独的字符,先转换为ascii数值,再+36,然后与36异或,接着转回字符,最后拼接为新的字符串输出。
因此对应的decode2函数应该是先与36异或,再-36。
encode3函数是调⽤base64库⾥的b32encode()函数进⾏base32运算。
因此对应的decode3函数应该是base64.b32decode()。
更改⼀下代码就可以获得解密脚本进⾏解密
import base64
def decode1(ans):
s = ''
for i in ans:
x = ord(i) - 25
x = x ^ 36
s += chr(x)
return s
def decode2(ans):
s = ''
for i in ans:
x = i^ 36
x = x - 36
s += chr(x)
return s
def decode3(ans):
return base64.b32decode(ans)
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
flag=decode1(decode2(decode3(final)))
print(flag)
参考:
cyberpeace{interestinghhhhh}
转轮机加密
难度:4.0
你俩继续往前⾛,来到了前⾯的下⼀个关卡,这个铺⾯墙上写了好多奇奇怪怪的英⽂字母,排列的的整整齐齐,店⾯前⾯还有⼀个⼤⼤的类似于⼟⽿其旋转烤⾁的架
⼦,上⾯⼀圈圈的也刻着很多英⽂字母,你是⼀个⼩历史迷,对于⼆战时候的历史刚好特别熟悉,⼀拍⼤腿:“嗨呀!我知道是什么东西了!”。提⽰:托马斯·杰斐
逊。 flag,是字符串,⼩写。
附件内容如下:
1:  < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2:  < KPBELNACZDTRXMJQOYHGVSFUWI <
3:  < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4:  < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5:  < IHFRLABEUOTSGJVDKCPMNZQWXY <
6:  < AMKGHIWPNYCJBFZDRUSLOQXVET <
7:  < GWTHSPYBXIZULVKMRAFDCEONJQ <
8:  < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9:  < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <
密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
密⽂为:NFQKSEVOQOFNP
通过百度,我们可以得知转轮机加密的基本思路,⽂字太苍⽩⽆⼒了,接下来⽤图⽰表达
依据密钥变换次序,第⼀⾏变为第⼆⾏,第⼆⾏变为第三⾏,以此类推,第⼗三⾏变为第六⾏,于是得到:
然后依据密⽂得知是⼀列⼀列的看,于是可以得到如下⼏种排列,看到第 18 列组成了⼀个有模有样的句⼦,因此它就是我们要求的flag
图⽚来源:
或者是写脚本,别⼈的wp:
import re
sss = '1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: m = 'NFQKSEVOQOFNP'
# 将sss转化为列表形式
content=re.findall(r'< (.*?) <',sss,re.S)
# 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])
vvv.append(index)
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())
fireinthehole
Normal_RSA
难度:5.0
你和⼩鱼⾛啊⾛⾛啊⾛,⾛到下⼀个题⽬⼀看你⼜⼀愣,怎么还是⼀个数学题啊⼩鱼⼜⼀笑,hhhh数学在密码学⾥⾯很重要的!现在知道吃亏了吧!你哼⼀声不服
⽓,我知道数学很重要了!但是⼯具也很重要的,你看我拿⼯具把他解出来!你打开电脑折腾了⼀会还真的把答案做了出来,⼩鱼有些吃惊,向你投过来⼀个赞叹的
⽬光
这个题我觉得需要单独提溜出来,传送门:
easy_ECC
难度:6.0
转眼两个⼈⼜⾛到了下⼀个谜题的地⽅,这⼜是⼀种经典的密码学加密⽅式⽽你刚好没有这个的⼯具,你对⼩鱼说“⼩鱼我知道数学真的很重要了,有了⼯具只是⽅便我们使⽤懂了原理才能做到,⼩鱼你教我⼀下这个缇努怎么做吧!”在⼩鱼的⼀步步带领下,你终于明⽩了ECC 的基本原理,成功的解开了这个题⽬,两个⼈相视⼀笑,快步⾛向了下⼀个题⽬所在的位置。flag格式为cyberpeace{x+y的值}
打开题⽬获得:
已知椭圆曲线加密Ep(a,b)参数为
p = 15424654874903
a = 16546484
b = 4548674875
G(6478678675,5636379357093)
私钥为
k = 546768
求公钥K(x,y)
使⽤⼯具ECCTOOLS,下载地址:
各个数值对应输⼊后点 calR ,然后将 rx 与 ry 相加即为 flag
cyberpeace{19477226185390}
完结撒花~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。