BabyMisc

...脑洞坑题(如果7z密码不是那一串超长字符串真不至于0解)

先打开Script.zip,随便打开一个文件夹,得到的是pxx的文件,内容为16进制字节。猜测pxx为对应字节的位置

先提取

import re
import os
path = r'Desktop\HDCTF\BabyMisc\Script' # 定义函数
def print_files(path):
lsdir = os.listdir(path)
dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]
files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]
if files:
for f in files:
a = os.path.join(path, f)
b = open(a,'r').read()
c= re.findall('p+\w{2,}',a)
for c in c:
k = open('pxxx.txt','a')
e = c + "" + b k.write(e) if dirs:
for d in dirs:
print_files(os.path.join(path, d)) # 递归查找
# return 0 print_files(path)

提取出来稍微处理以下,拼接起来(按顺序)

0a696e66313d24313b696e66323d24323b6f75663d24333b666c61673d24287763202d6320247b696e66317d207c20637574202d6420272027202d662031293b6966205b2024287763202d6320247b696e66327d207c20637574202d6420272027202d66203129202d67652024666c6167205d203b207468656e20666c61673d24287763202d6320247b696e66327d207c20637574202d6420272027202d662031293b6669203b73756d5f666c61673d303b666c6167315f666c61673d303b666c6167325f666c61673d303b464c41473d303b666f72206920696e20242873657120302024282824666c61672b24666c6167292929203b20646f206966205b2024464c4147202d65712030205d203b207468656e20464c41473d313b2064642069663d24696e6631206f663d246f75662062733d3120636f756e743d31207365656b3d2473756d5f666c616720736b69703d24666c6167315f666c6167207374617475733d6e6f6e653b73756d5f666c61673d2428282473756d5f666c61672b3129293b20666c6167315f666c61673d24282824666c6167315f666c61672b3129293b20656c736520464c41473d303b64642069663d24696e6632206f663d246f75662062733d3120636f756e743d31207365656b3d2473756d5f666c616720736b69703d24666c6167325f666c6167207374617475733d6e6f6e653b73756d5f666c61673d2428282473756d5f666c61672b3129293b666c6167325f666c61673d24282824666c6167325f666c61672b3129293b666920646f6e650a

转hex得到一个sh脚本

inf1=$1;
inf2=$2;
ouf=$3;
flag=$(wc -c ${inf1} | cut -d ' ' -f 1); # 获取flag长度
if [ $(wc -c ${inf2} | cut -d ' ' -f 1) -ge $flag ] ; #判断第二个文件长度是否大于flag
then flag=$(wc -c ${inf2} | cut -d ' ' -f 1); #如果大于就修改flag长度
fi ;
sum_flag=0;
flag1_flag=0;
flag2_flag=0;
FLAG=0;
for i in $(seq 0 $(($flag+$flag))) ; # 循环两倍flag长度次
do
if [ $FLAG -eq 0 ] ; then
FLAG=1;
dd if=$inf1 of=$ouf bs=1 count=1 seek=$sum_flag skip=$flag1_flag status=none;
sum_flag=$(($sum_flag+1));
flag1_flag=$(($flag1_flag+1));
else
FLAG=0;
dd if=$inf2 of=$ouf bs=1 count=1 seek=$sum_flag skip=$flag2_flag status=none;
sum_flag=$(($sum_flag+1));
flag2_flag=$(($flag2_flag+1));
fi
done # 整个逻辑是 把inf1和inf2中的字符交叉储存到ouf中
# 如果inf1中为1234
# inf2中为 5678
# ouf中就是 15263748

那应该就是要把Encrypted.file一分为二,交叉提取

with open('Encrypted.file','rb') as f:
data = f.read().hex();
out = {
'1': '',
'2': ''
}
for i in range(0,len(data),4):
out['1'] += data[i:i+2]
out['2'] += data[i+2:i+4] with open('out1','wb') as f1:
f1.write(bytes.fromhex(out['1'])); with open('out2','wb') as f2:
f2.write(bytes.fromhex(out['2']));

经过识别,得知out2是7z文件,out1是base字符串

BabyMisc hint:“二层加密类型:base&rot系列”

坑点来了,解完base32+rot47得到的超长字符串就是7z密码...

用7z打开(用winrar会提示密码字符过长被截断,无法打开),得到pmf文件

.pmf:pmf文件是 DiskGenius 备份后的一种文件格式,直接拖入DG即可打开

DG中打开得到三个压缩包与lsb的图片

只提取16进制字符串,保存为key(这里直接保存即可,压缩完会发现与$R9EG7XR.zip的CRC值一致)

明显的明文攻击(这里的考点是要判断出是用7z压缩,否则明文攻击会失败) 参考文章

前后为bandzip压缩与7z压缩的区别

得到flag:HDCTF{3783a799-0c94-4ebf-87bd-4731f862683b}

[HDCTF 2023]BabyMisc的更多相关文章

  1. 1630/2023: [Usaco2005 Nov]Ant Counting 数蚂蚁

    2023: [Usaco2005 Nov]Ant Counting 数蚂蚁 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 85  Solved: 40[S ...

  2. 「LOJ2000~2023」各省省选题选做

    「LOJ2000~2023」各省省选题选做 「SDOI2017」数字表格 莫比乌斯反演. 「SDOI2017」树点涂色 咕咕咕. 「SDOI2017」序列计数 多项式快速幂. 我们将超过 \(p\) ...

  3. HDU 2023 求平均成绩

    Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU ...

  4. 部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930;

    描述:部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930: 原因:所有物料规划PR时对舍入值的先后考虑逻辑影响到回写出来的temp ...

  5. 【BZOJ1630/2023】[Usaco2007 Demo]Ant Counting DP

    [BZOJ1630/2023][Usaco2007 Demo]Ant Counting 题意:T中蚂蚁,一共A只,同种蚂蚁认为是相同的,有一群蚂蚁要出行,个数不少于S,不大于B,求总方案数 题解:DP ...

  6. [Luogu 2023] AHOI2009 维护序列

    [Luogu 2023] AHOI2009 维护序列 恕我冒昧这和线段树模板二有个琴梨区别? #include <cstdio> int n,m; long long p; class S ...

  7. ural 2023 Donald is a postman(水)

    2023. Donald is a postman Time limit: 1.0 secondMemory limit: 64 MB Donald Duck works as a postman f ...

  8. loj #2023. 「AHOI / HNOI2017」抛硬币

    #2023. 「AHOI / HNOI2017」抛硬币   题目描述 小 A 和小 B 是一对好朋友,他们经常一起愉快的玩耍.最近小 B 沉迷于**师手游,天天刷本,根本无心搞学习.但是已经入坑了几个 ...

  9. bzoj1630/2023 [Usaco2007 Demo]Ant Counting

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1630 http://www.lydsy.com/JudgeOnline/problem.ph ...

  10. 洛谷 2023 [AHOI2009]维护序列

    洛谷 2023 [AHOI2009]维护序列 洛谷原题传送门 这个题也是一道经典的线段树模版(其实洛谷的模版二改一下输入顺序就能AC),其中包括区间乘法修改.区间加法修改.区间查询三个操作. 线段树的 ...

随机推荐

  1. 纯JavaScript制作动态增加的网页数字

    看到别的网页上打开,会显示一个动态的数字,感觉这个效果增加了网页的灵动感.就尝试着写代码,最终实现的方法: 会从0增加到一个数值,实现的代码: <!-- html 部分 --> <d ...

  2. 【iOS逆向与安全】iOS远程大师:通过H5后台远程查看和协助iPhone设备

    前言 在移动设备测试和远程协助的过程中,能够远程查看和协助iPhone设备是一项非常实用的功能.为了解决这一需求,我开发了一款名为iOS远程大师的产品,允许用户通过H5后台界面查看和协助越狱或非越狱的 ...

  3. git 安装 和 git 客户端的使用

    git clone 命令 # 查前当前登录用户的一些基本信息: # 查看当前登录的账号:git config user.name # 修改当前登录的账号为xcj:git config --global ...

  4. PHP 中使用 ElasticSearch 的最佳实践 (下)

    引言 上一篇文章,我们使用同步的方式将数据,同步写入到 ElasticSearch 中.接下来的这篇文章,主要介绍使用 RabbitMQ 的方式,异步的将数据同步到 ElasticSearch . 部 ...

  5. Android 13 - Media框架(23)- ACodecBufferChannel

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解 ACodecBufferChannel 上一节我们了解到input buffer 和 output buffer 是如何分配的了, ...

  6. Android 13 - Media框架(9)- NuPlayer::Decoder

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解 NuPlayer::Decoder,学习如何将 MediaCodec wrap 成一个强大的 Decoder.这一节会提前讲到 M ...

  7. Android 12(S) MultiMedia(十四)ESQueue

    之前看到在ATSParser::Pogram::Stream中会创建一个ESQueue,用于存储解析出来的ES data,这个ESQueue到底是用来做什么的呢?这节就来研究研究. 1.构造函数 ES ...

  8. 『手撕Vue-CLI』获取下载目录

    开篇 在上一篇文章中,简单的对 Nue-CLI 的代码通过函数柯里化优化了一下,这一次来实现一个获取下载目录的功能. 背景 在 Nue-CLI 中,我现在实现的是 create 指令,这个指令本质就是 ...

  9. 【论文笔记】轻量级网络MobileNet

    [深度学习]总目录 MobileNet V1:<MobileNets: Efficient Convolutional Neural Networks for MobileVision Appl ...

  10. C# 配置文件增加自定义节点

    话不多说直接开撸! 首先创建一个Config的文件夹然后新增一个后缀名为.config的文件 配置文件的代码如下: <?xml version="1.0" encoding= ...