Bugku Crypto 部分题目简单题解(四)

目录

python_jail

简单的rsa

托马斯.杰斐逊

这不是md5

进制转换

affine

Crack it

rsa


python_jail

启动场景

使用虚拟机nc进行连接

输入print(flag)

发现报错,经过测试只能传入10个字符多了就会报错

利用python中help()函数,借报错信息带出flag变量值内容, 刚好10个字符

输入:help(flag)

得到flag

flag{6785a2765b72da197dfe5405fadca69c}

简单的rsa

下载文件得到rsa.pyc

直接丢到在线python反编译网址

python反编译 - 在线工具 (tool.lu)

编译后,下载了一个压缩包文件,解压得到python代码

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.9

import gmpy2
from Crypto.Util.number import *
from binascii import a2b_hex, b2a_hex

flag = "******************"
p = 0xED7FCFABD3C81C78E212323329DC1EE2BEB6945AB29AB51B9E3A2F9D8B0A22101E467L
q = 0xAD85852F9964DA87880E48ADA5C4487480AA4023A4DE2C0321C170AD801C9L
e = 65537
n = p * q
c = pow(int(b2a_hex(flag), 16), e, n)
print(c)
c = 0x75AB3202DE3E103B03C680F2BEBBD1EA689C8BF260963FE347B3533B99FB391F0A358FFAE5160D6DCB9FCD75CD3E46B2FE3CFFE9FA2E9508702FD6E4CE43486631L

审计加密代码,已知p,q,e,n,c

m=c^d mod n 所以我们求出d即可解出明文

编写脚本

from Crypto.Util.number import *
import gmpy2
import  base64

p = int("0xED7FCFABD3C81C78E212323329DC1EE2BEB6945AB29AB51B9E3A2F9D8B0A22101E467",16)
q = int("0xAD85852F9964DA87880E48ADA5C4487480AA4023A4DE2C0321C170AD801C9",16)
e = 65537
n = p * q
c = int("0x75AB3202DE3E103B03C680F2BEBBD1EA689C8BF260963FE347B3533B99FB391F0A358FFAE5160D6DCB9FCD75CD3E46B2FE3CFFE9FA2E9508702FD6E4CE43486631",16)

phi = (p-1)*(q-1)               #求φ(n),φ(n)=(p-1)(q-1)
d = gmpy2.invert(e,phi)			#求e对于模n的逆元,即解密指数d
m = pow(c,d,n)					#m=c^e mod n,m为10进制格式
flag = long_to_bytes(m)			#m的字符串形式
print(base64.b64decode(flag))	#上面得到的flag是base64编码,进行一次base64解码即可

运行脚本

得到flag

托马斯.杰斐逊

下载打开附件

内容如下

1: <ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: <KPBELNACZDTRXMJQOYHGVSFUWI <
3: <BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: <RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: <IHFRLABEUOTSGJVDKCPMNZQWXY <
6: <AMKGHIWPNYCJBFZDRUSLOQXVET <
7: <GWTHSPYBXIZULVKMRAFDCEONJQ <
8: <NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: <QWATDSRFHENYVUBMCOIKZGJXPL <
10: <WABMCXPLTDSRJQZGOIKFHENYVU <
11: <XPLTDAOIKFZGHENYSRUBMCQWVJ <
12: <TDSWAYXPLVUBOIKZGJRFHENMCQ <
13: <BMCSRFHLTDENQWAOXPYVUIKZGJ <
14: <XPHKZGJTDSENYVUBMLAOIRFCQW <

密钥: 2,5,1,3,6,4,9,7,8,14,10,13,11,12

密文:HCBTSXWCRQGLES

这是一种加密方式,叫做轮转密码或者叫比尔密码,

解密的方式就是先通过密钥调整字符串的行号,然后通过密文调整每一行字符串的顺序

先人工将字符串行号排序,放到一个txt中

然后才用脚本解密,脚本如下:

fileone = open("1.txt","r+") #手工排序行号的字符串
filetwo = open("a.txt","w+") # 新的文件保存结果
attr = "HCBTSXWCRQGLES" # 密文
attrtwo = ""
num = 0
for line in fileone:
    print(len(line))
    for i in line:
        if i != attr[num]:
            attrtwo = attrtwo + i
        else:
            #attrtwo = attrtwo + i
            attrone = line[len(attrtwo):26]+attrtwo + "\n"
            filetwo.write(attrone)
            break
    attrtwo = ""
    num = num + 1
fileone.close()
filetwo.close()

运行脚本时,1.txt内仅保留

运行脚本,得到a.txt文件

仔细观察每一列,在倒数第六列有发现:

得到:XSXSBUGKUADMIN

flag包裹提交后,提示flag错误

注意大小写区别,正确的flag为:

flag{xsxsbugkuadmin}

这不是md5

题目描述:666c61677b616537333538376261353662616566357d

16进制到文本字符串

使用在线工具16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具 (sojson.com)

得到flag

进制转换

题目描述:二进制、八进制、十进制、十六进制,你能分的清吗?

下载附件,得到

d87 x65 x6c x63 o157 d109 o145 b100000 d116 b1101111 o40 x6b b1100101 b1101100 o141 d105 x62 d101 b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e

 大佬的一些说法

以及在线网站

CTF在线工具-ASCII与进制转换|任意进制转换|ASCII、2进制、8进制、10进制、16进制 (hiencode.com)

编写脚本

 
 
keystring = "d87 x65 x6c x63 o157 d109 o145 b100000 d116 b1101111 o40 x6b b1100101 b1101100 o141 d105 x62 d101 b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e"
 
keys = keystring.split(" ")
flag = ""
for k in keys:
    if k[0] == "d":
        flag += chr(int(k[1:], 10))
    elif k[0] == "x":
        flag += chr(int(k[1:], 16))
    elif k[0] == "b":
        flag += chr(int(k[1:], 2))
    elif k[0] == "o":
        flag += chr(int(k[1:], 8))
 
print("flag: %s" % flag)

运行后得到flag

得到flag

affine

题目描述:

y = 17x-8 flag{szzyfimhyzd} 答案格式:flag{*}

BugkuCTF-Crypto题affine_ctfaffine-CSDN博客

搜索资料得:

编写脚本,运行得到flag

方法一

#-*-coding:utf-8-*-
#i=1
#while(17*i%26!=1):
#    i+=1
#求出17的乘法逆元

x='szzyfimhyzd'

for i in range(len(x)):
    print(i,chr(23*(ord(x[i])-ord('a')+8)%26+ord('a')))

方法二

x='szzyfimhyzd'

for i in range(len(x)):
	temp=23*(ord(x[i])-ord('a')+8)
	temp=temp%26
	result = temp + ord('a')
	print(chr(result),end='')

方法三

flag ="szzyfimhyzd"

flagList=[]

for i in flag:

flagList.append(ord(i)-97)


ansFlag = ""

    for i in flagList:

        for j in range(0, 26):
            c=(17 * j - 8) % 26
            if c==i:

                 ansFlag += chr(j+97)
ansFlag

得到flag

flag{affineshift}

Crack it

下载附件,解压打开得到未知文件

他放到linux之中 ,在此处打开终端

使用命令查看文件

可以使用命令查看shadow文件信息。

more shadow

得到

root:$6$HRMJoyGA$26FIgg6CU0bGUOfqFB0Qo9AE2LRZxG8N3H.3BK8t49wGlYbkFbxVFtGOZqVI
q3qQ6k0oetDbn2aVzdhuVQ6US.:17770:0:99999:7:::

继续使用命令   

john [OPTIONS] [PASSWORD-FILES]

john [选项] [密码文件]

--show[=LEFT] 显示破解的密码[如果=左,然后uncracked]

john --show shadow

但是似乎解密失败了,尝试换一个命令

john shadow

可以得到密码   hellokitty

按照提示,修改格式后,得到flag

flag{hellokitty}

rsa

下载附件,得到如下内容

N : 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597
e : 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619

enc : 38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192

采用factordb分解N,得到p,q。factordb.com

p = 15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199
q = 28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003

计算:

phi = (p - 1) * (q - 1)

d = invmod(e, N)

恢复明文:

m = pow(enc, d, N) % N

编写python脚本

import gmpy2
from Crypto.Util.number import long_to_bytes
 
 
N = 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597
e = 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619
 
enc = 38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192
 
p = 15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199
q = 28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003
 
phi = gmpy2.mul(p - 1, q - 1)
d = gmpy2.invert(e, phi)
 
m = pow(enc, d, N) % N
print(long_to_bytes(m))

运行

得到flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/640539.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年商业管理与文化传播国际学术会议(ICBMCC 2024)

2024年商业管理与文化传播国际学术会议&#xff08;ICBMCC 2024) 2024 International Conference on Business Management and Cultural Communication 一、【会议简介】 2024年商业管理与文化传播国际学术会议&#xff08;ICBMCC 2024&#xff09;是一次汇集全球商业管理领域…

SwiftUI中的手势(MagnificationGesture、 RotationGesture)

通过前两篇文章的探索&#xff0c;手势的基本使用规则已经较深的了解&#xff0c;本篇文章主要看看放缩手势MagnificationGesture和旋转手势RotationGesture。 MagnificationGesture 放缩手势 放缩手势在App中用的也比较广泛&#xff0c;下面先看一个示例效果&#xff1a; 上…

必示科技参与智能运维国家标准预研线下编写会议并做主题分享

近日&#xff0c;《信息技术服务 智能运维 第3部分&#xff1a;算法治理》&#xff08;拟定名&#xff09;国家标准预研阶段第一次编写工作会议在杭州举行。本次会议由浙商证券承办。 此次编写有来自银行、证券、保险、通信、高校研究机构、互联网以及技术方等29家单位&#xf…

前端vue 动态加载ts文件,动态调用ts内的方法

业务场景: 在某个业务场景中, 我们需要在数据库配置ts文件路径,和需要调用的函数名称, 前端需要再指定的场景下,触发对应的函数, 并执行处理逻辑,返回结果. 实现: 这是一个数据库配置生成的动态表单 动态校验的例子, 需要引用动态的函数校验 任意一个js文件, common1.ts c…

运算符重载(上)

目录 运算符重载日期类的比较判断日期是否相等判断日期大小 赋值运算符重载赋值运算符重载格式赋值运算符只能重载成类的成员函数不能重载成全局函数用户没有显式实现时&#xff0c;编译器会生成一个默认赋值运算符重载&#xff0c;以值的方式逐字节拷贝 感谢各位大佬对我的支持…

Blender导出fbx模型,导入到ue5中模型丢失纹理材质

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题原因二、最终效果 前言 Blender导出fbx模型&#xff0c;导入到ue5中&#xff0c;发现模型丢失纹理材质&#xff0c;里面的原神人物模型妮露居然是白模&#xff0c;郁闷了大半天 一、问题原因 我在Blender导出fbx文件时…

如何高效创建与配置工程环境:零基础入门

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、工程环境的搭建与准备 二、配置虚拟环境与选择解释器 三、编写代码与自动添加多行注释 …

Mybatis Cache(一)MybatisCache+Redis

前面提到了&#xff0c;使用mybatis cache&#xff0c;一般是结合redis使用。 一、demo 1、数据表 create table demo.t_address (id int auto_incrementprimary key,address_name varchar(200) null,address_code varchar(20) null,address_type int n…

6.小程序页面布局 - 账单明细

文章目录 1. 6.小程序页面布局 - 账单明细1.1. 竞品1.2. 布局分析1.3. 布局demo1.4. 页面实现-头部1.5. 账单明细1.5.1. 账单明细-竞品分析1.5.2. 账单明细-实现1.5.2.1. 账单明细-实现-mock数据1.5.2.2. 每日收支数据的聚合整理1.5.2.3. 页面scroll-view 1.6. TODO 1. 6.小程序…

雷电预警监控系统:守护安全的重要防线

TH-LD1在自然界中&#xff0c;雷电是一种常见而强大的自然现象。它既有震撼人心的壮观景象&#xff0c;又潜藏着巨大的安全风险。为了有效应对雷电带来的威胁&#xff0c;雷电预警监控系统应运而生&#xff0c;成为现代社会中不可或缺的安全防护工具。 雷电预警监控系统的基本…

Convolutional Occupancy Networks【ECCV2020】

论文&#xff1a;https://arxiv.org/pdf/2003.04618 代码&#xff1a;GitHub - autonomousvision/convolutional_occupancy_networks: [ECCV20] Convolutional Occupancy Networks 图 1&#xff1a;卷积占据网络。传统的隐式模型 (a) 由于其全连接网络结构&#xff0c;表现能力…

政策及需求多因素驱动下 中国适老化改造市场空间大

政策及需求多因素驱动下 中国适老化改造市场空间大 适老化改造是为了提高老年人居住环境的舒适度和安全性&#xff0c;满足老年人居住需求进行的建筑改造&#xff0c;根据住房和城乡建设部城市建设司发布的《城市居家适老化改造指导手册》可以将适老化改造分为基础性改造和提升…

Spring Cloud 系列之Gateway:(9)初识网关

传送门 Spring Cloud Alibaba系列之nacos&#xff1a;(1)安装 Spring Cloud Alibaba系列之nacos&#xff1a;(2)单机模式支持mysql Spring Cloud Alibaba系列之nacos&#xff1a;(3)服务注册发现 Spring Cloud 系列之OpenFeign&#xff1a;(4)集成OpenFeign Spring Cloud …

【小笔记】如何在docker中更新或导入neo4j数据?

如何在docker中更新或导入neo4j数据&#xff1f; &#xff08;1&#xff09;背景&#xff1a; 我尝试了4.4.9和5.19.0版本的Neo4j社区版&#xff0c;基于他们的镜像创建容器后&#xff0c;需要导入我准备好的csv文件或dump文件&#xff0c;因为数据量非常大&#xff0c;所以采…

装备制造项目管理软件:奥博思PowerProject项目管理系统

数字化正逐步改变着制造方式和企业组织模式。某制造企业领导层透露&#xff0c;在采用数字化项目管理模式后&#xff0c;企业的发展韧性更加强劲&#xff0c;构筑起了竞争新优势&#xff0c;企业产品研制周期缩短25%&#xff0c;生产效率提升18%。 随着全球经济的发展&#xf…

北理工提出 LTrack 双摄像头系统 | 专注于暗场景多目标跟踪,自动驾驶和夜间监控的福音!

低光照场景在现实世界应用中很普遍&#xff08;例如自动驾驶和夜间监控&#xff09;。最近&#xff0c;在各种实际用例中的多目标跟踪受到了很多关注&#xff0c;但在暗场景中的多目标跟踪却鲜少被考虑。 在本文中&#xff0c;作者专注于暗场景中的多目标跟踪。为了解决数据集…

【电子学会】2023年09月图形化一级 -- 芝麻开门

芝麻开门 1. 准备工作 &#xff08;1&#xff09;删除小猫角色&#xff0c;添加角色Key&#xff1b; &#xff08;2&#xff09;删除白色背景&#xff0c;添加背景Castle 1和Pathway。 2. 功能实现 &#xff08;1&#xff09;点击绿旗&#xff0c;钥匙在舞台中间&#xff…

Git 的安装和使用

一、Git 的下载和安装 目录 一、Git 的下载和安装 1. git 的下载 2. 安装 二、Git 的基本使用-操作本地仓库 1 初始化仓库 1&#xff09;创建一个空目录 2&#xff09;git init 2 把文件添加到版本库 1&#xff09;创建文件 2&#xff09;git add . 3&#xff09;g…

51单片机简单控制180度舵机

代码&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1K9dg2NwRhy49db_O_hqv-g?pwd1234 提取码&#xff1a;1234 一、路线 我在了解这个舵机之前最像想看到的是一个完全的路径。 比如我想学习b站上那个智能门锁&#xff0c;那就得每个模块的基本代码都会才能结合各…

​​​【收录 Hello 算法】第 10 章 搜索

目录 第 10 章 搜索 本章内容 第 10 章 搜索 搜索是一场未知的冒险&#xff0c;我们或许需要走遍神秘空间的每个角落&#xff0c;又或许可以快速锁定目标。 在这场寻觅之旅中&#xff0c;每一次探索都可能得到一个未曾料想的答案。 本章内容 10.1 二分查找10.2 二…