BUUCTF-Crypto详细Writeup
2024/1/2 1:02:42
本文主要是介绍BUUCTF-Crypto详细Writeup,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
每一天都要努力啊 ----2024-01-01 18:11:36
1.一眼就解密
原题:下面的字符串解密后便能获得flag:ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30= 注意:得到的 flag 请包上 flag{} 提交
由小写字母大写字母和数字组成,尾部是’=‘,猜测为base64编码,base64解密后得到flag:flag{THE_FLAG_OF_THIS_STRING}
特征:密文由64个字符(A-Z,a-z,0-9,+,/)组成,末尾可能会有1或2个’=’ 最多有2个。
2.MD5
原题:e00cf25ad42683b3df678c61f42c6bda
md5解密得到flag:admin1
md5
特征:MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码)。密文由数字和字母组成,大多为32位,同时具有不可逆的特点,即知道密文,无法得到原文。
推荐解题网站:https://www.somd5.com/
3.Url编码
原题:%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d
有很多百分号的就是url编码,直接url解码
得到flag:flag{and 1=1}
25.[AFCTF2018]Morse
原题:-..../.----/-..../-..../-..../...--/--.../....-/-..../-..../--.../-.../...--/.----/--.../...--/..---/--.../--.../....-/...../..-./--.../...--/...--/-----/...../..-./...--/...--/...--/....-/...--/...../--.../----./--.../-..
直接用toolsFX的morse解密,得到61666374667B317327745F73305F333435797D,只有数字和字母A--F,猜测为16进制,再16进制转化为ascii码
得到flag:afctf{1s't_s0_345y}
29.还原大师
原题:我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4DAB????08?????51?80??8A?,请猜出神秘字符串的原本模样,并且提交这个字串的32位MD5码作为答案。 注意:得到的 flag 请包上 flag{} 提交
直接暴力破解:上脚本
py脚本
import string from itertools import product import hashlib raw=list("TASC?O3RJMV?WDJKX?ZM") md5="E903???4DAB????08?????51?80??8A" table=string.ascii_uppercase for val in product(table,repeat=3): raw[4]=val[0];raw[11]=val[1];raw[-3]=val[2] md=hashlib.md5("".join(raw).encode()).hexdigest().upper() if md[:4]==md5[:4]: print(md)
30.异性相吸
原题:最近出现了一个奇葩观点,说性别都不一样,怎么能谈恋爱?为了证明这个观点错误,请大家证明异性是相吸的。 注意:得到的 flag 请包上 flag{} 提交,下载附件,有两个文件,其中一个是key.txt:asadsasdasdasdasdasdasdasdasdasdqwesqf,另外一个密文打不开。
解题:本题一直强调异性,由此猜测是异或,网上大多wp都是要先转2进制010,但是其实并不用。以下给出解题代码:
py脚本
from Crypto.Util.number import * from binascii import unhexlify with open("F:/百度网盘/b8c1caee-43d6-42ee-aecc-d72502a5ade2/key.txt","rb") as f: file1=(bytes_to_long(f.read())) with open("F:/百度网盘/b8c1caee-43d6-42ee-aecc-d72502a5ade2/密文.txt","rb") as f: file2=(bytes_to_long(f.read())) re=file1^file2 c=hex(re)[2:] print(unhexlify(c))
得到flag:flag{ea1bc0988992276b7f95b54a7435e89e}
31.RSA
原题:给了两个文件flag.enc和pub.key。其中pub.key可以直接打开。我用的是脚本,但是还是解释一下把:一下是pub.key的内容
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+ --> n
/AvKr1rzQczdAgMBAAE= --> e
-----END PUBLIC KEY-----
关于key.pub文件的内容,请看这篇文章:https://blog.csdn.net/he25819/article/details/119467334
我们可以直接拿到网站上去得到n和e的值,不过那么太没有技术含量了,我们还是写脚本。
py脚本
# -*- coding:utf-8 -*- """ 作者:Wang Xinwei 日期:2023年12月27日 """ import rsa import base64 from Crypto.PublicKey import RSA from Crypto.Util.number import * with open('****/pub.key' ,'r') as f: key= RSA.importKey(f.read()) public_key=key.publickey().exportKey() # private_key=key.exportKey() # print(public_key.decode()) # print(private_key.decode()) n=key.n print(n) e=key.e print(e) #得到n之后分解n q=863653476616376575308866344984576466644942572246900013156919 p=965445304326998194798282228842484732438457170595999523426901 phi=(q-1)*(p-1) d=inverse(e,phi) private_key=rsa.PrivateKey(n,e,d,q,p) #直接得到私钥. with open('****/flag.enc' ,'r') as fi: m=fi.read() print(m) m=base64.b64decode(m) print(rsa.decrypt(m,private_key))
这篇关于BUUCTF-Crypto详细Writeup的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享
- 2024-12-24更改 Git 本地分支关联的远程分支是什么命令?-icode9专业技术文章分享
- 2024-12-24uniapp 连接之后会被立马断开是什么原因?-icode9专业技术文章分享
- 2024-12-24cdn 路径可以指定规则映射吗?-icode9专业技术文章分享
- 2024-12-24CAP:Serverless?+AI?让应用开发更简单
- 2024-12-23新能源车企如何通过CRM工具优化客户关系管理,增强客户忠诚度与品牌影响力
- 2024-12-23原创tauri2.1+vite6.0+rust+arco客户端os平台系统|tauri2+rust桌面os管理
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享