攻防世界 - Crypto(一)
base64:
根据题目base64可知编码方式,下载附件发现是一个txt文件,把内容用工具解码就彳亍了,即可得到flag,

flag:
cyberpeace{Welcome_to_new_World!}
Caesar:
1.下载附件,打开txt文件发现如下内容,
oknqdbqmoq{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz}
2.根据题目为“凯撒密码”,即为字母偏移,因为知道flag格式为cyberpeace{},所以o要对应c,所以计算差值为12,尝试解密和加密,发现偏移12时加密可得flag,
flag:
cyberpeace{you_have_learned_caesar_encryption}
Morse:
1.下载附件,如下内容,不难发现是莫尔斯密码,在线工具搞一波即可得到flag,
11 111 010 000 0 1010 111 100 0 00 000 000 111 00 10 1 0 010 0 000 1 00 10 110
2.

flag:
cyberpeace{morsecodeissointeresting}
Railfence:
1.下载附件,打开可知是栅栏密码,
ccehgyaefnpeoobe{lcirg}epriec_ora_g
2.根据题目知道为普通栅栏密码分五组,flag开头得知分为
ccehgyaefnpeoobe{lcirg}epriec_ora_g
前五个为cyber将其解析:
最后将其汇集
flag:
cyberpeace{railfence_cipher_gogogo}
补充:
栅栏密码原理:
普通栅栏密码:
1 2 3 4 5 6(明文) # key=3 进行栅栏加密
1 2 3
4 5 6
结果为 1 4 2 5 3 6
WWW的变种栅栏密码
1 2 3 4 5 6 # key=3 Rail-fence Cipher
1 . . . 5 .
. 2 . 4 . 6
. . 3 . . .
结果为 1 5 2 4 6 3
参考:
https://www.pianshen.com/article/7124782038/
https://blog.csdn.net/qq_43504939/article/details/98473847
不仅仅是Morse:
1.下载附件,发现是一串点和杠,尝试摩尔斯密码,
--/.-/-.--/..--.-/-..././..--.-/..../.-/...-/./..--.-/.-/-./---/-/...././.-./..--.-/-.././-.-./---/-.././..../..../..../..../.-/.-/.-/.-/.-/-.../.-/.-/-.../-.../-.../.-/.-/-.../-.../.-/.-/.-/.-/.-/.-/.-/.-/-.../.-/.-/-.../.-/-.../.-/.-/.-/.-/.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../-.../.-/.-/.-/-.../-.../.-/.-/-.../.-/.-/.-/.-/-.../.-/-.../.-/.-/-.../.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/-.../-.../.-/.-/-.../-.../-.../.-/-.../.-/.-/.-/-.../.-/-.../.-/-.../-.../.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/.-/.-/.-/-.../-.../.-/-.../-.../.-/.-/-.../-.../.-/.-/-.../.-/.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/-.../.-/.-/-.../-.../.-/-.../.-/.-/.-/.-/-.../-.../.-/-.../.-/.-/-.../-.../.-

工具连接:
http://www.txttool.com/WenBen_morse.asp
2.根据回显可知存在另一种decode,可知培根密码加密,将AB字符串进行培根密码解密,

密码工具:
https://tool.bugku.com/peigen/
3.按照格式构造flag即可,
flag:
cyberpeace{attackanddefenceworldisinteresting}
混合编码:
1.下载附件,内容如下,
JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM2ODsmIzY5OyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjNTI7JiM3NjsmIzEyMjsmIzEwNzsmIzUzOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc3OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiMxMDc7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzg7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjODQ7JiM2OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzUwOyYjNzY7JiMxMjI7JiM2OTsmIzEyMDsmIzc4OyYjMTA1OyYjNTY7JiM1MzsmIzc4OyYjMTIxOyYjNTY7JiM1MzsmIzc5OyYjODM7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM5OTsmIzExODsmIzc5OyYjODQ7JiM5OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjNjk7JiMxMTk7JiM3NzsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjNjU7JiMxMTg7JiM3NzsmIzg0OyYjNjU7JiMxMjA7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiMxMDU7JiM1NjsmIzEyMDsmIzc3OyYjNjg7JiM2OTsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzExOTsmIzc2OyYjMTIyOyYjMTA3OyYjNTM7JiM3NjsmIzEyMjsmIzY5OyYjMTE5OyYjNzc7JiM4MzsmIzU2OyYjMTIwOyYjNzc7JiM4NDsmIzEwNzsmIzExODsmIzc3OyYjODQ7JiM2OTsmIzEyMDsmIzc2OyYjMTIyOyYjNjk7JiMxMjA7JiM3ODsmIzY3OyYjNTY7JiMxMjA7JiM3NzsmIzY4OyYjMTAzOyYjMTE4OyYjNzc7JiM4NDsmIzY1OyYjMTE5Ow==
2.发现填补符号=,进行base64解密,得到unicode码,
LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw
3.将Unicode转换为ASCII码后得到如下结果:
LzExOS8xMDEvMTA4Lzk5LzExMS8xMDkvMTAxLzExNi8xMTEvOTcvMTE2LzExNi85Ny85OS8xMDcvOTcvMTEwLzEwMC8xMDAvMTAxLzEwMi8xMDEvMTEwLzk5LzEwMS8xMTkvMTExLzExNC8xMDgvMTAw
4.再次进行base64解码,得到:
/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
5.对照ascii可得到flag,
welcometoattackanddefenceworld
flag:
cyberpeace{welcometoattackanddefenceworld}
参考:
https://blog.csdn.net/kjcxmx/article/details/105898310
幂数加密:
1.下载附件,内容如下,
8842101220480224404014224202480122
2. 查wp大法,云影密码,脚本如下:
#!/user/bin/env python
# -*-coding:utf-8 -*- a = open(r'crypto11.txt','r')
ciphertext = a.read() s = ciphertext.split('0') flag = ''
for i in range(len(s)):
list = []
for j in s[i]:
list.append(j)
b = 0
for k in list:
b += int(k)
# 字母ascii值与字母顺序相差为96
flag += chr(b+96)
print('flag is ',flag)
flag:
cyberpeace{WELLDONE}
补充:
二进制数除了0和1的表示方法外,在由二进制转换成十进制的时候,还可以表示成2的N次方的形式。例如:
15=20+21+22+23
并且我们发现,任意的十进制数都可以用2n或2n+2^m+……的形式表示出来,可以表示的单元数由使用的max n来决定。
可表示的单元数=2^(n+1)-1
二进制幂数加密法就是应用这个原理,由于英文字母只有26个字母,由公式可知,只要2的0、1、2、3、4次幂就可以表示31个单元。通过用二进制幂数表示字母序号数来加密。例如
明文: d o n o t p u l l a l l y o u r e g g s i n o n e b a s k e t
字母序号:4 15 14 15 20 16 21 12 12 1 12 12 25 15 21 18 5 7 7 19 9 14 15 14 5 2 1 19 11 5 20
由于4=2^2 所以D加密过之后是2;15=20+21+22+23所以O加密后是0123。同理得到上述明文的加密后的密文
密文:2 0123/123 0123 24/4 024 23 23/0 23 23/034 0123 024 14/02 012 012 014/03 123 /0123 123 02/1 0 014 013 02 24
其中空格表示字母的间隔,/表示单词的间隔。
字母加密结果对照
A 1-------0
B 2-------1
C 3------01
D 4------2
E 5------02
F 6------12
G 7------012
H 8------3
I 9------03
J 10-----13
K 11-----013
L 12-----23
M 13----023
N 14----123
O 15----0123
P 16----4
Q 17----04
R 18----14
S 19-----014
T 20-----24
U 21-----024
V 22-----124
W 23-----0124
X 24-----34
Y 25-----034
Z 26-----134
easy_RSA:
1.下载附件,题干如下:
在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17 求解出d
2.搜大佬脚本,
def exgcd(a, n):
if n == 0:
return 1, 0
else:
x, y = exgcd(n, a % n)
x, y = y, x - (a // n) * y
return x, y def getReverse(a, n):
re, y = exgcd(a, n)
while (re < 0):
re += n
return re if __name__ == "__main__":
p = 473398607161
q = 4511491
e = 17
d = getReverse(e, (p - 1) * (q - 1))
print('d = ' + str(d))
flag:
cyberpeace{125631357777427553}
补充:
RSA计算过程:
1.任选两个不相等的质数p和q
2.计算密钥的长度n=pq
3.计算n的欧拉函数φ(n):
φ(n) = (p-1)(q-1)
4.随机选择一个整数e,也就是公钥当中用来加密的那个数字
条件是1< e < φ(n),且e与φ(n) 互质。
5.计算e对于φ(n)的模反元素d,也就是密钥当中用来解密的那个数字
(ed) mod (φ(n)) = 1
至此,(n,e),(n,d)就是密钥对。其中(n,e)为公钥,(n,d)为私钥
easychallenge:
!!!
1.下载附件,发现是一个.pyc文件,
补充:pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,运行加载的速度会有所提高;另一反面,把py文件编译为pyc文件,从而可以实现部分的源码隐藏,保证了python做商业化软件时的安全性
2.用在线反编译工具得到如下代码,
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'
3.根据代码写出解密脚本,得到flag,
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)
flag:
cyberpeace{interestinghhhhh}
参考:
https://www.cnblogs.com/zhengna/p/13477114.html
攻防世界 - Crypto(一)的更多相关文章
- CTF -攻防世界-crypto新手区(5~11)
easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间 明明没算错 ...
- 攻防世界-Crypto高手进阶区部分Writeup
1.flag_in_your_hand && flag_in_your_hand1 下载,解压后 打开index文件,直接点击get flag错误,输入其他点击也同样 打开js文件,在 ...
- 攻防世界CRYPTO新手练习
0x01 base64 直接base64 Decode 得到flag cyberpeace{Welcome_to_new_World!} 0x02 Caesar key为12 的恺撒密码,解密德fla ...
- CTF -攻防世界-crypto新手区(1~4)
题目已经提示用base64直接解密就行 base64解密网址 http://tool.oschina.net/encrypt?type=3 题目提示是凯撒密码 http://www.zjslove.c ...
- Xctf攻防世界—crypto—Normal_RSA
下载压缩包后打开,看到两个文件flag.enc和pubkey.pem,根据文件名我们知道应该是密文及公钥 这里我们使用一款工具进行解密 工具链接:https://github.com/3summer/ ...
- RSA脚本环境配置-攻防世界-OldDriver
[Crypto] 题目链接 [RSA算法解密] 审题分析 首先拿到一个压缩包,解压得到文件enc.txt. 先不用去管其他,第一眼enc马上联想到 RSA解密.接着往下看 [{"c" ...
- CTF--web 攻防世界web题 robots backup
攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...
- CTF--web 攻防世界web题 get_post
攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...
- 攻防世界 web进阶练习 NewsCenter
攻防世界 web进阶练习 NewsCenter 题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...
随机推荐
- mysql 8.0忘记root密码
1.修改参数文件添加以下内容 skip-grant-tables 2.关闭数据库 [root@node01 ~]# /etc/init.d/mysqld8 stop Shutting down MyS ...
- centos 7.0下安装MySQL 5.7.26
1.下载MySQL 5.7.26安装包,卸载自带MySQL数据库 yum remove mariadb-libs -y yum install -y libaio-devel 2.上传MySQL 5. ...
- python3.6连接数据库 小微工作笔记
连接141 老虎钱包数据库方法,可以连接成功(MYSQL)1 import pymysql 2 conn = pymysql.connect(host='192.168.1.141', port=33 ...
- Spring笔记(9) - IOC实现方式详解
IOC概念 控制反转(Inversion of Control,IOC),是面向对象编程中的一种设计原则,它建议将不需要的职责移出类,让类专注于核心职责,从而提供松散耦合,提高优化软件程序设计.它把传 ...
- Java进阶:基于TCP通信的网络实时聊天室
目录 开门见山 一.数据结构Map 二.保证线程安全 三.群聊核心方法 四.聊天室具体设计 0.用户登录服务器 1.查看当前上线用户 2.群聊 3.私信 4.退出当前聊天状态 5.离线 6.查看帮助 ...
- Vue 打包部署上线
1,VUE逻辑编写完成后在当前项目下打包 npm run build 需要注意的是,当打包完毕后,需要将入口的index.html的项目dist路径改成相对路径 另外需要注意的一点是,一旦打包vue. ...
- CSS的各种重要属性
CSS属性图 01文字属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 敏捷史话(一):用一半的时间做两倍的事——Scrum之父Jeff Sutherland
普通的人生大抵相似,传奇的人生各有各的传奇.Jeff就是这样的传奇人物,年近80的他从来没有"廉颇老矣尚能饭否"的英雄迟暮,不久前还精神矍铄地与好几百名中国学生进行线上交流,积极回 ...
- flowable中传入审批人是list
package org.springblade.flow.engine.listener; import org.flowable.engine.delegate.DelegateExecution; ...
- Redis在存取序列化和反序列化性能问题
1. 问题场景 我们在使用Redis的时候经常会将对象序列化存储到Redis中,在取出的时候进行反序列化,如果对象过大在进行序列化和反序列化的时候会有一定性能问题.今天查看了CSRedis源码发现在S ...