2022.3.19-2022.3.27每周刷题

本文介绍了多个CTF竞赛中的取证分析案例,包括文件类型识别、压缩文件处理、音频及图像分析等,展示了如何利用不同工具和技术解决复杂问题。

[UTCTF2020]basic-forensics

将下载下来的jepg用010打开发现是一个文本,所以把后缀名改成txt
在这里插入图片描述
搜索flag看到

utflag{fil3_ext3nsi0ns_4r3nt_r34l}`

[UTCTF2020]File Carving

下载完附件是一个图片,首先想到010打开看一下,在尾部发现一个压缩包
在这里插入图片描述
在kali里面binwalk一下
在这里插入图片描述
解压出来之后,执行file分析一下hidden_binary
在这里插入图片描述
发现是一个ELF文件所以我们执行命令即可得到
在这里插入图片描述
得到`

utflag{2fbe9adc2ad89c71da48cabe90a121c0}

[WUSTCTF2020]alison_likes_jojo

下载完压缩包里有两张图片,打开boki.jpg发现图片后面有个压缩包
在这里插入图片描述
在kali里binwalk一下
在这里插入图片描述
发现一个加密的压缩包,我们现在010里看一下是不是伪密码,观察发现并不是,所以我们用ARCHPR暴力破解一下
在这里插入图片描述
破解出来一个六位数密码888866
在这里插入图片描述
我们通过txt的名字就可以发现是bsae加密所以我们进行解码
第一次解码出来YTJsc2JHVnljWFZsWlc0PQ==
第二次解码出来a2lsbGVycXVlZW4=
第三次解码出来killerqueen
最终解码出来是killerqueen,这个字符串明显不是最终答案,像是一个密码,这里我们还有一个图片没有用到,通过010也没有发现有压缩包之类的,这个时候就想到outguess加密

**outguess下载**
Kail终端命令输入git clone https://github.com/crorvick/outguess

安装包随即下载到文件夹。双击打开文件夹,右键点击空白区域选终端打开。

随后输入以下命令./configure && make && make install 进行安装

outguess -k killerqueen -r jljy.jpg out.txt
执行这段代码 -k后面加密码,-r后面是文件名 最后加一个空格和解出来的数据放在什么下

在这里插入图片描述
最后得到wctf2020{pretty_girl_alison_likes_jojo}

[WUSTCTF2020]find_me

下载附件是一个jpg图片,右键属性看一下
在这里插入图片描述
发现一串盲文,很明显是盲文加密盲文解码网站
在这里插入图片描述
得到flagwctf2020{y$0$u_f$1$n$d$_M$e$e$e$e$e}

[WUSTCTF2020]spaceclub

下载之后是一个空白的txt,但是全选之后可以发现有东西
在这里插入图片描述
有sublime打开更直观一点
在这里插入图片描述

把短的设置为0,长的设置成1

011101110110001101110100011001100011001000110000001100100011000001111011011010000011001101110010011001010101111100110001011100110101111101111001001100000111010101110010010111110110011001101100010000000110011101011111011100110011000101111000010111110111001100110001011110000101111101110011001100010111100001111101

进入到二进制转换工具进行解码
在这里插入图片描述
得到flagwctf2020{h3re_1s_y0ur_fl@g_s1x_s1x_s1x}

[WUSTCTF2020]girlfriend

打开发现压缩包里还有一个压缩包我们把他解压出来,发现是一个音频

用Audacity打开
在这里插入图片描述
听到一串类似于拨号的声音,所以想到DTMF拨号音识别
dtmf2num下载地址
把音频放到dtmf2num目录下cmd执行dtmf2num.exe girlfriend.wav
在这里插入图片描述
出现一串数字999*666*88*2*777*33*6*999*4*4444*777*555*333*777*444*33*66*3*7777
通过刚才听到的事电话拨号的声所以想到九宫格打字,
在这里插入图片描述
连按三下9对应的事y,以此类推得到`

flag{youaremygirlfriends}

[WUSTCTF2020]爬

解压后用sublime打开
在这里插入图片描述
看到pdf开头,所以把文件后缀名改为pdf
在这里插入图片描述
下面提示flag被图片覆盖住了,所以我们讲图片移走
在这里插入图片描述
发现图片下面有一串字符串

0x77637466323032307b746831735f31735f405f7064665f616e645f7930755f63616e5f7573655f70686f7430736830707d

进行十六进制转文本 解码地址
在这里插入图片描述
得到flagwctf2020{th1s_1s_@_pdf_and_y0u_can_use_phot0sh0p}

[MRCTF2020]pyFlag

用010打开发现尾部有zip的数据,并且标着1,2,3
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以把这三串数据放到一个新的文件里(注意:我最开始是新建的十六进制文本保存之后用破解工具破解不了,一直找不到原因,后来去搜wp,其他人和我的方法一样,但是他们就能破解出来,后来研究了一会,决定把这三串数据放到已经是压缩包格式的文件里把原来的替换掉,这个时候才可以破解出来)
在这里插入图片描述
破解出来这两个文件
在这里插入图片描述
在这里插入图片描述
去各种base解密,没有解出来,看了一下其他人博客发现一个脚本

#!/usr/bin/env python

import base64
import re


def baseDec(text, type):
    if type == 1:
        return base64.b16decode(text)
    elif type == 2:
        return base64.b32decode(text)
    elif type == 3:
        return base64.b64decode(text)
    elif type == 4:
        return base64.b85decode(text)
    else:
        pass


def detect(text):
    try:
        if re.match("^[0-9A-F=]+$", text.decode()) is not None:
            return 1
    except:
        pass

    try:
        if re.match("^[A-Z2-7=]+$", text.decode()) is not None:
            return 2
    except:
        pass

    try:
        if re.match("^[A-Za-z0-9+/=]+$", text.decode()) is not None:
            return 3
    except:
        pass

    return 4


def autoDec(text):
    while True:
        if b"MRCTF{" in text:
            print("\n" + text.decode())
            break

        code = detect(text)
        text = baseDec(text, code)


with open("flag.txt", 'rb') as f:
    flag = f.read()

autoDec(flag)

得到flag:MRCTF{Y0u_Are_4_p3rFect_dec0der}

[MRCTF2020]千层套路

下载完附件发现是这样的,题目说了是千层,在看见是压缩包就想到是类似于套娃之类的题
在这里插入图片描述

在这里插入图片描述
从这也可以看到,所以上脚本

import zipfile
name = '0573'
while True:
    fz = zipfile.ZipFile(name + '.zip', 'r')
    fz.extractall(pwd=bytes(name, 'utf-8'))
    name = fz.filelist[0].filename[0:4]
    fz.close()

在这里插入图片描述
运行一下发现出来一个qr.zip,就这个特殊,把它打开看一下
在这里插入图片描述
明显是RGB数据,再用脚本跑一下

from PIL import Image

x = y = 200
img = Image.new("RGB",(x,y))
file = open('qr.txt','r')

for width in range(0,x):
    for height in range(0,y):
        line = file.readline()
        rgb = line.replace('(','').replace(')','').split(',')
        img.putpixel((width,height),(int(rgb[0]),int(rgb[1]),int(rgb[2])))
img.save('flag.jpg')


在这里插入图片描述
出来一个二维码
在这里插入图片描述
得到flag:MRCTF{ta01uyout1nreet1n0usandtimes}

giveyourflag

下载出来是一个没有后缀名的文件,首先用010打开看一下
在这里插入图片描述

50 4B 03 04 压缩包格式的开头,所以接下来想到的是把文件改成zip格式,但是你解压之后还会发现里面有很多压缩包,所以想到的是我们想要的答案是不是在最后一个压缩包里

在这里插入图片描述
搜索50 4B 03 04看到有一千个压缩包套在一起,我们找到最后一个
在这里插入图片描述
可以清晰的看见最后一个压缩包里是有一串base64编码的字符串我们把它复制下来进行解码
在这里插入图片描述

GDVFWI{7ggqgll3jyukdncsti9icpc3feb0v5op}可以看到解码出来一个特别像最终答案的一串字符,但是这里面还有一个坑
可以想一下这个比赛是DASCTF举办的最终的flag应该是以DASCTF开头的,所以我们想到了凯撒加密

在这里插入图片描述
当位移为3的时候解出来最后的flag

DASCTF{7ddndii3gvrhakzpqf9fzmz3cby0s5lm}

闯入魔塔的魔法少女

下载文件之后是一个swf的文件,没有思路binwalk一下
在这里插入图片描述
发现两个文件,我们把它打开
在这里插入图片描述
在名字为8的这个文件里面搜索flag发现最终结果

DASCTF{23dvkjzr3juboiavztbncaxftfpyq5gz} 

魔法少女的迷音

下载完文件之后,打开看见是一个加密的压缩包
在这里插入图片描述

nIhtnmTm+m0a+m0a0lA5LIA5LIA5LIA5LIA5LIA5LIA5LIA5LIA5L/CC atom128右边有提示,想到 atom128解码
在这里插入图片描述

压缩包密码是passswowoowowddddddddddddddddddddddddddd

打开文件是一段音频,听着好像是一段话被反过来说的,所以我么打开Audacity,选中所有区域,在效果模块里有反向这个选项
在这里插入图片描述
反转过来的音频我们就可以听到一串字符串

100 51 55 97 51 49 53 54 48 98 100 53 100 53 51 100 50 50 48 99 57 97 52 57 50 102 97 100 53 54 48 49

这里我们注意有可能听到的事151,150,153,但是我们可以看一下,这个字符串明显是ascll码形式,ascll码没有151,150,153对应的字母所以应该是100 51 100 50 100 53

public class a {
    public static void main(String[] args) {
        String a = asciiToString("100,51,55,97,51,49,53,54,48,98,100,53,100,53,51,100,50,50,48,99,57,97,52,57,50,102,97,100,53,54,48,49");
        System.out.println(a);
    }
    public static String stringToAscii(String value)
    {
        StringBuffer sbu = new StringBuffer();
        char[] chars = value.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if(i != chars.length - 1)
            {
                sbu.append((int)chars[i]).append(",");
            }
            else {
                sbu.append((int)chars[i]);
            }
        }
        return sbu.toString();
    }
    public static String asciiToString(String value)
    {
        StringBuffer sbu = new StringBuffer();
        String[] chars = value.split(",");
        for (int i = 0; i < chars.length; i++) {
            sbu.append((char) Integer.parseInt(chars[i]));
        }
        return sbu.toString();
    }
}

我们对字符串进行解码得到flag

d37a31560bd5d53d220c9a492fad5601

`

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值