攻防世界 CRYPTO 新手练习区 答题(1-12题解)

Posted 小哈里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了攻防世界 CRYPTO 新手练习区 答题(1-12题解)相关的知识,希望对你有一定的参考价值。

传送门:https://adworld.xctf.org.cn/task/

1、base64

题目描述:元宵节灯谜是一种古老的传统民间观灯猜谜的习俗。 因为谜语能启迪智慧又饶有兴趣,灯谜增添节日气氛,是一项很有趣的活动。 你也很喜欢这个游戏,这不,今年元宵节,心里有个黑客梦的你,约上你青梅竹马的好伙伴小鱼, 来到了cyberpeace的攻防世界猜谜大会,也想着一展身手。 你们一起来到了小孩子叽叽喳喳吵吵闹闹的地方,你俩抬头一看,上面的大红灯笼上写着一些奇奇怪怪的 字符串,小鱼正纳闷呢,你神秘一笑,我知道这是什么了。

题解:

  • Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9
  • 名字都告诉你了,base64直接提交即可
cyberpeace{Welcome_to_new_World!}

2、Caesar

题目描述:你成功的解出了来了灯谜,小鱼一脸的意想不到“没想到你懂得这么多啊!” 你心里面有点小得意,“那可不是,论学习我没你成绩好轮别的我知道的可不比你少,走我们去看看下一个” 你们继续走,看到前面也是热热闹闹的,同样的大红灯笼高高挂起,旁边呢好多人叽叽喳喳说个不停。你一看 大灯笼,上面还是一对字符,你正冥思苦想呢,小鱼神秘一笑,对你说道,我知道这个的答案是什么了

题解:

  • oknqdbqmoq{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz}
  • 名字都告诉你了,凯撒直接提交即可(移位12)
cyberpeace{you_have_learned_caesar_encryption}

3、Morse

题目描述:小鱼得意的瞟了你一眼,神神气气的拿走了答对谜语的奖励,你心里暗暗较劲 想着下一个谜题一定要比小鱼更快的解出来。不知不觉你们走到了下一个谜题的地方,这个地方有些奇怪。 上面没什么提示信息,只是刻着一些0和1,感觉有着一些奇怪的规律,你觉得有些熟悉,但是就是想不起来 这些01代表着什么意思。一旁的小鱼看你眉头紧锁的样子,扑哧一笑,对你讲“不好意思我又猜到答案了。”(flag格式为cyberpeace{xxxxxxxxxx},均为小写)

题解:

  • 11 111 010 000 0 1010 111 100 0 00 000 000 111 00 10 1 0 010 0 000 1 00 10 110
  • 名字都告诉你了,莫尔斯码直接提交即可。记得套上cyberpeace{}。
cyberpeace{morsecodeissointeresting}

4、幂数加密

题目描述:你和小鱼终于走到了最后的一个谜题所在的地方,上面写着一段话“亲爱的朋友, 很开心你对网络安全有这么大的兴趣,希望你一直坚持下去,不要放弃 ,学到一些知识, 走进广阔的安全大世界”,你和小鱼接过谜题,开始了耐心细致的解答。flag为cyberpeace{你解答出的八位大写字母}

题解:

  • 8842101220480224404014224202480122,只有01248,所以是云隐密码。
  • 云影密码就是用0作为间隔,所得数字相加,再对应相应的26个字母,即可得到flag。
# 云影密码
x="8842101220480224404014224202480122"
s=x.split('0')
res=""
print(s)
for i in s:
    ch=0
    for j in i:
        ch += eval(j)
    res+=chr(ch+64)
print(res)


得到flag:

cyberpeace{WELLDONE}

5、Railfence

题目描述:被小鱼一连将了两军,你心里更加不服气了。两个人一起继续往前走, 一路上杂耍卖艺的很多,但是你俩毫无兴趣,直直的就冲着下一个谜题的地方去了。 到了一看,这个谜面看起来就已经有点像答案了样子了,旁边还画着一张画,是一副农家小院的 图画,上面画着一个农妇在栅栏里面喂5只小鸡,你嘿嘿一笑对着小鱼说这次可是我先找到答案了。

题解:

  • ccehgyaefnpeoobe{lcirg}epriec_ora_g,题目提示了栅栏密码和分为5行,所以直接丢就行。
cyberpeace{railfence_cipher_gogogo}

6、不仅仅是Morse

题目描述:“这个题目和我们刚刚做的那个好像啊但是为什么按照刚刚的方法做出来答案却不对呢” ,你奇怪的问了问小鱼,“可能是因为还有一些奇怪的加密方式在里面吧,我们在仔细观察观察”。两个人 安安静静的坐下来开始思考,很耐心的把自己可以想到的加密方式一种种的过了一遍,十多分钟后两个人 异口同声的说“我想到了!”。一种食物,格式为cyberpeace{小写的你解出的答案}

题解:

  • –/.-/-.–/…–.-/-…/./…–.-/…/.-/…-/./…–.-/.-/-./—/-/…/./.-./…–.-/-…/./-.-./—/-…/./…/…/…/…/.-/.-/.-/.-/.-/-…/.-/.-/-…/-…/-…/.-/.-/-…/-…/.-/.-/.-/.-/.-/.-/.-/.-/-…/.-/.-/-…/.-/-…/.-/.-/.-/.-/.-/.-/.-/-…/-…/.-/-…/.-/.-/.-/-…/-…/.-/.-/.-/-…/-…/.-/.-/-…/.-/.-/.-/.-/-…/.-/-…/.-/.-/-…/.-/.-/.-/-…/-…/.-/-…/.-/.-/.-/-…/.-/.-/.-/-…/.-/.-/-…/.-/-…/-…/.-/.-/-…/-…/-…/.-/-…/.-/.-/.-/-…/.-/-…/.-/-…/-…/.-/.-/.-/-…/-…/.-/-…/.-/.-/.-/-…/.-/.-/-…/.-/.-/-…/.-/.-/.-/.-/-…/-…/.-/-…/-…/.-/.-/-…/-…/.-/.-/-…/.-/.-/-…/.-/.-/.-/-…/.-/.-/-…/.-/.-/-…/.-/.-/-…/.-/-…/.-/.-/-…/-…/.-/-…/.-/.-/.-/.-/-…/-…/.-/-…/.-/.-/-…/-…/.-
  • 题目说了有摩尔斯,所以先摩尔斯一下
  • 发现一串AB字符串,所以把四个H后面的AABB到结束拿去培根解密,下面的一串小写的套上壳就是flag了
cyberpeace{attackanddefenceworldisinteresting}

7、混合编码

题目描述:经过了前面那么多题目的历练,耐心细致在解题当中是 必不可少的品质,刚巧你们都有,你和小鱼越来越入迷。那么走向了下一个题目,这个题目好长 好长,你知道你们只要细心细致,答案总会被你们做出来的,你们开始慢慢的尝试,慢慢的猜想 ,功夫不负有心人,在你们耐心的一步步的解答下,答案跃然纸上,你俩默契一笑,相视击掌 走向了下面的挑战。格式为cyberpeace{小写的你解出的答案}

题解:

  • JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM2ODsmIzY5OyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjNTI7JiM3NjsmIzEyMjsmIzEwNzsmIzUzOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc3OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiMxMDc7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzg7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjODQ7JiM2OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzUwOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc4OyYjMTA1OyYjNTY7JiM1MzsmIzc4OyYjMTIxOyYjNTY7JiM1MzsmIzc5OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM5OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjNjk7JiMxMTk7JiM3NzsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjNjU7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM2OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjMTA3OyYjNTM7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM4NDsmIzEwNzsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzEyMDsmIzc2OyYjMTIyOyYjNjk7JiMxMjA7JiM3ODsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjMTAzOyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjMTE5Ow==
  • 首先一看是个base64,先解密一下。得到一串unicode编码。
    LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw
  • 再解码一下:LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw
  • 发现又是个base64,再次解码获得ascll:/119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100
  • 手动ascll解码:
import re
s="/119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100"
s=re.split("/",s)
print(s)
flag=""
for i in range(1,len(s)):
   flag=flag+chr(int(s[i]))
print(flag)

cyberpeace{welcometoattackanddefenceworld}

8、easy_RSA

题目描述:解答出来了上一个题目的你现在可是春风得意,你们走向了下一个题目所处的地方 你一看这个题目傻眼了,这明明是一个数学题啊!!!可是你的数学并不好。扭头看向小鱼,小鱼哈哈一笑 ,让你在学校里面不好好听讲现在傻眼了吧~来我来!三下五除二,小鱼便把这个题目轻轻松松的搞定了。flag格式为cyberpeace{小写的你解出的答案}
题解:

  • 在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17,求解出d

  • 裸的RSA板子,本来想用pytgon3的,无奈gmpy2库装不上,直接cpp板子丢上去跑出来了,还好没超longlong

import gmpy2
p = 473398607161
q = 4511491
e = 17
s = (p-1)*(q-1)
d = gmpy2.invert(e,s)
print("flag is :",d)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

LL MOD;
void exgcd(LL a, LL b, LL &d, LL &x, LL &y){if(!b) { d = a; x = 1; y = 0;}else { exgcd(b, a % b, d, y, x); y -= x * (a / b); }}
LL inv(LL a){LL d, x, y;exgcd(a, MOD, d, x, y);return d == 1 ? (x + MOD) % MOD : -1;}struct node{LL mat[105][105];};node mul(node x,node y,int n,LL mod){node tmp;for(int i=0;i<n;i++)for(int j=0;j<n;j++){tmp.mat[i][j]=0;for(int k=0;k<n;k++)tmp.mat[i][j]+=(x.mat[i][k]*y.mat[k][j])%mod;tmp.mat[i][j]%=mod;}return tmp;}

int main(){
    LL p = 473398607161, q = 4511491;
    LL e = 17;
    LL n = p*q;
    LL phi_n = (p-1)*(q-1);
    MOD = phi_n;
    LL d = inv(e);
    cout<<d<<"\\n";
    return 0;
}

cyberpeace{125631357777427553}

9、easychallenge29

题目描述:你们走到了一个冷冷清清的谜题前面,小鱼看着题目给的信息束手无策,丈二和尚摸不着头脑 ,你嘿嘿一笑,拿出来了你随身带着的笔记本电脑,噼里啪啦的敲起来了键盘,清晰的函数逻辑和流程出现在 了电脑屏幕上,你敲敲键盘,更改了几处地方,运行以后答案变出现在了电脑屏幕上。

题解:

  • 附件pyc,是个编译过的python,在线反编译一下获得源代码。
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
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  = i^36
		x  = x - 36
		s += chr(x)
	return s
	
def decode2(ans):
	s = ''
	for i in ans:
		x  = ord(i) - 25
		x  = x ^ 36
		s += chr(x)
	return s

def decode3(ans):
        return base64.b32decode(ans, casefold =False, map01= None)

number ="UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==="
number = decode2(decode1(decode3(number)))
print(number)

cyberpeace{interestinghhhhh}

10、转轮机加密

题目描述:你俩继续往前走,来到了前面的下一个关卡,这个铺面墙上写了好多奇奇怪怪的 英文字母,排列的的整整齐齐,店面前面还有一个大大的类似于土耳其旋转烤肉的架子,上面一圈圈的 也刻着很多英文字母,你是一个小历史迷,对于二战时候的历史刚好特别熟悉,一拍大腿:“嗨呀!我知道 是什么东西了!”。提示:托马斯·杰斐逊。 flag,是字符串,小写。

题解:

  • 题目已经说了是转轮机加密:
    就是一个轮子,上面有很多字母在转。
    1、首先我们根据密钥来进行重新排列轮子,密钥的数字就代表第几个轮子,如2,3,7,5…代2、表第1行换成原来第2行,第2行换成原来第3行。
    3、排好后根据密文,进行行内排列,如 KPBELNACZDTRXMJQOYHGVSFUWI 进行重新排列后,找到N所在位置,然后重新拼接 ‘NACZDTRXMJQOYHGVSFUWI’+‘KPBEL’
    4、对所有行排好后按照列取即可

  • 放个大佬的代码

  • 最后发现第18行有语义,所以就是答案。(这次没有壳)

fireinthehole

11、Normal_RSA

题目描述:你和小鱼走啊走走啊走,走到下一个题目一看你又一愣,怎么还是一个数学题啊 小鱼又一笑,hhhh数学在密码学里面很重要的!现在知道吃亏了吧!你哼一声不服气,我知道数学 很重要了!但是工具也很重要的,你看我拿工具把他解出来!你打开电脑折腾了一会还真的把答案 做了出来,小鱼有些吃惊,向你投过来一个赞叹的目光

题解:

  • 附件pem和enc,.enc是通过rsa加密后的密文, .pem 是rsa的公钥文件。
  • 用记事本打开pubkey.pem文件,把文件内容放到rsa解密网站上分析(http://www.hiencode.com/pub_asys.html)得到n和e
  • 使用yafu对n进行质因数分解,得到p和q
    p1 = 319576316814478949870590164193048041239
    p2 = 275127860351348928173285174381581152299
  • 使用工具 rsatool.py 可以通过p、q、e计算d,并生成pem文件
  • 最后openssl rsautl -decrypt -in flag.enc -inkey private.pem即可获得密钥
PCTF{256b_i5_m3dium}

12、easy_ECC

题目描述:转眼两个人又走到了下一个谜题的地方,这又是一种经典的密码学加密方式 而你刚好没有这个的工具,你对小鱼说“小鱼我知道数学真的很重要了,有了工具只是方便我们使用 懂了原理才能做到,小鱼你教我一下这个缇努怎么做吧!”在小鱼的一步步带领下,你终于明白了ECC 的基本原理,成功的解开了这个题目,两个人相视一笑,快步走向了下一个题目所在的位置。flag格式为cyberpeace{x+y的值}

题解:

  • 已知椭圆曲线加密Ep(a,b)参数为,p = 15424654874903,a = 16546484,b = 4548674875
    ,G(6478678675,5636379357093),私钥为k = 546768,求公钥K(x,y)
  • 利用工具ECCTOOL解题(下载链接:https://bbs.pediy.com/thread-66683.htm)
  • 最后得到x=13957031351290, y=5520194834100,两个加起来就是flag(答案是10进制的,如果16要转一下再加)
cyberpeace{19477226185390}

以上是关于攻防世界 CRYPTO 新手练习区 答题(1-12题解)的主要内容,如果未能解决你的问题,请参考以下文章

攻防世界 WEB 新手练习区 答题(1-12题解)

攻防世界 mobile 安卓移动端简单题练习区 答题(1-12题解)

攻防世界CRYPTO新手练习

CTF -攻防世界-crypto新手区(1~4)

攻防世界 pwn 二进制漏洞简单题练习区 答题(1-10题解)

CTF -攻防世界-crypto新手区-easy_RSAeasy_RSA