记:2023香山杯-Ez加密器-题目复现和学习记录““

news2024/9/22 17:21:31

文章目录

  • 前言
  • 题目分析and调试过程
  • 完整exp

前言

前段时间的比赛,那会刚入门o(╥﹏╥)o都不会写,现在复现一下。

题目分析and调试过程

在这里插入图片描述
查壳nie

进入IDA,shift+F12查找下字符串看看,定位过去

在这里插入图片描述
在这里插入图片描述
先用N重命名一下函数,方便阅读。这里就是要求我们输入 code 和 flag。 分别 放入 a1 和 a2 中,查看一下该函数被谁调用了。
在这里插入图片描述

跳到上一级函数。

在这里插入图片描述
发现俩个参数a000000,a11111111111111,有点奇怪,推测一下应该是输入的长度。长度分别是 6 和 40
在这里插入图片描述
在这里插入图片描述
接着分析 看看sub_1400036A0里面的东西,
在这里插入图片描述
这里移位 4 移位 6 有点像base64编码,接着下面看,
在这里插入图片描述
在这里插入图片描述
一个base64变表,可以动态调试验证一下,输入code 为 123456,构造flag : DASCTF{11111111111111111111111111111111}
在这里插入图片描述
在这里插入图片描述
验证成功,sub_1400036A0就是对code进行一个base64编码。

接着看sub_7FF6D8B93AE0,点进去发现实在看不懂是什么,借助一下插件Signsrch
在这里插入图片描述
在这里插入图片描述
发现DES加密,随便双击跟进一下,会发现跟进到sub_7FF6D8B93AE0里面去了,因此可以判断这里是DES加密。
在这里插入图片描述
关于DES加密的介绍,可以看一下博主总结的DES加密原理

这里如果明白DES加密,就知道会有一个key,key的长度为8个字节(64-bit),经由这个主钥匙进行密钥调度得到16个子钥匙,再对密文继续迭代加密,总共16轮,得到密文
在这里插入图片描述

这里就已经分析完了,str1是给出的,不过还有一步,程序在运行时对Str1进行了修改,动态调试到下图处,得到真正的Str1。

在这里插入图片描述

完整exp

from Crypto.Cipher import DES
import base64

encrypted_data = bytes.fromhex(
    "0723105D5C12217DCDC3601F5ECB54DA9CCEC2279F1684A13A0D716D17217F4C9EA85FF1A42795731CA3C55D3A4D7BEA")
print(encrypted_data)


def decrypt_DES(key, encrypted_data):
    cipher = DES.new(key, DES.MODE_ECB)
    decrypted_data = cipher.decrypt(encrypted_data)
    return decrypted_data


string1 = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+/'
string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'

string = str.maketrans(string2, string1)

for i in range(1000000):
    key = base64.b64encode(str(i).zfill(6).encode()).decode().translate(string).encode()

    decrypted_data = decrypt_DES(key, encrypted_data)

    if b"DASCTF{" in decrypted_data:
        print(decrypted_data)
        exit()
# DASCTF{f771b96b71514bb6bc20f3275fa9404e}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPDB7-新特性-角色创建

GPDB7-新特性-角色创建 9月GPDB7发布了release版本,新增了很多新特性及性能改进,对GPDB用户带来福音。业务在调研GPDB6升级到GPDB7的过程中,生产环境会创建用户,利用这些用户进行迁移。但是出现问题了,竟然会报&#x…

如何使用Linux编写STM32程序并且烧录

前言 (1)如果有嵌入式企业需要招聘湖南区域日常实习生,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02gmail.com,此消息至2025年1月1日前均有效 (2&#xff0…

Z41H-64C高压闸阀型号解析

Z41H-64C型号字母含义 Z41H-64C型号是德特森阀门常用的高压闸阀型号字母分别代表的意思是: Z——代表阀门类别《闸阀》 4——代表连接方式《法兰》 1——代表结构形式《明杆》 H——代表密封堆焊《硬质合金》 -《分隔键》 64——代表公称压力《6.4MPA》 C——代表阀体材…

RT-Thread 6. ENV增加组件(从服务器下载得到)

键入“Y”、或者空格选中 保存 保存之后,自动修改这个文件 退回到ENV界面,输入:pkgs --update 多了 如果用keil4编译的话,输入:scons --targetmdk4,重新生成keil4工程,双击“project.uvpro…

10-类加载器

类加载器 类与类加载器 判断类是否“相等” 任意一个类,都由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性,每一个类加载器,都有一个独立的类名称空间。 因此,比较两个类是否“相等”,只有在这…

北邮22级信通院数电:Verilog-FPGA(6)第六周实验:全加器(关注我的uu们加群咯~)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 作者建群啦!!!欢…

【计网 P2P】计算机网络 P2P(Peer to Peer)详解:中科大郑烇老师笔记 (七)

目录 0 引言1 C/S 模式 VS P2P模式2 P2P 概述2.1 纯P2P架构2.2 非结构化P2P和结构化(DHT)P2P2.2.1 非结构化P2P2.2.1 结构化P2P 2.3 P2P需要解决的问题及解决方案2.3.1 集中式目录2.3.2 完全分布式2.3.3 混合体 🙋‍♂️ 作者:海码…

智能井盖监测系统功能,万宾科技传感器效果

智能井盖传感器的出现是高科技产品的更新换代,同时也是智慧城市建设中的需求。在智慧城市建设过程之中,高科技产品的应用数不胜数,智能井盖传感器的出现,解决了城市道路安全保护着城市地下生命线,改善着传统井盖带来的…

【Qt样式(qss)-5】qss局部渲染混乱,错乱,不生效的一种原因

前言: 之前写过一些关于qss的文章: 【Qt样式(qss)-1】手册小结(附例:软件深色模式)_深蓝色主题qss表-CSDN博客 【Qt样式(qss)-2】使用小结(软件换肤&#…

拆贡献+统计非法可能不统计非法贡献:ARC150D

https://atcoder.jp/contests/arc150/tasks/arc150_d 先拆贡献成每个点,然后就只需要考虑这条链上的情况了 我们现在要求的是: 在所有点选完之前,最后一个点被选了多少次 我们发现这很难做,但有个性质: 在所有点选…

国外创意二维码案例:利马博物馆的二维码艺术展!

今天我们要分享的品牌创意二维码案例来自国外一家博物馆。 2022年12月,位于秘鲁的利马艺术博物馆策划并展出了一场别开生面的艺术展。和以往的展览不同,这次展览的主角是一些艺术画作“雕刻”而成的二维码。 利马博物馆(The Lima Art Museum…

OPC UA:工业领域的“HTML”

OPC UA是工业自动化领域的一项重要的通信协议。它的特点是包括了信息模型构建方法。能够建立工业领域各种事物的信息模型。在工业自动化行业,OPCUA 类似互联网行业的HTTP协议和“HTML”语言。能够准确,可靠地描述复杂系统中各个元素,并且实现…

质数(素数)prime :只能被 1 和 它本身整除的自然数,不可再分,(三种方式求出质数)

从 2 开始,到这个数 减 1 结束为止, 都不能被这个数本身整除。例如:5 是否是质数 ? 那么 2,3,4,都不能被 5 整除 所以 5 是 质数判断 n 是否是质数? 2,3,4&…

Python基础入门例程12-NP12 格式化输出(二)

目录 描述 输入描述: 输出描述: 示例1 解答: 说明: 描述 牛牛、牛妹和牛可乐都是Nowcoder的用户,某天Nowcoder的管理员希望将他们的用户名以某种格式进行显示, 现在给定他们三个当中的某一个名字name…

No module named ‘cv2’ 解决方法

目录 解决方案1解决方案2 解决方案1 一般情况下的解决方案 在自己的虚拟环境里面安装就行 pip install opencv-python解决方案2 但是我遇到的情况没有这么简单,我使用了pip list | grep open 搜索含有open字样的opencv的包,结果显示已经安装了 我直接进入我的自定义的虚拟…

TCP链接为什么要必须要四次挥手,为什么链接三次握手即可?

为什么TCP链接要三次握手,四次挥手? 寄快递两个问题三次握手四次挥手 寄快递 背景:小王要寄快递,早上上班把快递放在门口,等上午快递员到门口拿到快递。 小王打电话给快递小哥告诉他取件码。 这个交互其实就是TCP 传输…

Python第三方库 - Flask(python web框架)

1 Flask 1.1 认识Flask Web Application Framework( Web 应用程序框架)或简单的 Web Framework( Web 框架)表示一个库和模块的集合,使 Web 应用程序开发人员能够编写应用程序,而不必担心协议,线…

理解OOMKilled

背景 今天部署es集群时,pod总是报OOMKilled,于是理解的于是进行了排查 参考文章:https://zhuanlan.zhihu.com/p/519430209?utm_id0 排查,从两方面入手 1.查看node,并通过kubectl describe node,pod所在…

【Java笔记+踩坑】设计模式——原型模式

导航: 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客​ 目录 零、经典的克隆羊问题(复制10只属性相同的羊) 一、传统方案&#xff1…

unity 圆形障碍,避障算法,动态避障,静态避障,屎壳郎推屎回娘家

Unity3d圆形障碍避障算法,动态避障,静态避障 屎壳郎推屎回娘家 废话不多上图 1:根据,屎和娘家的位置做计算,不管屎在哪里,获取朝向娘家,屎后面一定距离的位置 //获取位置Vector3 GetTraget…