CRYPTO-2BJDCTF2020-伏羲六十四卦

2023-11-06 10:10

本文主要是介绍CRYPTO-2BJDCTF2020-伏羲六十四卦,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0x00 前言

  • CTF 加解密合集
  • CTF Web合集
  • 网络安全知识库
  • 溯源相关

文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取

0x01 题目

这是什么,怎么看起来像是再算64卦!!!密文:升随临损巽睽颐萃小过讼艮颐小过震蛊屯未济中孚艮困恒晋升损蛊萃蛊未济巽解艮贲未济观豫损蛊晋噬嗑晋旅解大畜困未济随蒙升解睽未济井困未济旅萃未济震蒙未济师涣归妹大有嗯?为什么还有个b呢?
b=7flag:请按照格式BJD{}
# -- coding:UTF-8 --
# from secret import flag
flag="asdasd"
def encrpyt5():enc=''for i in flag:enc+=chr((a*(ord(i)-97)+b)%26+97)return(enc)def encrypt4():temp=''offset=5for i in range(len(enc)):temp+=chr(ord(enc[i])-offset-i)return(temp)

0x02 Write Up

首先知道六十四卦的转换,就是每一卦都换成六位二进制,不知道谁能想到,反正我想不到

dic={'坤': '000000', '剥': '000001', '比': '000010', '观': '000011', '豫': '000100', '晋': '000101', '萃': '000110', '否': '000111', '谦': '001000', '艮': '001001', '蹇': '001010', '渐': '001011', '小过': '001100', '旅': '001101', '咸': '001110', '遁': '001111', '师': '010000', '蒙': '010001', '坎': '010010', '涣': '010011', '解': '010100', '未济': '010101', '困': '010110', '讼': '010111', '升': '011000', '蛊': '011001', '井': '011010', '巽': '011011', '恒': '011100', '鼎': '011101', '大过': '011110', '姤': '011111', '复': '100000', '颐': '100001', '屯': '100010', '益': '100011', '震': '100100', '噬嗑': '100101', '随': '100110', '无妄': '100111', '明夷': '101000', '贲': '101001', '既济': '101010', '家人': '101011', '丰': '101100', '离': '101101', '革': '101110', '同人': '101111', '临': '110000', '损': '110001', '节': '110010', '中孚': '110011', '归妹': '110100', '睽': '110101', '兑': '110110', '履': '110111', '泰': '111000', '大畜': '111001', '需': '111010', '小畜': '111011', '大壮': '111100', '大有': '111101', '夬': '111110', '乾': '111111'}

然后6为换成8为,转换为字符,也就是转换为base64的过程

s='升随临损巽睽颐萃小过讼艮颐小过震蛊屯未济中孚艮困恒晋升损蛊萃蛊未济巽解艮贲未济观豫损蛊晋噬嗑晋旅解大畜困未济随蒙升解睽未济井困未济旅萃未济震蒙未济师涣归妹大有'
dic={'坤': '000000', '剥': '000001', '比': '000010', '观': '000011', '豫': '000100', '晋': '000101', '萃': '000110', '否': '000111', '谦': '001000', '艮': '001001', '蹇': '001010', '渐': '001011', '小过': '001100', '旅': '001101', '咸': '001110', '遁': '001111', '师': '010000', '蒙': '010001', '坎': '010010', '涣': '010011', '解': '010100', '未济': '010101', '困': '010110', '讼': '010111', '升': '011000', '蛊': '011001', '井': '011010', '巽': '011011', '恒': '011100', '鼎': '011101', '大过': '011110', '姤': '011111', '复': '100000', '颐': '100001', '屯': '100010', '益': '100011', '震': '100100', '噬嗑': '100101', '随': '100110', '无妄': '100111', '明夷': '101000', '贲': '101001', '既济': '101010', '家人': '101011', '丰': '101100', '离': '101101', '革': '101110', '同人': '101111', '临': '110000', '损': '110001', '节': '110010', '中孚': '110011', '归妹': '110100', '睽': '110101', '兑': '110110', '履': '110111', '泰': '111000', '大畜': '111001', '需': '111010', '小畜': '111011', '大壮': '111100', '大有': '111101', '夬': '111110', '乾': '111111'}cc=""
i=0
while True:if i >=len(s):breaktry:cc+=dic[s[i]]except:cc+=dic[s[i] + s[i + 1]]i+=1i+=1
x=""
end=cc
for i in range(0,len(end),8):ins=end[i:i+8]x+=chr(int(ins,2))

可以拿到一个bl1oXF1ra2FbW2VpV1dfUmBiT11dYE5NVVdXSUZYSFVDUA==

然后解码:
在这里插入图片描述

然后先解de4

def de4():temp = ''offset = 5for i in range(len(enc)):temp += chr(ord(enc[i]) + offset + i)return (temp)

然后再解de5,查了一些资料发现这种方式是仿射加密算法,仿射算法可以通过爆破的方式进行解密:

加密函数:Y=(AX+B)%26

解密函数:Y=(AX+B)%26,得到:X=(A的逆元)*(Y-B)%26

逆元可以通过爆破的方式得到:

def get_multiplicative_inverse(a):for i in range(1, 27):if a * i % 26 == 1:return i

最终进行运算得到

for a in range(1,27):flag=""for i in temp:# print((((ord(i) - 97) - 7) * get_multiplicative_inverse(a)) % 26 + 97)try:s=chr((((ord(i) - 97) - 7) * get_multiplicative_inverse(a)) % 26 + 97)flag+=sexcept:breakprint(flag)

bjdcongratulationsongettingtheflag

以上

other

欢迎大家关注我朋友的公众号 皓月当空w 分享漏洞情报以及各种学习资源,技能树,面试题等。

以上

这篇关于CRYPTO-2BJDCTF2020-伏羲六十四卦的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/355980

相关文章

(六十四)第 10 章 内部排序(静态链表的插入排序)

示例代码 staticLinkList.h // 静态链表的插入排序实现头文件#ifndef STATIC_LINK_LIST_H#define STATIC_LINK_LIST_H#include "errorRecord.h"#define SIZE 100#define NUM 8typedef int InfoType;typedef int KeyType;ty

Flink实例(六十四): :Flink的重启策略(二)

重启策略 Flink何时才会重启? 一个拥有检查点的应用如果出现问题,他会经过一些列步骤来进行重启。重启过程中可能会出现的问题? 有些时候,应用可能会被相同的故障不断“杀死”举例:   当我处理数据的时候程序出现了Bug,导致处理算子出现异常,此时程序就会陷入一个循环中:   启动任务、恢复状态、继续处理。 在继续处理的时候,由于这个Bug没有被修复,然后   启动任务、恢复状态、继续处理。

[羊城杯 2024] Crypto

文章目录 TH_Curvebaby_CurveRSA_lossTheoremPlus TH_Curve 题目描述: from Crypto.Util.number import *from secret import flagdef add_THcurve(P, Q):if P == (0, 0):return Qif Q == (0, 0):return Px1, y1

[DASCTF2024八月开学季!] Crypto

文章目录 EZsquaresEZmatrixEZsignin EZsquares 题目描述: from Crypto.Util.number import *from gmpy2 import *from secret import flagp=getPrime(512)q=getPrime(512)n0=p**2+q**2print('n0 =',n0)e=655

golang RSA 解密前端jsencrypt发送的数据时异常 crypto/rsa: decryption error 解决方法

golang中 RSA解密前端(jsencrypt)发来的密文后出现  "crypto/rsa: decryption error"  , 这个问题首先需要确认你的私匙和公匙是否匹配, 如果匹配 那检查入参数据类型, 前端发送来的rsa加密后的数据一般都是经过base64编码后的, 在后端进行RSA解码时需要对前端发送的数据进行base64解码! crypto/rsa: decryption

NSSCTF练习记录:[鹤城杯 2021]A_CRYPTO

题目: 4O595954494Q32515046324757595N534R52415653334357474R4N575955544R4O5N4Q46434S4O59474253464Q5N444R4Q51334557524O5N4S424944473542554O595N44534O324R49565746515532464O49345649564O464R4R494543504N35

polarctf靶场[CRYPTO]显而易见的密码、[CRYPTO]夏多的梦、[CRYPTO]再这么说话我揍你了、[CRYPTO]神秘组织M

[CRYPTO]显而易见的密码 考点:ntlm编码 打开文件,显示内容就是ntlm格式 ntlm解密 在线网站: https://www.cmd5.com/便可得到flag [CRYPTO]夏多的梦 根据题目提示可以猜测为夏多密码 考点:夏多密码 在线加密原理网站: 加密解密原理:https://blog.csdn.net/destiny1507/article

polarctf靶场【四方密码题】【CRYPTO】不一样的四四方方、四个正方形

[CRYPTO]不一样的四四方方 考点:四方密码 在线网站: https://www.metools.info/code/four-square244.html 或者https://wtool.com.cn/four.html 请开始你的表演(密文):jilinjingcha注意:正确的密钥后面最后一个字母不要!!!key1:informationkey2:engineering

Crypto++:私钥和公钥保存到文件

在Crypto++库中,生成的RSA私钥和公钥可以通过将它们序列化到文件来保存。这通常涉及到使用FileSink来将密钥的数据写入到文件中。以下是一个示例函数,展示了如何将RSA私钥和公钥保存到文件中: #include <cryptopp/rsa.h>#include <cryptopp/osrng.h>#include <cryptopp/files.h>#include <fstre

Python武器库开发-武器库篇之ThinkPHP 5.0.23-RCE 漏洞复现(六十四)

Python武器库开发-武器库篇之ThinkPHP 5.0.23-RCE 漏洞复现(六十四) 漏洞环境搭建 这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装,我们进入 ThinkPHP漏洞环境,可以 cd ThinkPHP,然后通过 ls 查看可以搭建的靶场,目前 vulhub关于 ThinkPHP漏洞。可以搭建的靶场有五个。我们拿 5.0.