前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >De1CTF_Misc部分wp

De1CTF_Misc部分wp

作者头像
回天
发布2023-04-25 15:12:11
3820
发布2023-04-25 15:12:11
举报
文章被收录于专栏:Ga1@xy's W0r1dGa1@xy's W0r1d

Misc杂烩/Misc Chowder

附件链接:https://pan.baidu.com/s/1GLqD6hRriLnG7KRwjWM9Nw 提取码:ptzb

题目描述

image-20200504115702075
image-20200504115702075

题目详解

下载附件得到一个流量包,导出http对象→按照大小顺序排序,可以在最下面发现七个php文件

image-20200504115943565
image-20200504115943565

将这几个文件导出后打开查看,可以发现每个php文件中都包含了一个图片(PNG/JPG),删去开头多余的部分(结尾部分不影响图片的查看,所以可以不删除),可以正常看到图片,其中一张图片(也是唯一的PNG)内容是一个Google网盘的地址

image-20200504125112251
image-20200504125112251

访问该地址可以下载得到一个docx文档,binwalk分析可以发现其中含有一个名字很特殊的压缩包

image-20200504125612320
image-20200504125612320

将其分离出来发现被加密,根据题目所给hint采用掩码爆破DE????,得到压缩包密码:DE34Q1

解压后得到一张图片,再用binwalk分析可以发现图片中藏有rar压缩包,分离出来

此处涉及到一个小知识点:NTFS数据流隐写通常都会采用WinRAR的rar压缩形式,这样才不会损坏文件附带的NTFS数据流

看到rar压缩文件,再结合文件中的内容,第一反应想到NTFS数据流隐写,直接cmd中dir /r查看即可发现在666.jpg后附有数据流,notepad查看即可得到flag

image-20200504130336306
image-20200504130336306

当然NTFS数据流隐写在360压缩和7z压缩都可以直接解压出来,也算是一种特殊的解法(下图以7z为例)

image-20200504130859828
image-20200504130859828

life

附件链接:https://pan.baidu.com/s/157d06EZeBdTqqKAjnxIU_g 提取码:ecr2

题目描述

image-20200503193021106
image-20200503193021106

题目详解

下载附件得到一张图,图名为game,内容是动漫游戏人生剧场版宣传报,binwalk分离可以得到一张图片和一个加密的压缩包,推测压缩包中信息即为flag

观察图片,刚开始推测是二维码之类的东西,数了一下像素点,是27x27的格式,但是二维码并没有这种规格,而且缺少存放格式化信息的数据块,根本无法还原二维码,还推测为DataMatrix,但也由于差距太大不相符,各种码没有进展,转而思考题目中包含的信息

题干名为life,附件名为game,题目描述为No Game No Life!,联系在一起想到life game生命游戏

什么是生命游戏

image-20200503194108482
image-20200503194108482

查看可知这种游戏也可以由像素点形式实现,和binwalk得到的图片非常相似,于是尝试以图片内容构造游戏,有网站可以实现在线游戏(戳这里

按照图片上的像素点位置点出图案,然后进行一次单步操作,即可得到一个二维码

image-20200503194644808
image-20200503194644808

扫码即可得到解压密码:AJTC8ADEVRA13AR

解压zip包,得到一个txt文件,观察文件名txt.pilf.txt,而中间pilf正是flip的翻转,其词义也是翻转,于是联想到将文件内容进行翻转,先翻转内容解base64,再将结果翻转decode('hex'),即可得到flag

代码语言:javascript
复制
a='0QjN1MTM0MTN0QjN3ImNjNzM3QTNmdTN3MTNmdzMzcjNxcjM3QTNmdDN2gzMzUjZ2czM0YDZzMjMxcDZ'
a=a[::-1].decode('base64')
flag=a[::-1].decode('hex')
print flag

mc_easybgm

注:本题原本是在所给网址中自行下载背景音乐,下面的附件为下载好的mp3文件,并非题目自带

附件链接:https://pan.baidu.com/s/1-AkTG8exi9i4XqjIHlug1w 提取码:xvqa

题目描述

image-20200506120506774
image-20200506120506774

题目详解

对应MP3文件,常见的隐写方式即mp3stego,刚开始也对本题进行了尝试,而且使用mc部分的音乐名称小写moogcity2作为key可以成功得到一个txt文件,但是文件中显示信息却是乱码,十六进制查看也得不到什么有用的信息(还包括对其进行异或等操作),一时间就卡住了,后来才知道是一种新形式的隐写:MP3的private位隐写

注:这里附上一篇与此隐写有关的paper,如果有哪位师傅翻译了可以发给我,定感激不尽! 附件链接:https://pan.baidu.com/s/1Qjzjzgk3Gfru2uXphJGhXQ 提取码:uvq7

摘取paper中的两句话

代码语言:javascript
复制
One bit we know we can use with confidence is the “Private” bit.
This should not be used by anything for any reason (except by us).

即大概意为这个private位本身不会用于其他的用途,所以即使将其修改作为隐写手段也不会影响文件本身,所以我们可以用它来进行隐写

用010editor查看文件,可以清楚的看到这一位的信息,它包含在数据帧帧头

image-20200504163047415
image-20200504163047415

上图即是一个FRAME块中FrameHeader的结构,其中就有private_bit这一位,在一个MP3文件中有很多个FRAME块,以本题的文件为例,一共有3285块,也就意味着一共有3285个private位可以用来隐藏信息,但是我们可以发现这一位的值只有0和1两种,所以我们可以用二进制的形式来隐藏信息,本题的考点就是这样

image-20200504212253563
image-20200504212253563

以本题为例,FF FB 91 40这四位即是第0个FRAME块的头部,每个头部由4字节组成,具体结构如下图

image-20200504212750118
image-20200504212750118

本题利用了保留字这一位置,其实版权位也可以修改用来隐写,以后单独用一篇文章探讨基于本篇论文的MP3的多种隐写姿势(一定不咕)

在010editor中尝试修改这一位置,可以发现这一位的值对应了940中间的那一位,即FF FB 9(private) 40这种结构,而且只有0和1这两种值,于是可以用脚本来提取private位的信息(借用了fz师傅脚本的思路)

代码语言:javascript
复制
f = open('bgm.mp3','r').read()
f = [ord(i) for i in f]
start = 0x28a3   # 第0个头部的开始位置
i = 0x28a3  # 遍历位置
out = ''
while i < len(f):
    # 本题的mp3文件中FrameHeader结构都为:FFFB9(private)
    if (i >= start and i + 2 < len(f)) and (f[i] == 0xff and f[i + 1] == 0xfb and f[i + 2] / 16 == 9):
        out += str(f[i + 2] % 2)
        i += 0x1a1  # 每一个FRAME块的大小都为1A1h
    else:
        i += 1

print out

运行脚本得到一长串的01序列,后面有很多多余的0可以删掉,由于是01序列,很容易想到将其转为ASCII码对应字符(32~126),所以要保留8的倍数

代码语言:javascript
复制
101111101000010010101110011010101000001001010110110011000010001011111010001000101000110001001110000011001110101011111010001011100110001000101100010010101100001011001100111011001001011010110010111110100000110000101110111110101100110010110110000011001100011010001100110011001110101011011110011000100010101011000010100011001010011000100010

直接转为字符却得到一堆乱码,所以尝试逆序再转换,即可成功得到flag

Easy Protocol

附件链接:https://pan.baidu.com/s/1skZTgj9sJ5EP_mDO-ZI-9A 提取码:t74v

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Misc杂烩/Misc Chowder
    • 题目描述
      • 题目详解
      • life
        • 题目描述
          • 题目详解
          • mc_easybgm
            • 题目描述
              • 题目详解
              • Easy Protocol
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档