第三届红帽杯线上初赛Misc题之Advertising for Marriage

Posted mid2dog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三届红帽杯线上初赛Misc题之Advertising for Marriage相关的知识,希望对你有一定的参考价值。

除校赛外初次参加ctf比赛…我好菜orz
不过还是很开心体验了回生活,收获了个中二狗和荷兰猪的双人战队哈哈哈
好了,来讲讲这道征婚题目吧,真的哭了出来,明明就差一点…
对了,想做这道题的可以去守夜人ctf平台

首先看下载过来的文档格式,发现是raw,然后百度了下发现是拍照格式,下载了acdsee发现打不开
于是我用linux虚拟机binwalk了一下它
有这么多东西,估计是个系统盘,然后想到了内存取证
内存取证入坑指南(从这里汲取下营养)
用volatility来读取
然后接下来进行一系列花里胡哨的操作,也就每个指令都试了一次吧,这里打出有用的指令
(为了方便打字我把征婚那个重命名为了123.raw)
volatility -f 123.raw imageinfo
猜测镜像系统
在第四行处可以看出是winXPSP2x86

然后volatility -f 123.raw --profile=WinXPSP2x86 pslist
查看正在运行的exe

这里看到notepad

打开

找到hint是Need money and girlfirend…最后女朋友还打错了= =
我也需要啊啊啊啊啊!!!
继续找。忽然突发奇想看看他cmd的使用记录

看到了flags,但还是不知道有什么用…
试试导出截图volatility -f 123.raw --profile=Win7SP1x64 screenshot --dump-dir=./


看不出来是个什么东西。
后来想了想出题人的出题顺序,看进程时间,发现画图的mspaint耗费时间长,应该有东西。
所以导出dump,改为data试试用gimp打开。
这里有详细的volatility 加gimp使用指南
然后试试偏移。。。。
两个小时后搞出来三四张有意义的图

然后这里看到了PJCX,联想到之前hint的前四位是????
然后这一步栽了,没想到这是倒过来的菠萝,我还以为是什么远古浮游生物= =
翻转过来以后可以看到是b1cx
然后得出b1cxneedmoneyandgirlfirend
然后知道了hint继续用内存取证看看有什么东西
搜索下图片什么的,jpg png txt都试试,然后
volatility -f 123.raw – profile=WinXPSP2x86 filescan|grep png

找到桌面有张菜的vegetable图片,提取出来

应该是被修改过宽高,这里用linux是打不开的,会提示crc校验错误,可以用windows打开(windows忽略crc校验);但是还是放不进steg里,所以还是要写脚本爆破png正常的高度。
放上脚本(根据网上的脚本修改的)python脚本

# -*- coding: utf-8 -*-
import binascii
import struct
 
#\\x49\\x48\\x44\\x52\\x00\\x00\\x01\\x1F\\x00\\x00\\x01\\xA4\\x08\\x06\\x00\\x00\\x00
 
crc32key = 0xB80A1736
for i in range(0, 65535):
    height = struct.pack('>i', i)
    data = '\\x49\\x48\\x44\\x52\\x00\\x00\\x01\\x1F' + height + '\\x08\\x06\\x00\\x00\\x00'
 
    crc32result = binascii.crc32(data) & 0xffffffff
 
    if crc32result == crc32key:
        print''.join(map(lambda c: "%02X" % ord(c), height))


成功得出了0000000D然后用winhex修改第二行内码中的高(众所周知png图片第二行是宽高)
??这谁看的清…
然后。。。。。
hhhh这里要感谢荷兰猪 凌晨四五点用她的生命在尝试看清那个flag,成功从flag中看出了小人和葫芦(没错第一个就是个大葫芦不是英文字母)所以不可能是正确flag。
我也试着用python脚本去除马赛克,然后结果如下…
看我菜的两眼发光!

让我感受到了生命的美好和暴打出题人的必要性hhhh

然后想到了lsb隐写,用steg来打开
然后我还把每个0和1自由组合点了好久,6种模式也点了好久,没有在文本里找到flag,果然是菜蒙蔽了我的双眼
然后百度了好多png的lsb隐写终于找到
然后用cloacked-pixel测试了下(此时比赛已经结束一小时,累计32小时没睡的我还是不甘心)附上上图这个网址(点击超链接)
有png的隐写知识
https://github.com/livz/cloacked-pixel
这个是文章里推荐的脚本,类型和这个差不多,刚好都需要密钥,hint总不可能没用吧!
下载过来的脚本里有使用方法然后会报错,需要安装matplptlib这个绘图库
这个是详细介绍安装画图模块的
https://www.cnblogs.com/-1307/p/6529269.html
这里吐槽一句,python3应该是自带这个库,但这脚本是用python2写的= =
然后由于我是在linux里安装最后报错权限不足,老样子命令前面加sudo就好了,像这样。
又是熟悉的3kb/s,无语凝噎

终于下好了,运行又发现还要安装这个库…继续
https://blog.csdn.net/superrunner_wujin/article/details/65945452
这个网站完美解决,其实也就一条命令sudo apt-get install python-tk 解决
再次运行成功
出来了1.txt
打开后里面是一段base64(末尾两个=)
拿出我好用的计算器解base64(当然在线解码也可以啦,不过要考虑到以后可能断网比赛的情况,每种密码的脚本或者本地工具最好也能备一份)

可以看到输出有提示是维吉尼亚解码,然后不会写脚本…我好菜,于是百度个在线网站,推荐中文网站,因为打开速度快…
然后密钥应该还是那个hint(毕竟没别的了啊)
发现

那就把密钥b1cxneedmoneyandgirlfirend中的1去掉吧
得到
flagisd7f1417bfafbf62587e0
嗯哼,flag出来了。
总结:misc果然是玄学,百度大法好(・∀・(・∀・(・∀・*)
下次比赛再接再厉吧!果然肝的还是不够= =

以上是关于第三届红帽杯线上初赛Misc题之Advertising for Marriage的主要内容,如果未能解决你的问题,请参考以下文章

2016/12/3-问鼎杯线上赛1-1-Misc

[CTF]GUET梦极光杯线上赛个人WP

13届蓝桥杯线上准备(java)

13届蓝桥杯线上准备(java)

2021第四届红帽杯网络安全大赛-线上赛Writeup

2021第四届红帽杯网络安全大赛-线上赛Writeup