【i春秋 Misc】

【题目链接】 i春秋 Misc ReCreators CryMisc

ReCreators

下载得到一个文件。老规矩,放入010文本编辑器中查看:

文件头是: KDMV 不清楚。 往下查看:

发现了 misc.vmdk 可通过 file 命令直接查看,得到如下:

root@DESKTOP-VUB6KKI:/mnt/c/Users/11145/Desktop# file ReCREATORS
ReCREATORS: VMware4 disk image

文件格式:.vmdk

文件类型:Virtual Machine Disk File

即 与虚拟机中虚拟磁盘文件有关。

可知: ReCREATORS 是虚拟机映像文件。 修改后缀名为 : ReCREATORS.vmdk

磁盘文件,立刻想到 一个叫 DiskGenius 的软件。

通过 打开磁盘文件 将 ReCREATORS.vmdk 加载进来。然后依次进入,发现一个MP4

将该mp4导出,打开一听是一首动漫主题曲。 用 010打开查看,在最后一段发现异常数据。

全是一串数据。导出 ,怀疑是 ASCII转换,保存为 1.hex

参考大佬脚本题解

(ps:该脚本可适用 得到一堆ASCII文本,通过base16(十六进制转换)/32/64层层解密得出flag 的情况)

import binascii
import base64 def get_continuous_asciis(ranges: list):
"""
取连续的ASCII文本
:param ranges: 范围数组, 例[['A', 'B']]
:return:
"""
return ''.join([''.join(map(chr, range(ord(r[0]), ord(r[1]) + 1))) for r in ranges]) with open('E:\\1.hex') as f:
enc = f.read() while True:
b16 = b32 = b64 = False
if all([i.upper() in '0123456789ABCDEF' for i in enc]):
b16 = True
elif all([i.upper() in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ2345678=' for i in enc]):
b32 = True
elif all([i.upper() in get_continuous_asciis([['a', 'z'], ['A', 'Z'], ['0', '9']]) + '+/=' for i in enc]):
b64 = True
else:
# print('End')
break
if b16:
# print('Base16')
enc = binascii.a2b_hex(enc).decode('utf-8')
elif b32:
# print('Base32')
enc = base64.b32decode(enc).decode('utf-8')
elif b64:
# print('Base64')
enc = base64.b64decode(enc).decode('utf-8')
# print('-' * 30)
print(enc)
print('-' * 30)

得到flag:

------------------------------
flag{wh4t_a_w0nderfu1_d4y}
------------------------------

CryMisc

下载得到一个压缩包,解压得到一个 jiami.py 加密脚本 和一个 被加密的压缩包 gogogo.zip

jiami.py 如下:

# -*- coding:utf8 -*-

import pyminizip
from hashlib import md5
import os def create(files, zfile):
password = os.urandom(15)
password = md5(password).hexdigest()
pyminizip.compress_multiple(files, zfile, password, 0)
pass if __name__ == '__main__':
files = ['jiami.py','gogogo.zip']
zfile = 'crypto.zip'
create(files, zfile)

通过这个加密脚本 ,很清楚的看到, 是将 jiami.pygogogo.zip 一起加密成 crypto.zip

并且注意到 这是通过 15位md5加密而成,爆破难度顶天。

由于已知一个和被加密压缩包一样加密算法的文件,便可马上想到 明文攻击

1、将 jiami.py 用winrar 压缩成一个压缩包 -> jiami,zip 当作 明文

(可能是压缩算法原因,对于明文攻击,目前来看,必须采用winrar方可成功)

2、打开ARCHPR 爆破压缩包神器。将加密zip gogogo.zip 导入,选择 明文攻击类型

3、进行明文攻击。

注:对于ARCHPR4.0版本,它会自动跳出,只需等待就可。

而ARCHPR4.54版本,攻击一段时间,直接按下停止即可,如下图:

它会自动跳出 另存为解密压缩包

解压解密成功的压缩包,得到三个文件: AES.encrytAESencrypt.pyRSA.encrypt

打开 AESencrypt.py

# -*- coding:utf8 -*-
from Crypto.Cipher import AES s=open('next.zip','rb').read()
BS=16
pad_len=BS-len(s)%BS
padding=chr(pad_len)*pad_len
s+=padding key='我后来忘了'
n=0x48D6B5DAB6617F21B39AB2F7B14969A7337247CABB417B900AE1D986DB47D971
e=0x10001
m=long(key.encode('hex'),16)
c=pow(m,e,n)
c='0{:x}'.format(c).decode('hex')
with open('RSA.encrypt','wb') as f:
f.write(c) obj=AES.new(key,AES.MODE_ECB)
with open('AES.encryt','wb') as f:
f.write(obj.encrypt(s))

这里给了我们很多信息:

1、有一个 next.zip 的存在

2、key 是经过 RSA加密

3、一开始是AES加密。

解密RSA得到key

已知 n,利用 yafu 分解 n得到p q 或者 在线网站分解

n = 32945885482421841602167475970472000545315534895409154025267147105384142461297

得到:

p = 177334994338425644535647498913444186659
q = 185783328357334813222812664416930395483

编写脚本:

#coding:utf-8
import gmpy2
import binascii
from Crypto.Util.number import long_to_bytes
p = 177334994338425644535647498913444186659
q = 185783328357334813222812664416930395483
n = 32945885482421841602167475970472000545315534895409154025267147105384142461297
e = 0x10001
d = int(gmpy2.invert(e,(p-1)*(q-1)))
mingwen = open("E:\\RSA.encrypt","rb").read()
hexstr = binascii.b2a_hex(mingwen).decode("utf-8")
c = int(hexstr,16)
m = pow(c, d, n) # m 的十进制形式
string = long_to_bytes(m) # m明文
print(string) # 结果为 b‘ m ’ 的形式

跑出结果如下:

得到 key: copy__white__key

得到key解密生成next.zip

利用已知 AESencrypt.py 编写解密脚本 获得 next.zip python2脚本如下

from Crypto.Cipher import AES

s=open('AES.encryt','rb').read()
BS=16
pad_len=BS-len(s)%BS
padding=chr(pad_len)*pad_len
s+=padding key='copy__white__key' obj=AES.new(key,AES.MODE_ECB)
with open('next.zip','wb') as f:
f.write(obj.decrypt(s))

运行得到 next.zip 查看encrypt.py :

# -*- coding:utf8 -*-
from base64 import * s=open('flag.jpg','rb').read()
s='-'.join(map(b16encode,list(s)))
s=map(''.join,zip(*(s.split('-'))))
with open('first','wb') as f:
f.write(b16decode(s[0]))
with open('second','wb') as f:
f.write(b16decode(s[1]))

加密脚本传递的信息为:

将 一张flag.jpg 分成一半。first和second,并且对其两部分均使用base16 decode一次。

编写脚本得flag.jpg

于是 可以编写解密脚本(python2):

# -*- coding:utf8 -*-
from base64 import *
s = [0,1]
with open('first','rb') as f:
s[0] = b16encode(f.read())
with open('second','rb') as f:
s[1] = b16encode(f.read())
s=map(''.join,zip(*s))
s=b16decode(''.join(s))
with open('flag.jpg','wb') as f:
f.write(s)

得到flag.jpg

用010打开查看,利用插件,注意到最后有大段数据段异常填充,

点击查看发现 8BPS psd文件头! 于是截下另存为 psd。

用ps打开 。疑似flag的假的flag出现。于是 将背景图层导出png查看。

为什么要导出背景图层?

1、该图就三个图层:

一个是文字图层(迷惑行为),还有一个是图片表情包。背景图层(锁定)flag藏在这里最有可能。

2、 之前得到的key: copy__white__key 暗示导出png格式

用 stegsolve查看:

扫描二维码得flag

flag为:

flag{409d7b1e-3932-11e7-b58c-6807154a58cf}

【侵权删】

【转载请放链接】 https://www.cnblogs.com/Jlay/p/CryMisc.html

(i春秋 Misc)ReCreators - CryMisc的更多相关文章

  1. i春秋misc部分writeup

    i春秋misc部分writeup 一.敲击 方方格格,然后看到下面的格式,猜测出是键盘上的布局,然后看这些字母形成的形状想那些字母,就是flag了 2.滴滴滴 放到ctfcack里解密,发现时栅栏密码 ...

  2. I春秋——Misc(贝斯家族)

    不好意思呀!最近一直忙着学习python,竟然忘记更新I春秋里面的题目了(QAQ),我以后会时时刻刻提醒自己要更新 永远爱你们的! ----新宝宝 1:贝斯家族: 解题思路:我相信看见这一题都能够想到 ...

  3. i春秋------Misc更新

    今天早上起来很开森!因为今天要打比赛了(2018年3月安恒杯线上赛),等到比赛开始得时候,发现自己登陆不上去 想了很久发现自己只是预约了比赛,并没有报名(QAQ ),心疼一下傻傻的自己.现在开始工作: ...

  4. i春秋——Misc之百度杯

    今天心里很是不开森,想想往日何必那么努力呢?不如你的比比皆是,可是人家就是因为有关系,你又能怎样呢? 你所有应该有的都被打翻了,别灰心,至少你曾经努力过! 愿我未来的学弟学妹们都能一直开开心心的过好每 ...

  5. i春秋----Misc

    好久没有写 博客今天更新多了一些 解题思路:题目做多了,自然能够想到是凯撒解密: 查看得到答案; flag{4c850c5b3b2756e67a91bad8e046dda} 2: 解题思路:是我想太多 ...

  6. CTF-i春秋网鼎杯第二场misc部分writeup

    CTF-i春秋网鼎杯第二场misc部分writeup 套娃 下载下来是六张图片 直接看并没有什么信息 一个一个查看属性 没有找到有用信息 到winhexv里看一下 都是标准的png图片,而且没有fla ...

  7. CTF-i春秋网鼎杯第一场misc部分writeup

    CTF-i春秋网鼎杯第一场misc部分writeup 最近因为工作原因报名了网鼎杯,被虐了几天后方知自己还是太年轻!分享一下自己的解题经验吧 minified 题目: 一张花屏,png的图片,老方法, ...

  8. 2020 i春秋新春战疫公益赛 misc

    0x01 code_in_morse morse decode后得到: RFIE4RYNBINAUAAAAAGUSSCEKIAAAAEUAAAAA7AIAYAAAAEPFOMTWAAABANUSRCB ...

  9. 实战经验|大神战队都在i春秋教你打CTF

    全国大学生信息安全竞赛创新实践能力赛旨在培养.选拔.推荐优秀信息安全专业人才创造条件,促进高等学校信息安全专业课程体系.教学内容和方法的改革,培养学生的创新意识与团队合作精神,普及信息安全知识,增强学 ...

随机推荐

  1. 【Azure 批处理 Azure Batch】在Azure Batch中如何通过开始任务自动安装第三方依赖的一些软件(Windows环境)

    准备条件 Azure Batch账号 需要安装的软件包(zip)文件,里面包含该软件的msi安装文件, 此处使用python.msi 版本 3.3.3 作为例子(https://www.python. ...

  2. windows注册redis为服务,zookeeper为服务

    windows注册redis为服务,zkserver为服务 1.redis部分 通过redis内置工具安装 进入redis安装目录 1.shift+鼠标右键打开菜单,点击"在此处打开命令窗口 ...

  3. List集合,对象根据某个相同的属性,合并另外属性

    描述及实现: 1.List中有 Modular字段值有重复一样的2.Modular字段一样的话去重并且OrderAmount相加 HashMap<String,DataReport> te ...

  4. E. Copying Data 解析(線段樹)

    Codeforce 292 E. Copying Data 解析(線段樹) 今天我們來看看CF292E 題目連結 題目 給你兩個陣列\(a,b\),有兩種操作:把\(a\)的一段複製到\(b\),或者 ...

  5. 【论文阅读】An Empirical Study of Architectural Decay in Open-Source Software

    2020-06-19这篇文章是我学习 软件架构与中间件 课程时分享的论文.可以说,这篇文章塑造了我基本的科研观,也养成了我如今看论文的习惯.感谢老师们,也感谢恒恒对我的帮助. 论文地址: https: ...

  6. PLC模拟量输入和数字量输入是什么

    数字信号输入输出: 就是开关闭合,断开. 模拟量输入输出: 就是一个数值.比如:液位1.5米,温度30度,这样的数. 输入单元 输入单元是PLC与被控设备相连的输入接口,是信号进入PLC的桥梁,它的作 ...

  7. Java学习的第五十天

    1.求长方体的体积要求类中用但参数的方法去求 public class Cjava { public static void main(String[]args) { Box b1=new Box(1 ...

  8. vue+el-table在ajax分页时支持全选单页和全选所有

    需求:el-table中,ajax分页的情况下,要支持全选单页和全选所有页中的记录,效果如下图所示: 界面代码:           <el-table :data="tableDat ...

  9. python实现常见的设计模式

    Pyhton实现常用的23种设计模式[详解] 关注公众号[轻松学编程],回复[设计模式],获取本文源代码. 在文章末尾可以扫码关注公众号. 一.概念 软件工程中,设计模式是指软件设计问题的推荐方案. ...

  10. yii中的andFilterWhere使用说明

    当 WHERE 条件来自于用户的输入时,你通常需要忽略用户输入的空值. 例如,在一个可以通过用户名或者邮箱搜索的表单当中,用户名或者邮箱 输入框没有输入任何东西,这种情况下你想要忽略掉对应的搜索条件, ...