题目链接:https://pan.baidu.com/s/1m-AZuNrMx88dMZF3RmlSfg
提取码:7lh0
队里师傅们太强了,膜拜!

简单的MISC

一张jpg,一个压缩包

图片打不开,010查看下

1

有问题的部分随便找张jpg对照修改一下,D0改为D8

图片显示后得到的信息无用,

binwalk和010都可以发现在尾部添加了PK头,包含压缩包

binwalk -e flag.zip

得到文档ctf.txt,里面是摩斯密码,直接解密

./.--./../-.././--/../-.-./.../../-/..-/.-/-/../---/-./---/..-./..-/-./../...-/./.-./.../../-/-.--/.--/.-/.-.

得到

E P I D E M I C S I T U A T I O N O F U N I V E R S I T Y W A R

去掉空格就是压缩包flag.zip的密码,flag.txt为base64,解码可得

flag{Th1s_is_FlaG_you_aRE_rigHT}

隐藏的信息

开局也是一个图+一个压缩包

图是二维码,明显缺少了三个定位点,而且还被反色了

2

ps处理一下

3

但是扫描出来说是flag是假的

6

继续分析,因为原图是jpg图片,所以可隐藏信息的方式不多,基本可以排除lsb等。

010查看,可以在十六进制文件尾发现一句话

TOGETYOURFLAG

strings导出字符串查看

srings 二维码.jpg

4

USE BASE64 TO GET YOUR FLAG

压缩包是伪加密,修复后直接解压,是一个wav文件,au打开,可以发现歌曲末尾有信息

5

仔细听能发现是电话拨号的声音,网上matlab识别的脚本很多,头铁的也可以自己录一遍对照着频谱分析

7

也可以使用网站方便对照

https://www.mediacollege.com/audio/tone/dtmf.html

这个网站可以直接识别,但是不能识别太弱的声音,需要处理一下,提高分贝?

http://dialabc.com/sound/detect/index.html

9

可以发现这道题在音乐前面还有一部分这个按键音,比较轻

8

结果为

187485618521

base64后包上flag{}即为答案

flag{MTg3NDg1NjE4NTIx}

EDS师傅写的好理解一点
http://www.ericdshen.com/index.php/archives/5/

ez_mem&usb

binwalk发现两个压缩包

10

直接foremost等提取,解压会出错,所以我们手工提取

进入captured.pcap后,文件→导出对象→HTTP

可以发现几个upload.php文件,有两个比较大的,更改后缀为zip后使用010打开

删除PK头前面的内容,尾部也是如此

11

保存后解压即可得到data.vmem

得到两个镜像文件校验CRC32相同,确认为同一个文件,所以我们只用分析其中一个就好。

使用volatility进行分析

volatility -f data.vmem imageinfo

12

volatility -f data.vmem --profile=WinXPSP2x86 pslist

两个关键进程抓住

13

查看iehistory是没有信息的,所以先看cmd

volatility -f data.vmem --profile=WinXPSP2x86 cmdscan

14

发现password

weak_auth_top100

15

因为iehistory'插件不可用,所以尝试使用editbox插件查看输入框中的内容

【15】

可以发现ie访问的地址是C:\Documents and Settings\Administrator

我在上篇取证的文章讲过,很多程序都会调用wininet.dll,不仅仅是ie,还有Windows资源管理器等

故此,我们已经能猜测到需要提取的文件内容地址了

filescan插件搜索文件,grep过滤包含Administrator的地址

volatility -f data.vmem --profile=WinXPSP2x86 filescan | grep "Administrator"

16

发现flag.img,提取出来

volatility -f data.vmem --profile=WinXPSP2x86 dumpfiles -Q 0x0000000001155f90 --dump-dir=./

得到文件file.None.0xff425090.dat,修改后缀为img,使用winhex打开

17

打开主文件夹newfolder之后,里面有很多newfoldernewfoler1文件夹,除了第一个打开不带1的,之后全选择带1的,最后可以找到一个usbdata.zip

18

右键提取或者直接打开另存为,解压即可得到usbdata.txt

19

使用脚本进行提取

#!/usr/bin/env python3

usb_codes = {
   0x04:"aA", 0x05:"bB", 0x06:"cC", 0x07:"dD", 0x08:"eE", 0x09:"fF",
   0x0A:"gG", 0x0B:"hH", 0x0C:"iI", 0x0D:"jJ", 0x0E:"kK", 0x0F:"lL",
   0x10:"mM", 0x11:"nN", 0x12:"oO", 0x13:"pP", 0x14:"qQ", 0x15:"rR",
   0x16:"sS", 0x17:"tT", 0x18:"uU", 0x19:"vV", 0x1A:"wW", 0x1B:"xX",
   0x1C:"yY", 0x1D:"zZ", 0x1E:"1!", 0x1F:"2@", 0x20:"3#", 0x21:"4$",
   0x22:"5%", 0x23:"6^", 0x24:"7&", 0x25:"8*", 0x26:"9(", 0x27:"0)",
   0x2C:"  ", 0x2D:"-_", 0x2E:"=+", 0x2F:"[{", 0x30:"]}",  0x32:"#~",
   0x33:";:", 0x34:"'\"",  0x36:",<",  0x37:".>", 0x4f:">", 0x50:"<"
   }
buff = ""

pos = 0
for x in open("strokes","r").readlines():
    code = int(x[4:6],16)

    if code == 0:
        continue
    if code == 0x28:
        buff += "[ENTER]"
        continue
    if int(x[0:2],16) == 2 or int(x[0:2],16) == 0x20:
        buff += usb_codes[code][1]
    else:
        buff += usb_codes[code][0]


print(buff)

20

flag{69200835784ec3ed8d2a64e73fe913c0}