刷题 - BUUCTF(BUUOJ) - CRYPTO - DAY6

5 篇文章 0 订阅
1 篇文章 0 订阅

BUUCTF CRYPTO

(一)MD5

题目地址

MD5

解题思路

  1. 下载解压得到MD5码
    e00cf25ad42683b3df678c61f42c6bda
  2. 用网站https://www.cmd5.com/解密得到flag
    MD5

工具:https://www.cmd5.com/

(二)一眼就解密

题目地址

一眼就解密

解题思路

  1. 给出ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=,像base64的密文,用base64解密,得到flag
    base64

工具:https://base64.us/

(三)Url编码

题目地址

Url编码

解题思路

  1. 对解压后的密文用url解码得到flag
    url

工具:http://www.jsons.cn/urlencode/

(四)看我回旋踢

题目地址

看我回旋踢

解题思路

  1. 解压后拿到synt{5pq1004q-86n5-46q8-o720-oro5on0417r1},像Caesar加密,s距离f有13位,用13位的Caesar解密得到flag
    Caesar

工具:http://www.atoolbox.net/Tool.php?Id=778

(五)摩丝

题目地址

摩丝

解题思路

  1. 用摩斯密码对解压后的密文翻译,得到flag(需要转成大写,摩斯密码只使用大写字母)
    morse

工具:http://msmm.qianwanku.com/

(六)password

题目地址

password

解题思路

  1. 根据提示密码长度为10,使用名字首字母加8位生日尝试,得到flagpassword

(七)变异凯撒

题目地址

变异凯撒

解题思路

  1. 解压得到密文afZ_r9VYfScOeO_UL^RWUc,a和f相差5,f和l相差6,Z和a相差7,找到规律,用以下程序解码,得到flag
#include <stdio.h>
#include <string.h>

int main(){
    char str[] = "afZ_r9VYfScOeO_UL^RWUc";
    int k = 5;
    for(int i = 0; i < strlen(str); i++){
        str[i] += k;
        k++;
        printf("%c",str[i]);
    }
    return 0;
}

(八)Quoted-printable

题目地址

Quoted-printable

解题思路

  1. 根据提示用Quoted-printable解码得到flag
    quotedprintable

工具:http://web.chacuo.net/charsetquotedprintable/

(九)Rabbit

题目地址

Rabbit

解题思路

  1. 下载解压得到密文,根据题目提示猜测是Rabbit密文
    U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
  2. 用网站https://www.sojson.com/encrypt_rabbit.html解密得到flag
    rabbit

工具:https://www.sojson.com/encrypt_rabbit.html

(十)篱笆墙的影子

题目地址

篱笆墙的影子

解题思路

  1. 下载解压得到密文,根据题目提示猜测是栅栏密文
    felhaagv{ewtehtehfilnakgw}
  2. 用网站https://ctf.bugku.com/tool/railfence解密得到flag
    railfence

工具:https://ctf.bugku.com/tool/railfence

(十一)RSA

题目地址

RSA

解题思路

  1. 下载解压得到p,q,e, 通过p,q可以计算φ(n)
  2. 用gmpy2库计算逆元得到d
# gmpy2是Python的一个扩展模块,提供了高精度计算、大整数计算、素数检测、素性检测、椭圆曲线加密、RSA等功能
import gmpy2
p = 473398607161
q = 4511491
e = 17
d = gmpy2.invert(e,(p-1)*(q-1))
print(d)

工具:gmpy2库

(十二)丢失的MD5

题目地址

丢失的MD5

解题思路

  1. 下载解压得到md5.py
  2. 运行得到报错如下
Traceback (most recent call last):
  File "C:\Users\ABC\Downloads\17292421-ac35-4c86-921d-249450f3298b\丢失的MD5\md5.py", line 6, in <module>
    m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
TypeError: Strings must be encoded before hashing
  1. 根据提示对字符串加上encode如下
#原代码
m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
#修正后代码
m.update(('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM').encode())
  1. 运行后得到flag:e9032994dabac08080091151380478a2

(十三)Alice与Bob

题目地址

Alice与Bob

解题思路

  1. 通过如下程序把98554799767分解成两个素数乘数101999和966233
def factorize(n):  
   factors = []  
   i = 2  
   while i * i <= n:  
       if n % i:  
           i += 1  
       else:  
           n //= i  
           factors.append(i)  
   if n > 1:  
       factors.append(n)  
   return factors  
 
def find_prime_factors(n):  
   factors = factorize(n)  
   if len(factors) == 2:  
       return factors  
   else:  
       return "Unable to find two prime factors."  
 
# 将要分解的整数  
number = 98554799767  
 
# 调用函数进行分解  
prime_factors = find_prime_factors(number)  
 
# 输出结果  
if isinstance(prime_factors, list):  
   print(f"The prime factors of {number} are {prime_factors[0]} and {prime_factors[1]}.")  
else:  
   print(prime_factors)  
  1. 用下方代码对101999966233进行进一步的md5的32位小写哈希,得到flag
import hashlib
def calculate_md5_hash(number1, number2):  
    number_str = str(number1) + str(number2)  
    md5_hash = hashlib.md5(number_str.encode()).hexdigest()  
    return md5_hash[:32].lower()  
# 计算MD5哈希值  
md5_hash = calculate_md5_hash(prime_factors[0],prime_factors[1])  
  
# 输出结果  
print(f"The MD5 hash of {str(prime_factors[0])+str(prime_factors[1])} is: {md5_hash}")  
  1. 程序输出如下
    aflag

(十四)大帝的密码武器

题目地址

大帝的密码武器

解题思路

  1. 根据名字提示,把文件改成zip格式后解压得到题目

公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。
以下密文被解开后可以获得一个有意义的单词:FRPHEVGL
你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交。
2. 由罗马三巨头且用名字命名加密方法猜测是凯撒加密,从0开始尝试,试到13位解密成功得到明文单词security
cassar
3. 用13位凯撒加密明文ComeChina得到密文,即为flag
在这里插入图片描述

(十五)rsarsa

题目地址

rsarsa

解题思路

  1. 下载解压得到p,q,e,c 通过p,q可以计算φ(n)
  2. 用gmpy2库计算逆元得到d
  3. 计算c的d次幂的结果模n得到明文
# gmpy2是Python的一个扩展模块,提供了高精度计算、大整数计算、素数检测、素性检测、椭圆曲线加密、RSA等功能
import gmpy2
p =  9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q =  11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e =  65537
c =  83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
n = p * q
d = gmpy2.invert(e, (q-1)*(p-1))
m = pow(c,d,n)
print(m)

工具:gmpy2库

(十六)Windows系统密码

题目地址

Windows系统密码

解题思路

  1. 下载解压得到pass.hash文件,用记事本打开发现是windows系统的用户信息,根据文件名提示猜测是MD5加密
    Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    ctf:1002:06af9108f2e1fecf144e2e8adef09efd:a7fcb22a88038f35a8f39d503e7f0062:::
    Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:bef14eee40dffbc345eeb3f58e290d56:::
  2. 用网站https://www.cmd5.com/的NTLM对以上八个加密字段逐一尝试解密得到flag
    flag

工具:https://www.cmd5.com/

(十七)信息化时代的步伐

题目地址

信息化时代的步伐

解题思路

  1. 有题目中的清朝密码提示,猜测是和中文电码表有关,使用电码中文转换网站对密文进行尝试转换,成功拿到flag

flag

工具:https://dianma.bmcx.com/

(十八)凯撒?替换?呵呵!

题目地址

凯撒?替换?呵呵!

解题思路

  1. 凯撒解密后得到FMAC{VNUVZQZNZQPKXQBIHRTHXRYBZQPKQVAMDAYVHAVYWNVZMQSHABQHXHPFXASH}
    kaisa
  2. 有题目中的替换猜测可以用单表暴力破解,用破解后的第一个字符串尝试,发现是flag(需要把空格去掉)
    在这里插入图片描述

工具:http://www.atoolbox.net/Tool.php?Id=778,https://www.quipqiup.com/

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值