• BUUCTF crypto做题记录(8)新手向


    一、密码学心声

    得到信息如下图

            背景故事没什么信息,主要看曲谱。大概率不会让我们涉及与音乐有关的内容,题目中也提示说答案是一串字符串,所以我们可以猜测是将曲谱上的数字转化成字符。曲谱中文字提示是用ASCII码进行转换。没有数字8可能是在说8进制。所以关键问题在于如何让划分这些数字。

            数字共有63个,63的因数有1、3、7、9、21、63,最可能就是3。所以我们可以尝试一下。

    1. a=['111','114','157','166','145','123','145','143','165','162','151','164','171','126','145','162','171','115','165','143','150']
    2. m=''
    3. for i in a:
    4. s=int(i,8)
    5. s=chr(s)
    6. m+=s
    7. print(m)

     答案:ILoveSecurityVeryMuch

    二、[GUET-CTF2019]BabyRSA

    得到信息如下

    1. p+q : 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea
    2. (p+1)(q+1) : 0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740
    3. e : 0xe6b1bee47bd63f615c7d0a43c529d219
    4. d : 0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5
    5. enc_flag : 0x50ae00623211ba6089ddfae21e204ab616f6c9d294e913550af3d66e85d0c0693ed53ed55c46d8cca1d7c2ad44839030df26b70f22a8567171a759b76fe5f07b3c5a6ec89117ed0a36c0950956b9cde880c575737f779143f921d745ac3bb0e379c05d9a3cc6bf0bea8aa91e4d5e752c7eb46b2e023edbc07d24a7c460a34a9a

    清楚RSA原理的人,目前缺少的信息应该是模数n

    1. q+p+pq+1=(p+1)(q+1)
    2. n=pq=(p+1)(q+1) -(q+p)-1

    代码如下:

    1. import gmpy2
    2. from Crypto.Util.number import *
    3. pjiaq=0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea
    4. sq1q=0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740
    5. e=0xe6b1bee47bd63f615c7d0a43c529d219
    6. d=0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5
    7. enc_flag=0x50ae00623211ba6089ddfae21e204ab616f6c9d294e913550af3d66e85d0c0693ed53ed55c46d8cca1d7c2ad44839030df26b70f22a8567171a759b76fe5f07b3c5a6ec89117ed0a36c0950956b9cde880c575737f779143f921d745ac3bb0e379c05d9a3cc6bf0bea8aa91e4d5e752c7eb46b2e023edbc07d24a7c460a34a9a
    8. n=sq1q-1-pjiaq
    9. m=pow(enc_flag,d,n)
    10. print(long_to_bytes(m))

    答案:flag{cc7490e-78ab-11e9-b422-8ba97e5da1fd}

    三、[BJDCTF2020]这是base??

    得到信息如下

    又有base又有64,很难不想到base64编码

    base64有一个转换表

     密文可能是通过题目中dict算出来的,所以我们可以尝试将密文还原成数字,再通过base64转化。反过来想,可以将密文通过base64转换成数字,再通过题目给的dict转化。综上我们形成了这两种思路。

    1. import base64
    2. dic={0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}
    3. base64BiaoZhun = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
    4. c='FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw'
    5. c1=[]
    6. for i in range(len(c)):
    7. key = [k for k, v in dic.items() if v == c[i]][0]
    8. c1.append(key)
    9. # print(c1)
    10. m=''
    11. for w in c1:
    12. m+=base64BiaoZhun[w]
    13. # print(m)
    14. m=base64.b64decode(m)
    15. print(m)

    采用第一种思路得到答案:BJD{D0_Y0u_kNoW_Th1s_b4se_map}

    四、robomunication

    得到一个音频,大致听了一下是摩斯电码,自己根据音频手敲一下再解密。

    莫尔斯电码解码器 - MorseCoder.org

    摩斯电码:.... . .-.. .-.. --- .-- .... .- - .. ... - .... . -.- . -.-- .. - .. ... -... --- --- .--. -... . . .--.

    答案是BOOPBEEP,而不是整句话。

  • 相关阅读:
    Turtlebot2简单控制
    【笔记】《结网:互联网产品经理改变世界》
    烟火监测报警摄像机
    数据结构开门篇
    Python实例化方法、类方法、静态方法
    navigator.clipboard 读取剪贴板和写入剪贴板
    220kV降压变电所电气部分初步设计33号
    Spring IOC源码:实例化前的准备工作
    VSCode修改主题为Eclipse 绿色护眼模式
    购物网站系统
  • 原文地址:https://blog.csdn.net/tgmhh/article/details/136229183