【CTF WriteUp】2023数字中国创新大赛网络数据安全赛道决赛WP(2)

news2024/11/25 16:02:50

2023数字中国创新大赛网络数据安全赛道决赛WP(2)

数据分析题目

菜的要死,各种不会,答案也不全,凑合吧

数据分析-bankmail

流量为邮件通信流量
在这里插入图片描述
将其中邮件部分导出,保存为eml文件并打开,看到Alice给Bob的第一封邮件
在这里插入图片描述
计算标题的md5进行提交,即为第一个答案。

将流10中的邮件提出,可以找到损坏内容
在这里插入图片描述
该损坏内容为被删去文件头的xls文件,补充文件头D0CF11E0A1B11AE1后打开,发现文件已加密
在这里插入图片描述
爆破得到密码red123,进入后可找到吕任均的身份证号,即为第二个答案。
在这里插入图片描述
在这里插入图片描述
最后一封邮件,是字符符号
在这里插入图片描述
内容为flag{dadff7dd-1b81-4f71-bc99-afd92572b82e},计算md5提交,即为第三个答案。

数据分析-badhole

使用工具打开,在app中发现一个奇怪的包名,内有被删除的另一个包名
在这里插入图片描述
正常包不会是这个结构。事后验证,提出base.apk并扔给virustotal,确认为恶意软件
在这里插入图片描述
包名mobi.infolife.taskmanager计算md5即为第一个答案**(奈何提交不对)**

(第二问不会)

然后尝试反编译base.apk失败。直接按照zip格式解压,可以发现有三个dex文件
在这里插入图片描述
使用dex2jar尝试将其转换为jar文件,仅有classes.dex成功,另外两个失败。classes.dex转换出的jar文件并没有什么内容,主要还是依靠读取的库文件。
在这里插入图片描述
在其so文件中可以找到一个解密函数
在这里插入图片描述
解密函数的方法是使用AES-ECB模式解密,填充为PKCS5,密钥为huangdh’l,.AMWK;。但是解密对象未知,还需要到java代码中寻找
在这里插入图片描述
在java代码中可以发现,decrypt解密函数解密的对象是结尾为.dex,但名字不是classes.dex的两个文件,即刚才我们试图反编译失败的两个文件。
在这里插入图片描述
于是我们通过代码将其解密,再次尝试反编译,成功。

from Crypto.Cipher import AES
key = "huangdh'l,.AMWK;"
cip = AES.new(key=key)
data = open("classes3.dex", "rb").read()
data2 = cip.decrypt(data)
open("classes3new.dex", "wb").write(data2)

还记得最开始的问题包名为mobi.infolife,在classes2.dex文件解密后的dex文件中未发现相关内容;在classes3.dex解密后反编译的java代码中存在相应的包。以下为Dr.Web vxCube提供的分析验证:
在这里插入图片描述
在classes3.dex解包后的内容中,有一个名称奇怪的包和类,其中有一个较长的数组。
在这里插入图片描述
在这里插入图片描述
将数组部分内容转为字符,可以得到192.168.5.167:44321,即为回连地址。此为第三个答案。

工具可以提取镜像中所有的图片,在其中找到威胁图片,此为第四个答案。
在这里插入图片描述
在数据库文件中可以找到删除的用户通讯录节点是4
在这里插入图片描述
可以看到编号4为客户乙
在这里插入图片描述
在这里插入图片描述
这里的备注即为第五个答案。

挑战区题目

挑战三:my_fault

请参考论文《Modulus Fault Attacks Against RSA-CRT Signatures》

挑战四:Beyond Pro

打开流量包,发现是一次攻击的流量,攻击者首先扫描各种隐藏文件,最终攻击者找到了.api.php,并开始发送攻击流量
在这里插入图片描述
攻击流量类似冰蝎流量。冰蝎流量使用AES加密,但在标准AES-128算法上进行了简单修改,在密文最后最加一个magic尾巴,随机产生一个随机长度的额外字节数组,简称aes_with_magic算法。由于我们暂时不知道加密密钥,所以只得写程序爆破。因为解密后攻击者的php流量特征过于明显,所以以攻击者某次的payload进行爆破:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import base64
import hashlib
from Crypto.Cipher import AES

def Decrypt(key, data):
    magicNum = int(key[:2], 16) % 16
    data = data[:len(data) - magicNum]

    c = AES.new(key, AES.MODE_ECB)
    decodebs = base64.b64decode(data)

    return c.decrypt(decodebs)

def Key_Brute(data):
    with open('pass.txt', 'rb') as f:
        plain = [i.strip() for i in f.readlines()]

    for i in plain:
        md5_enc = hashlib.md5(i).hexdigest()
        try:
            key = md5_enc[:16].encode()
            AES_dec = Decrypt(key, data).decode('utf-8')
            print(i)
            print(AES_dec)
            exit(1)
        except Exception as e:
            print('[-] Crack Failed')

if __name__ == '__main__':
    data = b''
    Key_Brute(data)

在这里插入图片描述
得到密码music。写程序解密服务器的应答内容,可在其中一个较长的返回中(流705)可以解密得到一个图片

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import base64
import hashlib
from Crypto.Cipher import AES

def Decrypt(data):
    md5_enc = hashlib.md5('music').hexdigest()
    key = md5_enc[:16].encode()
    magicNum = int(key[:2], 16) % 16
    data = data[:len(data) - magicNum]

    c = AES.new(key, AES.MODE_ECB)
    decodebs = base64.b64decode(data)

    return c.decrypt(decodebs).decode('utf-8')

if __name__ == '__main__':
    ciphertext = open("ciphertext.txt", "r").read()
    j = json.loads(Decrypt(ciphertext)[:-2])
    open("temp.png", "wb").write(base64.b64decode(base64.b64decode(j["msg"])))

在这里插入图片描述
注意到,在HTTP对象中同样有一个图片
在这里插入图片描述
在这里插入图片描述
于是我们得到了两张内容相同,但大小不同的图片,后边就是盲水印工具的工作了,需要使用python3版本的那个blind-watermark,最终得到flag。
在这里插入图片描述

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

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

相关文章

收藏的一些好用的网站

一、PPT模板 网址:https://pptmon.com/ PPTMON - Free PowerPoint Templates and Google Slides Themes 是一个提供 PowerPoint 模板和图标素材下载的网站。该网站上有大量的 PowerPoint 模板,可供用户根据自己的需要进行选择和下载。此外,该…

二叉树OJ题目合集(单值、对称、平衡、构建加遍历)

目录 前言: 一:单值二叉树 二:二叉树遍历 核心点 (1)前序 (2)中序 (3)后序 三:判断两颗树是否相同 四:判断二叉树是否对称 五:判断一颗树是否为另一颗树的子树 六:平衡二叉树 七&…

创建的django项目生成后,没有默认的数据库生成

目录 1、尚未执行迁移 1.1 首先,在setting.py文件中配置数据库链接 1.2 确保在Terminal运行已经执行了如下命令来创建数据库表格。 1.3 在数据库刷新就有了 2、已经使用了自定义的数据库 3、尚未配置默认数据库 1、尚未执行迁移 1.1 首先,在setting.…

介绍一款优秀的网址导航,可以部署到自己公司内部:hexo-theme-webstack

GitHub - HCLonely/hexo-theme-webstack: A hexo theme based on webstack. | 一个基于webstack的hexo主题。 中文文档 A Hexo theme based on WebStackPage. Installation hexo > 4.0 git clone https://github.com/HCLonely/hexo-theme-webstack themes/webstack hexo …

C++中的stack容器

文章目录 stack的介绍stack的使用 stack的介绍 stack是一种容器适配器,专门用在具有后进先出操作特性的环境中,只能在容器的一端进行插入删除;stack是作为容器适配器被实现的,容器适配器即是对特性类封装作为其底层的容器&#xf…

101-Linux_I/O复用方法之select

文章目录 1.select系统调用的作用2.select系统调用的原型3.集合fdset4.使用select实现TCP服务器(1)服务器端代码:(2)客户端代码(3)运行结果截图 1.select系统调用的作用 在一段指定时间内,监听用户感兴趣的文件描述符的可读、可写和异常等事件 2.select系统调用的…

Typora Markdown 中 LaTeX 公式居左、对齐的方法

我们知道公式块里的公式默认是居中的,我们想让公式居左(顶着左页面)可以使用如下格式的 flalign 数学环境: 不多说,先看示例 示例 \begin{flalign} &\iint_D\frac{\sin y}{y}{\rm d}\sigma\\ &\int_0^1{\rm…

【redis】redis分布式锁(二)可重入锁+设计模式

【redis】redis分布式锁(二)可重入锁 文章目录 【redis】redis分布式锁(二)可重入锁前言一、可重入锁(又名递归锁)1、说明:2、分开解释:3、可重入锁的种类隐式锁(即synch…

Nautilus Chain 测试网第二阶段,推出忠诚度计划及广泛空投

随着更多的公链底层面向市场,通过参与早期测试在主网上线后获得激励成为了行业的一个热点话题,在Apots、Arbitrum One、Optimism等陆续发放了测试空投后,以Layer3为主要特性的Nautilus Chain也在前不久明确表示将会有空投,引发行业…

《嵌入式系统》知识总结3:STM32微控制器

STM32系列产品命名规则 以stm32f103zet6为例 Stm32微控制器架构 模块 • 处理器核心 • 存储器 • 时钟电路、系统总线 • 外设(硬件单元):I/O接口、通信接口、定时器 、ADC和DAC, …… 系统结构 哈佛存储结构 • 独立的…

mockjs学习笔记

文章目录 一、什么是mockjs二、安装mockj项目安装mock 三、mock语法生成字符串生成文本生成标题和句子生成段落生成数字生成自增id生成姓名-地址-身份证随机生成图片生成时间 mock拦截请求定义get请求定义post请求 四、实现新闻管理案例获取数据添加新闻删除新闻 一、什么是moc…

有趣的地理题

题目 总部位于上海的“哔哩哔哩”(简称B站),是国内知名的视频网站。在B站投稿的用户被称为“UP主”。据统计,B站的UP主群体中,来自上海的比例最高,200万粉丝以上的UP主,来自上海的比例超过 30 …

最佳Midjourney动漫相关风格提示词,值得收藏

先补充概念,后面慢慢补图片咯 动漫艺术家 下面是一些最伟大的艺术家的名单 Hayao Miyazaki, Co-founder of Studio Ghibli(宫崎骏,吉卜力工作室的共同创始人)Eiichiro Oda, One Piece(织田荣一郎,《海贼…

【Linux】Linux下常见基本指令

🌱博客主页:大寄一场. 🌱系列专栏:Linux 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 前言 一、文件和目录操作指令 ls指令 pwd指令 cd指令 touch指令 rmdir指令 && rm 指令: man指…

吉布斯采样方法

吉布斯采样方法 对于多元分布, P ( X ) , X [ x 1 x 2 ] P(X), X\left[\begin{array}{l} x_1 \\ x_2 \end{array}\right] P(X),X[x1​x2​​]吉布斯抽样执行如下。假设很难从联合分布中抽样 P ( x 1 , x 2 ) P\left(x_1, x_2\right) P(x1​,x2​)但是从条件分布 P ( x 1 ∣ …

一键轻松拥有自己专属的 ChatGPT 网页版,搭建一个私人的可随时随地访问的ChatGPT网站

前言 ChatGPT是一种基于Transformer架构的自然语言处理模型,由OpenAI开发。GPT是“Generative Pre-trained Transformer”的缩写,意为“预训练生成式Transformer模型”。 ChatGPT模型是一种无监督学习模型,它可以在大规模文本数据上进行预训…

scratch比大小 中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析2023年3月

目录 scratch比大小 一、题目要求 1、准备工作 2、功能实现 二、案例分析

【react从入门到精通】深入理解React生命周期

文章目录 前言React技能树React的生命周期是什么React v16.0前的生命周期组件初始化(initialization)阶段组件挂载(Mounting)阶段组件更新(update)阶段组件销毁阶段 React v16.4 的生命周期总结写在最后 前言 在上一篇文章《react入门这一篇就够了》中我们已经掌握了React的基本…

软件STM32cubeIDE下STM32F1xx和STM32F4xx使用:备份寄存器+复位标志位-基础样例

软件STM32cubeIDE下STM32F1xx和STM32F4xx使用:备份寄存器复位标志位-基础样例 1、前言2 、 实验环境3、自我总结(1)对于备份寄存器(BKP):(2)对于复位标志位(RCC_CSR)&…

【5G RRC】RSRP、RSRQ以及SINR含义、计算过程详细介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…