BUUMisc通关5

【SCTF2019】Ready_Player_One

知识点:签到题

题目分析

按着 w 往上一直冲就有flag了

flag{You_Are_The_Ready_Player_One!!!For_Sure!!!}

【XMAN2018排位赛】file

知识点:extundelete恢复Linux文件

1、extundelete:

安装

1
2
# kali 
# apt-get install extundelete

2、如何使用extundelete:

extundelete 旨在将文件从未安装的分区恢复到单独的(已安装)分区。**extundelete 会将它找到的任何文件还原到名为“RECOVERED_FILES”的当前目录的子目录中。**要运行该程序,请键入“extundelete --help”以查看可供您使用的各种选项。

从分区恢复所有已删除文件的典型用法如下所示: $ extundelete /dev/sda4 --restore-all

3、extundelete官方网站

题目分析

题目给了一份 attachment.img 文件,在kali中将其挂载(或者使用更简单的方法,用 7z直接解压可以提取 img文件中的内容)

1
2
3
4
5
6
7
8
9
# 在linux上挂载光盘的命令

mkdir /mnt/disk
mount attachment.img /mnt/disk/
cd /mnt/disk 

#可以使用 eog 图片名 命令来查看图片

#使用结束后用 umount: /mnt/disk 命令取消挂载

image-20210716140435907

得到很多猫猫的图片。都看了一下没啥有用的信息,感觉应该和隐写没关系,不然出题人也太恶心了

看了其他师傅的wp知道,这里是考的受损文件的恢复,在win10中直接点击 .img文件会提示文件已经受损。

用Linux数据恢复工具 extundelete ,extundelete –restore-all可以尝试恢复所有目录和文件。

1
2
extundelete --restore-all attachment.img
# 数据恢复成功后会生成一个 RECOVERED_FILES 文件

image-20210716135721410

拿到flag

flag{fugly_cats_need_luv_2}

【MRCTF2020】摇滚DJ(建议大声播放

知识点:RX-SSTV、无线电转图片

使用的解码工具 kali 安装 QSSTV

题目分析

参考之前写的一篇 blog

使用QSSTV解码无线电

image-20210716141427321

flag{r3ce1ved_4n_img}

Beautiful_Side

知识点:二维码修复

二维码修复网站

题目分析

将 jpg 图片用010editor打开,在jpg 文件尾发现了 png 文件。提取出来新建为 2.png

image-20210716145335385

用在线二维码修复网站进行修复二维码修复网站

image-20210716145555825

1、点击边框,将纠错等级调为 H,mask pattern 掩码调为和二维码上的掩码一致。

选择填充模式进行手动填充,填好后用解码模式进行二维码识别

image-20210716150639716

点击 tools,选择第一个,得到 flag

image-20210716150819262

image-20210716150905013

Flag{OQWIC_4DS1A_S034S}

大流量分析(一)

知识点:签到题

题目分析

题目说跟IP相关,直接试 IP

image-20210716163808479

flag{183.129.152.140}

【DDCTF2018】第四扩展FS

知识点:词频统计

在线词频统计

题目分析

用 010 editor 查看图片信息,发现有隐写文件。

用 binwalk -e FS.jpg 分离得到隐写文件

file.zip 需要解压密码,在 FS.jpg 中找到密钥 Pactera

解压后得到如下图:

image-20210716165147504

显然就是词频统计了

在线词频统计

image-20210716165444471

DCTF{huanwe1sik4o!}

【XMAN2018排位赛】AutoKey

知识点:usb流量提取、键盘流量分析、auto爆破

1、usb流量提取:

直接用脚本一把梭,GIthub下载:

UsbKeyboardDataHacker

2、键盘流量分析

3、auto爆破

题目分析

usb流量,直接用 UsbKeyboardDataHacker 脚本一把梭,获取到 usb 流量数据

1
# python2 UsbKeyboardDataHacker.py attachment.pcapng

image-20210716172339013

<CAP>a<CAP>utokey('****').decipheer('<CAP>mplrvffczeyoujfjkybxgzvdgqaurkxzolkolvtufblrnjesqitwahxnsijxpnmplshcjbtyhzealogviaaissplfhlfswfehjncrwhtinsmambvexo<DEL>pze<DEL>iz')
1
2
#<CAP> 转换大小写的键
#<DEL> 删除键

所有出题人最初敲的键应该是

Autokey('****').decipheer('MPLRVFFCZEYOUJFJKYBXGZVDGQAURKXZOLKOLVTUFBLRNJESQITWAHXNSIJXPNMPLSHCJBTYHZEALOGVIAAISSPLFHLFSWFEHJNCRWHTINSMAMBVEXPZIZ')

解下来就是 Autokey爆破了

break_autokey文件下载地址

配置文件下载地址

两个网站,一个网站上最下面可以下载 break_autokey.py,然后在另一个网站最下面下载 english_quadgrams.txt.zipenglish_trigrams.txt.zipngram_score.py,把两个zip解压并且txt名字分别改为quadgrams.txt和trigrams.txt,然后两个py文件和两个txt放在一起,如果没有装pycipher的装一下(python2环境)

pip2 install pycipher

然后把 autokey 的密文放在 break_autokey.py 里面

image-20210716181118980

1
2
#python2 环境下运行脚本
python2 break_autokey.py

image-20210716181631310

发现 flag 标志

HELLO BOYS AND GIRLS YOU ARE SO SMART THAT YOU CAN FIND THE FLAG THAT I HIDEIN THE KEY BOARD PACKAGE FLAG IS JHAWLZKEWXHNCDHSLWBAQJTUQZDXZQPF

flag{JHAWLZKEWXHNCDHSLWBAQJTUQZDXZQPF}

【QCTF2018】X-man-Keyword

知识点:LSB隐写、关键字密码(Nihilist)

LSB隐写破解脚本下载

下载完 LSB 脚本后,涉及几个 python2 第三方库的安装

1
2
3
#1、 pip2 install matplotlib
#2、 apt-get install python-tk
#3、 pip2 install pillow

使用方法:

1
2
3
4
# 使用方法Usage:
  lsb.py hide <img_file> <payload_file> <password>
  lsb.py extract <stego_file> <out_file> <password>
  lsb.py analyse <stego_file>

关键字密码(Nihilist):

1
2
3
4
5
6
7
#原理

#原26个英文字母为ABCDEFGHIJKLMNOPQRSTUVWXYZ

#把关键字提前后为LOVEKFCABDGHIJMNPQRSTUWXYZ

#在置换后的序列里可以发现对应关系P=Q,V=C,S=T,F=F

加解密脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# python2
# -*- coding: UTF-8 -*-
def getKeywordList(keyword):
    normalList = ''
    for i in range(26):
        normalList = normalList + chr(ord('a') + i)
    toCombine = keyword + normalList
    combineList = ''
    for i in toCombine:
        if i in combineList:
            pass
        else:
            combineList = combineList + i
    if len(combineList) == 26:
        return combineList
    else:
        return ''


def replaceChar(keywordList, inputChar):
    if inputChar.isupper():
        return replaceChar(keywordList, inputChar.lower()).upper()
    else:
        return keywordList[ord(inputChar) - 97]


def dereplaceChar(keywordList, inputChar):
    if inputChar.isupper():
        return dereplaceChar(keywordList, inputChar.lower()).upper()
    else:
        return chr(keywordList.find(inputChar) + 97)


def KeywordReplace(toReplace, keyword):
#'''keyword 字符替换法 替换函数'''
    afterReplace = ''
    for i in toReplace:
        if i.isalpha():
            afterReplace = afterReplace + \
                replaceChar(getKeywordList(keyword), i)
        else:
            afterReplace = afterReplace + i
    return afterReplace


def deKeywordReplace(toReplace, keyword):
#'''keyword 字符替换法  反替换函数'''
    afterReplace = ''
    for i in toReplace:
        if i.isalpha():
            afterReplace = afterReplace + \
                dereplaceChar(getKeywordList(keyword), i)
        else:
            afterReplace = afterReplace + i
    return afterReplace

print KeywordReplace('QCTF{cCgeLdnrIBCX9G1g13KFfeLNsnMRdOwf}', 'lovekfc')
print deKeywordReplace('PVSF{vVckHejqBOVX9C1c13GFfkHJrjIQeMwf}', 'lovekfc')

题目分析

LSB隐写破解脚本下载 攻击脚本解决 lsb隐写问题

1
# python2 lsb.py extract attachment.png new lovekfc

在 new文件 中得到隐写文件:PVSF{vVckHejqBOVX9C1c13GFfkHJrjIQeMwf}

关键字密码(Nihilist):加解密脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# python2
# -*- coding: UTF-8 -*-
def getKeywordList(keyword):
    normalList = ''
    for i in range(26):
        normalList = normalList + chr(ord('a') + i)
    toCombine = keyword + normalList
    combineList = ''
    for i in toCombine:
        if i in combineList:
            pass
        else:
            combineList = combineList + i
    if len(combineList) == 26:
        return combineList
    else:
        return ''


def replaceChar(keywordList, inputChar):
    if inputChar.isupper():
        return replaceChar(keywordList, inputChar.lower()).upper()
    else:
        return keywordList[ord(inputChar) - 97]


def dereplaceChar(keywordList, inputChar):
    if inputChar.isupper():
        return dereplaceChar(keywordList, inputChar.lower()).upper()
    else:
        return chr(keywordList.find(inputChar) + 97)


def KeywordReplace(toReplace, keyword):
#'''keyword 字符替换法 替换函数'''
    afterReplace = ''
    for i in toReplace:
        if i.isalpha():
            afterReplace = afterReplace + \
                replaceChar(getKeywordList(keyword), i)
        else:
            afterReplace = afterReplace + i
    return afterReplace


def deKeywordReplace(toReplace, keyword):
#'''keyword 字符替换法  反替换函数'''
    afterReplace = ''
    for i in toReplace:
        if i.isalpha():
            afterReplace = afterReplace + \
                dereplaceChar(getKeywordList(keyword), i)
        else:
            afterReplace = afterReplace + i
    return afterReplace

print KeywordReplace('QCTF{cCgeLdnrIBCX9G1g13KFfeLNsnMRdOwf}', 'lovekfc')
print deKeywordReplace('PVSF{vVckHejqBOVX9C1c13GFfkHJrjIQeMwf}', 'lovekfc')

QCTF{cCgeLdnrIBCX9G1g13KFfeLNsnMRdOwf}

【INSHack2017】hiding-in-plain-sight

知识点:png图片隐写、foremost文件分离

foremost文件分离:

用法:

formost filename -o 输出的目录名

题目分析

用 binwalk 分离文件未果,用 foremost 分离得到 flag

image-20210717002914202

flag{l337_h4xx0r5_c0mmun1c473_w17h_PNGs}

【HDCTF2019】信号分析

知识点:无线电固定码信号分析(PT226X)

固定码遥控信号的构成

钥匙信号(PT224X) = 同步引导码(8bit) + 地址位(20bit) + 数据位(4bit) + 停止码(1bit)

钥匙信号(PT226X) = 同步引导码(4bit) + 地址位(8bit) + 数据位(4bit) + 停止码(1bit)

img

img

1
2
3
4
# 两长为: 1
# 两短为: 0
# 先短后长为: F
# 先长后短 无效码

信号脉冲

img

img

img

题目分析

用 Audacity 打开 sign.wav 文件,选择波形分析

image-20210717140158659

1
2
#地址位+数据位 = FFFFFFFF0001
#所以 flag{FFFFFFFF0001}

方法二:

除了使用波形的分析方法,使用频谱图也能清楚的看出 地址位和数据位的信息

image-20210717140846140

updatedupdated2022-06-032022-06-03