BUUCTF Misc Page2-6部分题目

Page 2

1.被劫持的神秘礼物-流量分析、字符查找

image-20211215093527793

打开后文件有2种数据流,HTTP和TCP,两个都追踪一下

image-20211215093706817

这是TCP,好像没什么东西

image-20211215093732298

再看看HTTP流;查看密码既可以随便打开一个HTTP流,也可以整个追踪,

image-20211215093757803

image-20211215093809081

得到用户名和密码(name和word),找个网站弄一下,得到flag

image-20211215093829550

2.刷新过的图片-F5隐写

image-20211215093941108

解压之后得到了一张奇怪的图片,用stegsolve和010查看后没什么不对的地方,

image-20211215094946709

image-20211215094159460

根据题目描述,刷新键既F5键能有什么神奇的作用吗?不是还有F5隐写吗?我去百度了一下,(28条消息) 【隐写术】F5隐写_m0_46296905的博客-CSDN博客_f5隐写

然后学习了一下F5工具如何使用。

在kali中失败了很多次之后,终于提取出了一个奇怪的txt文件

image-20211215103831360

image-20211215103855635

一个经验就是在kali中所有的文件夹命名不要用汉字,因为在终端里你无法输入汉字。

直接打开txt看不出什么东西,用010查看一下,应该是个zip文件。

image-20211215104248480

修改文件后缀,解压一下,结果还有个伪加密

image-20211215104732195

好办,修改一下deFlags

image-20211215104824839

得到flag

image-20211215104957715

3.snake

image-20211215105428172

得到一张绿色的小蛇的图片,这条蛇长得实在不咋地image-20211215105531761

用010看出了很多蹊跷,不仅有几个网站,还隐含着一个压缩包

image-20211215105635553

image-20211215105742171

用Kali分离一下,得到几个文件

image-20211215110148315

在这个key文件中,image-20211215110503537

解密后得到

image-20211215110530959

这是什么意思呢?百度一下这个人名,查一下她的歌,

image-20211215110847237

经过一个个地查词之后,找到了这个Anaconda的意思非常接近

image-20211215111008761

然后我也不清楚该怎么做了,提交这个单词也不对,欸,不是还有一个文件嘛,借鉴一下他人的经验,解密一下,单词中的A不要大写,要改成小写。

image-20211215113945404

image-20211215114116075

下载二进制文件后得到flag,直接用010看,不用管文件格式

image-20211215114215709

4.认真你就输了–乱找

得到一个外形是excel但本质却是zip的文件,修改一下后缀,

image-20211215115240006

看这个名字就知道不能把这个题想复杂了

解压zip文件后,在几个文件夹中翻一翻,不小心找到了flag,果然不能认真做。image-20211215120858563

5.藏藏藏–jpg隐写

解压之后得到一个txt和图片,提示flag是5个字符,

image-20211215121516344

010检查图片发现有隐藏的压缩包,

image-20211215121542970

但是Kali的binwalk分离后没有东西,这就奇怪了,flag藏在哪里呢?image-20211215121944205

但是当我换了foremost分离出来了,✌,foremost果然比binwalk好用

image-20211215123132057

在output文件的docx文件中有一个二维码,扫描后得到flag,但是这个格式和txt里的也不一样啊,迷惑我

image-20211215123747748

image-20211215124100885

6.被偷走的文件–流量分析

image-20211215124420064

经过一番仔细查看,在这个FTP一条里看到了flag字符,追踪一下

image-20211215124941706

image-20211215125140977

另存为一个未知格式文件就行,用010看一下是个什么东西,

image-20211215125414808

好像不行,会不会隐藏着什么文件呢?用Kali的foremost分离一下原来的流量文件(桌面的output文件必须为空,追踪流得到的东西提示我们flag在一个rar文件里头,而不是让我们分析得到的未知格式文件),

image-20211215131358971

得到一个加密的rar

image-20211215131901310

密码是什么格式呢?

用archpr暴力破解一下试试,多试几次总能试出来的

image-20211215132425939

得到密码解压,得到flag

image-20211215132623978

7.菜刀–流量分析

image-20211215132713007

这个流量包有HTTP和TCP两种协议

image-20211215133048372

追踪HTTP流发现,image-20211215133341786

img

这张图片里的信息我试了好几次也没找到,先借用一下网上的

image-20211215133943130

得到一张图片,Th1s_1s_p4sswd_!!!img

这个应该就是压缩包的密码了,解密用foremost 分离出来的zip文件,image-20211215145237156

得到flagimage-20211215145320336

8.佛系青年–ZIP伪加密

有一个加密txt,密码在哪呢?

image-20211215135854958

图片没有什么密码信息,会不会是伪加密呢?一看,还真有

image-20211215150030707

打开txt后,是一串符号和佛经,得到flag

image-20211215150202300

image-20211215150540766

9.你猜我是个啥

给了一个不是zip的zip文件,文件头是png,修改后缀得到一个二维码图片,扫一下试试,

image-20211215151322951

那flag应该藏在哪呢?

会不会是图片隐写呢?回头看看010,在最后面发现flagimage-20211215151513341

10.梅花香之苦寒来

010查看得到的图片,在文件尾FFD9后面发现了一长长串奇怪的未知字符,

image-20211215152134535

将这些16进制字符转换成ASCII码试试,(删去上面的,保留下面的,实在是太长了,不好复制),16進製到ASCII字符串在線轉換工具 - Coding.Tools

image-20211215153613903

这些坐标代表什么呢?

查阅一下,又发现了kali上一个新的工具,gnuplot绘图工具绘制出图片,这个工具识别格式没有括号和逗号,给修改一下,用记事本里的替换,(复制文本中的括号和逗号,自己打出来的会找不到)image-20211215154750815

这个命令Kali竟然没有,又要自己安装了,去网上搜一下,结合这篇回答,得到一张二维码

(28条消息) gnuplot安装 - CSDN

image-20211215160614689

扫描得到flag

image-20211215161222503

11秘密文件

题目描述和被偷走的文件差不多,

image-20211226132838132

image-20211226132817447

用foremost分离一下原文件,

image-20211226134650381

得到一个rar并且有密码

image-20211226134727678

image-20211226134858199

暴力破解得到密码,解压得到flag

image-20211226135114136

image-20211226135158945

12神奇的二维码-音频+图片+zip

image-20211226140208668

010看一下

image-20211226141248316

binwalk分离得到几个文件(foremost没分离出来)

image-20211226141732936

在这个encode.txt文件中看到了一串base64编码,转换后得到了某个压缩包的密码(我猜的),试了一下,是看看flag在不在里面这个压缩包的密码。

image-20211226143507840

image-20211226143535273

asdfghjkl1234567890

image-20211226143651795

但是这个压缩包里没有什么东西,只有一张图片

image-20211226143758081

还有一个doc文件,打开之后全是base64编码

image-20211226143906225

解码之后还是一串base64编码,那就奇怪了

搜了一下,原来这是多次编码,人家用python脚本做的,我很菜,不会写脚本,那就借鉴一下吧

最后跑出来了这个

comEON_YOuAreSOSoS0great

解压后得到一个音频,应该是摩斯密码吧

image-20211226144428285

写完以后得到这个

– — .-. … . … … …- . .-. -.-- …- . .-. -.-- . .- … -.–

去转换一下,

image-20211226144655431

这个应该是flag吧,试一下,正确。

flag{morseisveryveryeasy}

13just_a_rar

image-20211226145103333

暴力破解一下

image-20211226145148672

解压

image-20211226145315452

这张图片还挺好看

010瞅一瞅

image-20211226150839632

得到flag,藏得好隐蔽

flag{Wadf_123}

14一叶障目

这是个啥

image-20211226151208642

image-20211226154615555

这种情况还是第一次遇见,去查了一下,修改宽高应该就可以,宽是第二行的2,3列,高是第二行的6,7列

尝试多次后,得到一个模糊的flag,貌似是5个6

image-20211226164126467

这种方法实在是很麻烦,不如去搜一个脚本试试看。(虽然他说有错误,但是能跑出来就行)

image-20211226170135163

image-20211226165602946

得到一张图片,好神奇,这个flag多清晰啊,前面那个方法太low了

image-20211226170035119

15鸡你太美-GIF

得到一个篮球.gif和篮球副本.gif,010比较一下发现副本没有文件头,插入文件头后得到flag

image-20211226171255201

image-20211226171406384

flag{zhi-yin-you-are-beautiful}

嘿,这个flag不对哦,正确的应该把“-”换成“_",又是陷阱。。。

这个flag倒是和题目名称有点联系

16穿越时空的思念

image-20211226171813325

很明显这是一个音频隐写题目,我们用audacity打开看一下频谱,注意空格,这么好听的一个曲子被加上了这个,太可惜了。。。我去听一下原版

image-20220114222620547

废了半天劲写出来摩斯电码是这个样子的:…-. ----- …— ----. -… -… -… …-. … … .---- .---- …-- ----. . . -… . -… —… . …- … .- .---- --… … -… ----- --… —… -…

这个地方摩斯密码有两段,后面那段和前面的一部分是重复的,我试了一下没有后面这段才是对的

然后翻译一下得到了F029BD6F551139EEDEB8E45A175B0786,提交上去却不对,为什么呢?注意题目要求,flag是小写的:flag{f029bd6f551139eedeb8e45a175b0786}

image-20220114223947856

可以用python干这件事,当然,也可以用C语言,自己转换容易出错

例如,用python大概是这么写的:

#encoding:UTF-8
msg = 'F029BD6F551139EEDEB8E45A175B0786'
print(msg.lower() )

image-20220114225523740

image-20220114225554689

而用C语言就比较麻烦啦,就不用了吧。

17[BJDCTF2020]纳尼

image-20220114230416682

是一个无法打开的gif,那么他可能缺少了文件头啥的,先看看再说

image-20220114230705307

image-20220114230740013

这个样子试试行不行

image-20220114230943997

果然可以打开了,用stegsolve打开,一共有4帧,连起来应该就是flag了吧:

image-20220114231532071

Q1RGe3dhbmdfYmFvX3FpYW5nX2lzX3NhZH0=

瞅着个东西的样子应该不是flag,试了一下果然不是,那应该就是base64编码了

image-20220114232028993

OK得到flag:flag{wang_bao_qiang_is_sad}

18[ACTF新生赛

这个jpg没有文件头和文件尾,加上一个试试

image-20220115220547022

加上好像也不行,

image-20220115221026495

flag.txt里说猜flag在哪里,只有一张可爱的猫猫图片了,看一下有什么信息

image-20220115221604310

这是个什么?难道是flag?不可能这么简单,而且这是汉字,排除,那这是用来干什么的呢?

在CTF那个工具网站里有核心价值观解码,那这个abc应该就是什么东西的密码了

CTF在线工具-在线核心价值观编码|核心价值观编码算法|Core Values Encoder (hiencode.com)

image-20220115233340036

再回头观察一下题目,outguess,这是Kali上的一个工具,百度一下outguess的用法,Linux下安装和使用steghide、outguess - 简书 (jianshu.com)

把图片搞到kali上之后,利用上面揭秘出来的abc继续操作,得到一个flag.txt文件夹

image-20220115232834038

image-20220115232900671

注意图片在哪里就要在哪里打开终端

flag{gue33_Gu3Ss!2020}

19[SWPU2019]我有一只马里奥

这道题目貌似无法采用上一道题的方法了,那该怎么处理呢?

直接运行程序后,出来了这个:

image-20220115223500162

然后打开这个1.txt,是这个:

image-20220115223554816

这是啥?ntfs肯定不会是flag,百度一下

这个需要用notepad打开,

这是成功的页面,需要在notepad++安装路径文件夹中打开powershell,然后还要注意输入形式:.\notepad++ 1.txt:flag.txt

这行命令的意思参考上张图片,

然而,我也遇到了很多困难,例如,我不知道哪天把powershell的path变量给删了,导致出现了这个:

image-20220117152637264

在path系统变量中添加:

C:\Windows\System32\WindowsPowerShell\v1.0;

就搞好了,

又例如,我打开powershell路径不太对,

image-20220117152911602

困难重重啊,最后终于得到flag:flag{ddg_is_cute},OK

20谁赢了比赛?

解压之后打开是一张图片,

image-20220117155630874

这里面有什么玄机吗?

先用010看,在最后看到了这个:

image-20220117155814536

按照之前的经验,试试这张图片里是否有其他文件,

image-20220117161227511

欸,还真有。

不过这也太多文件夹了吧,我一个个的找太费劲了,并且,全都是空的!(不要问我怎么知道的)

然后我不死心,又用binwalk分离了一下:

image-20220117162029352

得到了一个非空的压缩包!

但是还需要密码,

image-20220117162307308

先看一下是不是伪加密,先复习一下伪加密判断方法:

img

啊,这好像是zip的。。。

rar伪加密判断方法在这里:

image-20220117163020619

很明显,这个rar是加密的

image-20220117163804553

并且,在最后还有这个

image-20220117164034174

总感觉他在侮辱我,但我找不到证据。。。

不管了,先修改一下试试,

image-20220117164201312

出错了,那应该不是伪加密,快改回去

只能用暴力破解了,一般来说,暴力破解的密码都比较简单

image-20220117164704451

事实证明确实如此。

image-20220117165245607

这是一个GIF文件,那应该用stegsolve吧

一共有360帧,在第310帧发现了flag

image-20220117165724091

flag{do_you_know_where_is_the_flag}

但是为什么不对呢?

原来我忘记了stegsolve一帧保存下来的东西了。。。

保存下来后,调整一下通道,出来了一张二维码

image-20220117170532222

OK,扫描得到flag.

image-20220117170840786

flag{shanxiajingwu_won_the_game}

21.[HBNIS2018]excel破解

打开后是一个加密的表格文件,这还没遇到过这种题目,

image-20220117231506333

先用010打开看看吧,先按最原始的方法查找一下flag,真棒,一找就找到了

image-20220117231615749

22.[HBNIS2018]来题中等的吧

这是个啥?

image-20220117232313663

好像也没有什么东西,不是LSB隐写,也没有藏什么文件,那应该怎么处理呢?

再仔细观察一下图片,诶,这有点像频谱图啊,先写下来试试

.- .-… .–. … .- .-… .- -…

去翻译一下

image-20220118213752172

还真有点东西,这应该就是flag了吧,试了一下,正确。

flag{alphalab}

23[GXYCTF2019]gakki

开图雷击

image-20220118214115680

010看一看,应该是藏着rar,这好办,

image-20220118214255581

搞出来一个加密的文件,应该不是伪加密,暴力破解吧

image-20220118215756805

打开之后是这样的

image-20220118220826819

这个我好像在哪里看到过,找了一下,好像不一样,接下来该怎么办呢?
看了大佬们的wp才知道这题是要记字频统计,出这道题的,好厉害,
借鉴一下网上的脚本

image-20220118224104751

alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\{\}[]"
strings = open('E:\\常用\\日常MISC\\P2--BUU\\23wolaopo.jpg.extracted/flag.txt').read()

result = {}
for i in alphabet:
    counts = strings.count(i)
    i = '{0}'.format(i)
    result[i] = counts

res = sorted(result.items(), key=lambda item: item[1], reverse=True)
for data in res:
    print(data)

for i in res:
    flag = str(i[0])
    print(flag[0], end="")

运行出来这个:

image-20220118224218717

得到flag{gaki_IsMyw1fe}

24[WUSTCTF2020]find_me

看样子应该又是一道图片隐写

image-20220118224657995

010看着倒也还正常

image-20220118224852557

但是备注有这个,好像是盲文

image-20220118225615831

去翻译一下

⡇⡓⡄⡖⠂⠀⠂⠀⡋⡉⠔⠀⠔⡅⡯⡖⠔⠁⠔⡞⠔⡔⠔⡯⡽⠔⡕⠔⡕⠔⡕⠔⡕⠔⡕⡍=

在这里插入图片描述

flag{y 0 0 0u_f 1 1 1n d d d_M e e ee e e ee$e}

25[ACTF新生赛2020]base64隐写

打开之后是一张二维码和一串base64字符

image-20220119163408710

二维码应该是某个公众号吧,试试看

image-20220119163639994

不对,应该用手机,是一个叫做“中南极光网安实验室”的公众号,

再看那一个txt文件,

错误思路

image-20220119164221149

I2luY2x1ZGU8aW9zdHJlYW0+Cg==

这似乎仍然是base64编码,再解一次

image-20220119164337375

是一条语句,这是什么意思呢?发送到公众号试试,不过好像没反应。

那该怎么办呢?去百度了一下其他人的做法,原来,我方向错了,那些字符串并不是只有一个,他有好多个,不是直接解码,而是通过python脚本跑出来,但是这个hint指的公众号不是就没用了嘛。奇怪,

base64python脚本是这个样子的:

import base64


def get_base64_diff_value(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in range(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))

    return res


def solve_stego():
    with open('ComeOn!.txt') as f:
        file_lines = f.readlines()
        bin_str = ''
        for line in file_lines:
            steg_line = line.replace('\n', '')
            # norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n','')

            norm_line = line.replace('\n', '').encode('utf-8')
            norm_line = base64.b64decode(norm_line).decode('utf-8')

            norm_line = base64.b64encode(norm_line.encode('utf-8')).decode('utf-8')
            norm_line = norm_line.replace('\n', '')

            diff = get_base64_diff_value(steg_line, norm_line)
            print(diff)
            pads_num = steg_line.count('=')
            if diff:
                bin_str += bin(diff)[2:].zfill(pads_num * 2)
            else:
                bin_str += '0' * pads_num * 2
            print(goflag(bin_str))


def goflag(bin_str):
    res_str = ''
    for i in range(0, len(bin_str), 8):
        res_str += chr(int(bin_str[i:i + 8], 2))
    return res_str


if __name__ == '__main__':
    solve_stego()

注意

txt文件一定要与脚本文件在同一目录下,一些小错误自己可以尝试根据提示修改。

image-20220119174015853

flag{6aseb4_f33!}

26[SWPU2019]伟大的侦探

密码txt什么都没有,并且显示密码是编码,010看一下

image-20220119202035060

010一共有12种常见编码,比较常用的是这几种

image-20220119202230659

多试几次,在EBCDIC这个编码方式下看到了一些可读字符

image-20220119202421876

wllm_is_the_best_team!

解压出来是一些小人图,有意思

这些小人代表什么呢?查了一查,原来是一种密码

福尔摩斯小人密码

(2条消息) CTF密码学常见加解密总结_攀登-CSDN博客_ctf密码学

image-20220119202815452

image-20220119203152148

img

img

翻译一下,就是 iloveholmesandwllm

flag{iloveholmesandwllm}

27[GUET-CTF2019]KO

是一个txt文件

image-20220119204027640

这可真巧,刚在上一道题的一篇文章里看到过这种密码,找个网站搞一下

Ook!密码

[脑筋急转弯/哎呀!模糊处理/编码 splitbrain.org]

image-20220119204435173

image-20220119204530172

flag{welcome to CTF}

28黑客帝国

又是一个txt文件,我还以为是流量分析题呢

image-20220119204901048

这个开头很熟悉啊,

image-20220119205752614

原来是RAR的文件头,弄到010里看看

果然是rar文件

image-20220119205937804

另存为一个文件看看,好像不行,那就换个方法,借个脚本吧

16进制存为文件

import binascii

hex_data='这里填十六进制数据'
out=open('res.rar','wb')
out.write(binascii.unhexlify(hex_data))
out.close()

搞出来一个加密的rar,破解一下密码

image-20220119214339984

好不容易打开后,又说这个图片有问题

image-20220119214616199

原来是少了个文件头与文件尾不对应

image-20220119214904893

image-20220119214832076

image-20220119214726369

头是png,尾是jpg,

那应该改哪个?都试试

image-20220119215437159

似乎不行,那就改成jpg

image-20220119215703343

注意,要把原来png的文件头89504E47全部替换或删除,并且把文件后缀改成jpg

修改之后,图片正常打开

image-20220119220004814

flag{57cd4cfd4e07505b98048ca106132125}

29[MRCTF2020]你能看懂音符吗image-20220119214201907

29[MRCTF2020]你能看懂音符吗

和上一道题目差不多的套路,文件头顺序颠倒了

image-20220119222121339

改一下,解压打开,是一个word文档

image-20220119222755612

啊这,都是套路,还是用010看吧

image-20220119223441614

这个开头的PK不太正常吧,可能是个zip

修改后缀后解压,在word中的document.xml中发现了一串音符,

image-20220119224101614

解密后得到

文本加密为音乐符号,可自设密码|文本在线加密解密工具 (qqxiuzi.cn)

image-20220119224209595

flag{thEse_n0tes_ArE_am@zing~}

31[MRCTF2020]ezmisc

image-20220119230058796

010打开后,提示

image-20220119230226178

CRC校验码错误,那应该是宽高被修改了吧

修改之后就看到了

image-20220119230946266

flag{1ts_vEryyyyyy_ez!}

32.[SWPU2019]你有没有好好看网课?

得到两个加密zip,flag3和flag2

flag3

image-20220120172305875

flag2

image-20220120172808659

1.暴破flag3的密码,

一下就出来了

image-20220120173100872

flag2的密码不知道是不是也是这个格式,先试一下

试了好像并不是

flag3解压出一个视频和word文档

image-20220125124114848

文档中的520711是干什么的呢?难不成是flag2的密码?试了一下,并不是,先留着

这个视频有什么东西呢?用一下potplayer(kinovea有点问题,打不开)看看

2.potplayer逐帧查看

potplayer如何调整时间间隔,百度一下步骤

1.直接点击鼠标右键,选择“播放”-“定位”,取消“以关键帧定位”。

2.右键找到定位,选择“时间跨度设置”。

3.将调解的大小设置合适的时长,取消下侧的框选。

4.还要注意定位的快捷键是使用“D/F”。

image-20220323200034127

… …/… ./… ./… …/

敲击码

CTF之常见编码(三) - ziwang - 博客园 (cnblogs.com)

image-20220323201536159

对应下来就是

WLLM

继续看,7.36秒发现

image-20220323202046688

Base64

dXBfdXBfdXA=

image-20220323202221866

up_up_up

这俩连起来应该就是前面压缩包的密码了(但是需要把前面的大写转换为小写)

wllmup_up_up

image-20220323213459616

010打开

image-20220323213546263

在结尾发现flag

flag{A2e_Y0u_Ok?}

Page 3

1,2 Caesar+低个头

image-20220125133939115

第一道题目,应该可以想到凯撒密码,毕竟题目名称都暗示这么明显了(Caesar是凯撒的意思)而且f→g,l→m,a→b,g→h也很明显,移位数多试几次,这道题移位数是1,解出来的正好含有题目名称,包上flag交上就好了

再看第二题,这个题就有意思了,低个头,看的是什么呢?

对了,是键盘,而且看一下这几个字母,想到了键盘上的字母,用线连起来,就构成了几个字母

虽然有点难看,但是能看出来这是个CTF,看来每个题目的题目都是有深意的~

EWAZX RTY TGB IJN IO KL

image-20220125152645081

flag{CTF}

3Mysterious(待定)

1.题目描述

image-20220125152918030

2.题解过程

竟然是一个exe文件,运行试试,总不能有病毒吧

image-20220125153236762

需要输入密码,随便输了一个之后就自动关闭了,接下来就要寻找密码了,

010先看看

image-20220125153444474

image-20220125153623383

DOS是什么?

image-20220125154324933

继续寻找线索

image-20220125154954338

卡了,

4[SUCTF2018]single dog

1.题目描述

image-20220125200926733

2.解题过程

是一道图片题

010打开,在FFD9之后还藏着一个zip,用kali的binwalk -e分离一下

image-20220125200330649

分出来一个zip和txt(txt就是zip里的内容,用的binwalk)

(奇怪,文件名中不能含有空格吗?失败了好几次)

image-20220125203031285

image-20220125202841772

txt打开是一些奇怪的东西,这个就是AAencode编码(头一次见)

image-20220125203209213

找个网站

CTF在线工具-在线AAencode编码|AA编码|AAencode解码|AAencode编码原理|AAencode编码算法 (hiencode.com)

image-20220125203428845

flag{happy double eleven}

和题目遥相呼应y

5.喵喵喵(太难了)

1.题目描述

image-20220125201044388

image-20220125201211546

2.解题过程

LSB隐写

题目中出现扫一扫,首先考虑是不是藏着二维码,可能是LSB隐写,用stegsolve看一看

在blue,green,red的0通道都发现了一张一样的有点奇怪的照片,只有半截

image-20220125211937546

image-20220125212049926

image-20220125212113088

调整通道

调整三个通道的位数均为0,然后LSBfirst,然后试一下Bit plane order红绿蓝的顺序,调整好后,是这样的

image-20220125204051320

试了好几次才找到,不过文件头好像有点问题,另存为一个文件看看

(另存为text可能会有点问题,如图)

image-20220125212856922

修改文件头

save bin后缀改成png,010打开修改,

image-20220125212809159

删去FF FE后,得到了半张二维码

image-20220125213016260

关闭后重新用010打开,会提示这个

image-20220125213137831

CRC校验码错误,按照这个修改一下

修改高度

image-20220125213642693

第4,5,6列都是高,改一下(从第6列开始改,不需要太大)

image-20220125213826608

得到了一个完整的二维码

image-20220125213914566

扫二维码

是一个百度网盘分享rar,(QR Research好像扫不出来),用微信扫一扫

解压出来一个txt,结果…

image-20220125215107426

这实在是太难了,接下来思路全无

去看了一下大佬的wp,才知道这原来是NTFS数据流隐写,要用到NTFs Streams Editor这个新工具

https://files.cnblogs.com/files/rainbow7/ntfsstreamseditor.zip

这是好不容易才找到的一个纯净的

NTFS数据流搜索

一番操作后,导出来一个pyc文件(只能搜索文件夹,把flag.txt放到一个文件夹里就好)

image-20220125222122169

然后这是一个反编译,好难

反编译

借鉴一下大佬的wp,https://tool.lu/pyc/是一个反编译网站

代码如下

import base64

def encode():
    flag = '*************'
    ciphertext = []
    for i in range(len(flag)):
        s = chr(i ^ ord(flag[i]))
        if i % 2 == 0:
            s = ord(s) + 10
        else:
            s = ord(s) - 10
        ciphertext.append(str(s))
    

    return ciphertext[::-1]

ciphertext = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']

写脚本

def decode(arg1):
	ciphertext = arg1[::-1]
	flag = ''
	for i in range(len(ciphertext)):
		if i % 2 == 0:
			s = int(ciphertext[i]) - 10
		else:
			s = int(ciphertext[i]) + 10 
		s = s ^ i
		flag += chr(s)
	print(flag)

if __name__ == '__main__':
	ciphertext = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']
	decode(ciphertext)

得到

3.flag

flag{Y@e_Cl3veR_C1Ever!}

6[ACTF新生赛2020]NTFS数据流(待定)

1.题目描述

解压之后

image-20220125224127563

2.解题过程

先学习一下有关Ntfs数据流的知识

在Ntfs文件系统中,病毒、木马和蠕虫或者它们的结合体等恶意程序可能隐藏在“Ntfs数据流”这样的特殊"文件"中,一般的文件管理器和工具不能发现和处理;Ntfs数据流处理工具NtfsStreamsEditor提供了强大的搜索扫描能力,帮助你找出危险所在;同时NtfsStreamsEditor提供了最强大的删除、附加、导入、导出、备份和还原等完整处理手段,是您必备的工具软件。

1.什么是Ntfs数据流(交换数据流或者ADS) ?
Ntfs数据流:Ntfs交换数据流 或 Ntfs可选数据流 ;Alternate Data Streams (ADS)
Ntfs数据流给文件附加了一些额外的信息,这些本不属于该文件的信息就叫做“交换数据流”;而文件本身(宿主文件)则叫做该文件的“主数据流(Primary Data Stream)”。
Ntfs数据流允许文件与多个数据流进行关联。例如,一个名为 text.txt 的文件可以包含一个名为 text.txt:secret(格式是“文件名:流名”)的可选数据流,并只允许知道该数据流名称或专门为数据流而设计的浏览程序(NtfsStreamsEditor)查看。可选数据流无法从原始文件长度中得知,但会随着对原始文件的删除,或将原始文件移动/复制到不支持可选数据流的分区(如 FAT 分区、软盘或网络共享位置)上而丢失。可选数据流在多方面有重要用途,但也容易因为被遗忘或未被探测到而白白耗费磁盘空间。
简单的创建一个数据流: 按住win+R(开始_运行) 调出"运行"对话框 输入
notepad c::123.txt 回答“是” 输入字符保存就创建了一个“隐藏的文件123.txt”。我们无法在“资源管理器”中看到有关数据流文件的变化。这种缺陷让木马有机可趁,通过NTFS数据流将自己隐藏起来,从此就从“资源管理器”中消失了。例如Rootkit木马中的文件隐藏功能,就是利用了NTFS数据流,而NtfsStreamsEditor完全能检测出来。
Ntfs数据流(ADS)的宿主文件可以是一个磁盘(像上例),一个目录,一个文件,因为在操作系统内部,这些都是“文件”,ADS不能没有宿主文件。
备注:在操作系统内部任何文件名都有:KaTeX parse error: Undefined control sequence: \1 at position 14: DATA一个扩展;比如C:\̲1̲.txt 实际为C:\1.tx…DATA (2个冒号) ;而关联的数据流C:\1.txt:mysex.jpg 实际为 C:\1.txt:mysex.jpg:$DATA(前后个一个冒号),这也是为什么冒号:不能作为文件名的原因之一。

2.Ntfs数据流的用途?常见的数据流。
可以存放一些附加的信息。
@卡巴斯基(kaspersky)杀毒软件的iStream 技术使用KAVICHS作为处理过程的标志。
@下载的文件具有Zone.Identifier的数据流:当我们使用IE浏览器把网上的可执行文件保存到NTFS文件系统的分区上,IE浏览器就会自动给下载回来的文件附加一个交换数据流,当我们双击运行带有这种数据流的文件时,系统就会出现一个“安全警告”对话框提示。
@收藏夹的网址快捷方式一般具有名为favicon的数据流,存放的就是网站图标。
@隐藏其他的一些信息,比如木马,NtfsStreamsEditor完全能检测出来。

备注:
NTFS是微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。NTFS比FAT文件系统更稳定,更安全,
功能也更为强大。如果要让FAT文件系统转换为NTFS文件系统,可以在“命令提示符”中输入“convert 分区盘符: /fs:ntfs”,即可将该分区的文件系统转换为NTFS。

模仿上一道题目的解题过程,解压之后直接扫描一下

7.我吃三明治

1.题目描述

image-20220125224424319

2.解题过程

010看

image-20220125224755143

在FF D9文件尾之后还有一串不明字符

image-20220125224933415

在结尾又有一个FF D9,可能是另一张图片?

不过这个开头好像有点问题,保存下来看看

是这样一串字符

MZWGCZ33GZTDCNZZG5SDIMBYGBRDEOLCGY2GIYJVHA4TONZYGA2DMM3FGMYH2

会不会是Base 32编码呢?虽然并不常见,试试看

image-20220126161658481

竟然真是,OK

复习一下base32

Base32编码是使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符,可以方便地由人类使用并由计算机处理。

Base32将任意字符串按照字节进行切分,并将每个字节对应的二进制值(不足8比特高位补0)串联起来,按照5比特一组进行切分,并将每组二进制值转换成十进制来对应32个可打印字符中的一个。

由于数据的二进制传输是按照8比特一组进行(即一个字节),因此Base32按5比特切分的二进制数据必须是40比特的倍数(5和8的最小公倍数)。例如输入单字节字符“%”,它对应的二进制值是“100101”,前面补两个0变成“00100101”(二进制值不足8比特的都要在高位加0直到8比特),从左侧开始按照5比特切分成两组:“00100”和“101”,后一组不足5比特,则在末尾填充0直到5比特,变成“00100”和“10100”,这两组二进制数分别转换成十进制数,通过上述表格即可找到其对应的可打印字符“E”和“U”,但是这里只用到两组共10比特,还差30比特达到40比特,按照5比特一组还需6组,则在末尾填充6个“=”。填充“=”符号的作用是方便一些程序的标准化运行,大多数情况下不添加也无关紧要,而且,在URL中使用时必须去掉“=”符号。

与Base64相比,Base32具有许多优点:

适合不区分大小写的文件系统,更利于人类口语交流或记忆。
结果可以用作文件名,因为它不包含路径分隔符 “/”等符号。
排除了视觉上容易混淆的字符,因此可以准确的人工录入。(例如,RFC4648符号集忽略了数字“1”、“8”和“0”,因为它们可能与字母“I”,“B”和“O”混淆)。
排除填充符号“=”的结果可以包含在URL中,而不编码任何字符。
Base32也比Base16有优势:

Base32比Base16占用的空间更小。(1000比特数据Base32需要200个字符,而Base16则为250个字符)
Base32的缺点:

Base32比Base64多占用大约20%的空间。因为Base32使用8个ASCII字符去编码原数据中的5个字节数据,而Base64是使用4个ASCII字符去编码原数据中的3个字节数据。
本页Base32编码方案符合RFC4648文档描述。输入字符集为UTF-8编码。

image-20220126161919137

3.flag

flag{6f1797d4080b29b64da5897780463e30}

8.john-in-the-middle

1.题目概述

image-20220126162240555

2.解题过程

是一道流量分析题目

首先追踪流

TCP

image-20220126163038176

HTTP,好像有点东西,应该有一些图片之类的

image-20220126163432989

那就导出试试

image-20220126163334380

果然有些东西,save all看看

image-20220126205956170

重点看看几张图片吧,毕竟其他的也看不懂image-20220126210306389

不过这个视频好像打不开

然后再010看一下

image-20220126210905130

好像也没什么,我又卡壳了

借鉴一下大佬的思路,原来是两张图片拼凑到一起才能看到flag,第一次见到,用stegsolve操作一下

image-20220126211335905

image-20220126211523659

logo的这个通道有点东西,用Image Combiner进行叠加,调整通道发现flag(可是我还不明白为什么就是这两张图片,这背后的原理又是什么呢?)

image-20220126211628630

3.flag

flag{J0hn_th3_Sn1ff3r}

9.弱口令(hard)

1.题目概述

image-20220126211815567

image-20220126211907594

2.解题过程

名叫弱口令

判断加密方式

一个加密的zip,看看是不是伪加密

image-20220126212246183

image-20220126212339075

爆破试试

并不是伪加密,那就爆破,密码应该并不复杂

image-20220126212738666

image-20220126212915231

但是速度快到我以为是伪加密,这是为什么?

查看压缩包属性

再回过头仔细看看

image-20220126213246506

这个东西好像有点奇怪,看不到,在哪里能看到呢?

原来要到sublime text里去看,新东西

image-20220126214745075

摩斯密码

好神奇,这应该是莫斯密码吧,去解一下看看,换行符打成空格,点就是·,横就是-,

… . .-… .-… ----- …-. — .-. …- –

在线摩斯密码翻译器_摩斯密码-ME2在线工具 (metools.info)

image-20220126220428173

这应该就是解压密码了吧(我还以为是flag)

010看图片

image-20220126220740562

并没有什么,stegsolve看看

image-20220126221057243

试了几次好像也没啥,又不会了

接下来又是别人的解答

python脚本

首先了解一下cloacked-pixel这个工具一个LSB分析工具

下载地址(下载要注册一个账号)

cloacked-pixel: LSB steganography and detection (gitee.com)

image-20220126222840523

然后是常见的弱口令也要了解一下

常见的弱口令总结 - Fright-Moch - 博客园 (cnblogs.com)

已经给你准备好脚本了,挺好(但是python3运行会出错,我还专门又下了一个python2)
/cloacked-pixel-master# python lsb.py extract .\1.png 2.txt 12345

[+] image size: 500x500 pixels.

[+] Written extracted data to 2.txt

apt-get install cloacked-pixel-master

sudo vim /etc/apt/sources.list

阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

python2 .\lsb.py extract .\1.png flag
[+] Image size: 500x500 pixels.
[+] Written extracted data to flag.txt

3.flag

flag{HELL0FONUM}

10.SXMgdGhpcyBiYXNlPw

1.题目概述

image-20220126214113144

image-20220126214219695

2.解题过程

base64隐写

题目名称就很形象,有点像base64隐写

image-20220126214414739

试试上次的脚本能不能跑出来

脚本

image-20220126221607608

很顺利

脚本如下(flag.txt与脚本文件放在同一文件夹可以直接跑)

import base64

def get_base64_diff_value(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in range(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))

    return res


def solve_stego():
    with open('flag.txt') as f:
        file_lines = f.readlines()
        bin_str = ''
        for line in file_lines:
            steg_line = line.replace('\n', '')
            # norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n','')

            norm_line = line.replace('\n', '').encode('utf-8')
            norm_line = base64.b64decode(norm_line).decode('utf-8')

            norm_line = base64.b64encode(norm_line.encode('utf-8')).decode('utf-8')
            norm_line = norm_line.replace('\n', '')

            diff = get_base64_diff_value(steg_line, norm_line)
            print(diff)
            pads_num = steg_line.count('=')
            if diff:
                bin_str += bin(diff)[2:].zfill(pads_num * 2)
            else:
                bin_str += '0' * pads_num * 2
            print(goflag(bin_str))


def goflag(bin_str):
    res_str = ''
    for i in range(0, len(bin_str), 8):
        res_str += chr(int(bin_str[i:i + 8], 2))
    return res_str


if __name__ == '__main__':
    solve_stego()

3.flag

flag{fazhazhenhaoting}

11swp

1.题目概述

image-20220127164937515

image-20220127165359885

image-20220127165446895

image-20220127170400763

2.解题过程

没有什么提示,直接按照以前的步骤走一遍

但是这个题目有一些没见过的协议

image-20220127165046390

先去了解一下

TPLV1.3

(2条消息) TLSv1.3学习_lbl的博客-CSDN博客

DNS MDNS LLMNR SSDP协议

DNS
DNS只是提供了域名和IP地址之间的静态对应关系,当IP地址发生变化时,DNS无法动态的更新域名和IP地址之间的对应关系,从而导致访问失败。但是DDNS系统是将用户的动态IP地址映射到一个固定的域名解析服务上

DDNS
DDNS用来动态更新DNS服务器上域名和IP地址之间的对应关系,从而保证通过域名访问到正确的IP地址。很多机构都提供了DDNS服务,在后台运行并且每隔数分钟来检查电脑的IP地址,如果IP发生变更,就会向DNS服务器发送更新IP地址的请求

NBNS--------NetBIOS漏洞【询问主机名】
NBNS是网络基本输入/输出系统 (NetBIOS) 名称服务器的缩写。它也是TCP/IP协议的一部分。它负责将计算机名转化为对应的IP。NBNS在WIndows用的较少,Windows普遍采用LLMNR协议。
特点
Name query NB是请求包,
Name query response NB是响应包。
双方的端口号均为137。

mDNS【局域网中的DNS】
mdns 即多播dns(Multicast DNS),mDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,遵从dns协议,使用现有的DNS信息结构、名语法和资源记录类型。并且没有指定新的操作代码或响应代码。
特点
端口为5353
主机的域名为.local 结尾
mdns 使用组播地址为: 224.0.0.251 (ipv6: FF02::FB)

在局域网中,设备和设备之前相互通信需要知道对方的ip地址的,大多数情况,设备的ip不是静态ip地址,而是通过dhcp 协议动态分配的ip 地址,如何设备发现呢,就是要mdns大显身手,例如:现在物联网设备和app之间的通信,要么app通过广播,要么通过组播,发一些特定信息,感兴趣设备应答,实现局域网设备的发现,当然mdns 比这强大的多。
比如,A主机进入局域网,开启了 mDNS 服务,并向 mDNS 服务注册以下信息:我提供 FTP 服务,我的IP是 192.168.1.101,端口是 21。当B主机进入局域网,并向 B 主机的 mDNS 服务请求,我要找局域网内 FTP 服务器,B主机的 mDNS 就会去局域网内向其他的 mDNS 询问,并且最终告诉你,有一个IP地址为 192.168.1.101,端口号是 21 的主机,也就是 A 主机提供 FTP 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。
mDNS 具体协议规范地址如下 : http://www.ietf.org/rfc/rfc6762.txt

LLMNR【是DNS的备胎方案】

在DNS 服务器不可用时,DNS 客户端计算机可以使用本地链路多播名称解析 (LLMNR—Link-Local Multicast Name Resolution)(也称为多播 DNS 或 mDNS)来解析本地网段上的名称。例如,如果路由器出现故障,从网络上的所有 DNS 服务器切断了子网,则支持 LLMNR 的子网上的客户端可以继续在对等基础上解析名称,直到网络连接还原为止。
除了在网络出现故障的情况下提供名称解析以外,LLMNR 在建立临时对等网络(例如,机场候机区域)方面也非常有用。

链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,IPv4和IPv6的主机可以通过此协议对同一本地链路上的主机执行名称解析。Windows 操作系统从 Windows Vista开始就内嵌支持,Linux系统也通过systemd实现了此协议。 LLMNR定义在RFC 4795。
224.0.0.252,对应的 IPv6 地址是 [FF02::1:3]
LLMNR工作过程
(1) 主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到名称,那么主机就会向自己配置的主DNS服务器发送查询请求。如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR。
(2) 主机通过用户数据报协议(UDP)发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。
(3) 链路局部范围内每台支持LLMNR,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。

LLDPDU协议
网络设备可以通过在本地网络中发送LLDPDU(Link Layer Discovery Protocol Data Unit)来通告其他设备自身的状态。是一种能够使网络中的设备互相发现并通告状态、交互信息的协议。LLDP协议使得接入网络的一台设备的主要能力,管理地址,设备标识,接口标识等信息发送给同一个局域网的其他设备,当一个设备从网络中接收到其它设备的信息时,就将这些信息以MIB的形式存储起来。

SSDP协议
SSDP(简单服务发现协议)是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的多播方式实现。
SDP协议的设计初衷是使用HTTP协议进行设备的发现,是UPnP协议的组成部分。

知道这么多应该差不多了,然后再来看题

追踪流

TCP

image-20220127170200252

HTTP

image-20220127170429290

UDP

image-20220127170255539

HTTP流里好像有点东西,导出来看看

image-20220127183557185

根据名字判断,最可疑的应该是这个压缩包,打开看看

image-20220127183740047

是个加密的zip,

判断伪加密

image-20220127184254241

image-20220127184344005

确实是

关于ZIP伪加密,又找了几个方法

zip伪加密 - 浩琦很好奇 - 博客园 (cnblogs.com)

今天我们来试试新方法(以前的方法肯定可以,不过还是尝试一下新方法吧)

win rar修复

image-20220127185830206

然后会产生一个新的压缩包

image-20220127193838307

打开这个压缩包,就是无加密的了,flag也很容易看到

image-20220127194128988

Java环境下使用ZipCenOp.jar

先下载一个文件

ZipCenOp.jar 链接:https://pan.baidu.com/s/1RLRPN0fKWmqdaqLlV409Wg 密码:twl4

下载完成后打开(需要安装Java环境)

把ZipCenOp.jar文件和secret.zip放到同一个文件夹,然后在空白处 Ctrl+Shift+右键,在此处打开Windows Powershell 窗口

然后输入

java -jar .\ZipCenOp.jar r .\secret.zip

image-20220127195630220

这个样子就成功了,然后我们打开这个目录下的zip,就是未加密的啦

image-20220127195745376

打开flag这个文件,看到flag

image-20220127195830242

3.flag

flag{c5558bcf-26da-4f8b-b181-b61f3850b9e5}

12黄金6年

1.题目概述

image-20220127195941165

image-20220127200417220

2.解题过程

是一道视频题,以前做过这个类型的题目

image-20220127200338825

现在再试试kinovea这个工具,看看能不能试出来什么

kinovea下载链接

Kinovea

逐帧分析

在75帧出现了一个二维码

image-20220127205144533

image-20220127215834102

继续看看,还有什么东西

148帧

image-20220127205225075

image-20220127215856501

246帧

image-20220127205348200

image-20220127215917534

一共发现了3个二维码,扫扫看

扫描二维码

75帧

image-20220127211658688

148帧

image-20220127211735868

246帧

image-20220127211802597

key1-key3连起来是 i want play

感觉这个句子少了点什么,而且从语法角度也不太合适

image-20220127212815331

image-20220127212753633

再去看看还有没有二维码,好吧,我并没有找到

突然想起来potplayer也可以逐帧播放,下载链接

PotPlayer下载 - PotPlayer中文网 (potplayercn.com)

并且可以调整时间间隔,百度一下步骤

1.直接点击鼠标右键,选择“播放”-“定位”,取消“以关键帧定位”。

2.选择“时间跨度设置”。

3.将调解的大小设置合适的时长,取消下侧的框选。

4.还要注意定位的快捷键是使用“D/F”。

然后我就神奇地发现了二维码,potplayer太棒了

image-20220127215051761

image-20220127215623170

扫一下

image-20220127215726638

获得key

key1-key3连起来是 iwantplayctf

那么这个是干什么的呢?老方法,回过头用010看看视频

base64编码

image-20220127220114849

发现了最后有一串类似base64编码的尾巴,去解解看

UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQAD
Dx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEf
JkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA==

image-20220127222655137

这好像是个rar文件,然后保存成rar文件

保存成rar

image-20220127224407320

不知道为啥,他打不开,

image-20220127225610257

win rar都修复不了~换个完整的文件头也不行。。。

解码方式(弯路)

然后改了半天,才发现是这个网站的问题,不知道为什么,它解码的时候给漏了好多个00,从这2张图可以很明显地看出来

image-20220127232539526

image-20220127232555674

我改变了一下输出结果的格式就好了,输出为16进制(血泪教训)

image-20220127231607939

image-20220127231629486

010再试试

image-20220127231750161

image-20220127231736168

终于可以了

image-20220127231857713

密码应该就是那4个key拼凑而成的,解压得到flag

image-20220127231959847

3.flag

flag{CTF-from-RuMen-to-RuYuan}

13.间谍启示录

1.题目概述

image-20220127163708006

image-20220128213022149

2.解题过程

一共就几个文件,都打开看看吧

文档说明

image-20220128213154830

在打开systemzx.exe时

image-20220128212417982

image-20220128212514827

点击安装之后,在相应D出现了几个新的文件

image-20220128212647637

点击运行试试看

image-20220128212718100

运行flag.exe后,产生了一个机密文件.txt,打开看看

image-20220128212824642

发现了flag,不明白这个题目在考察什么???

3.flag

Flag{379:7b758:g7dfe7f19:9464f:4g9231}

14.zip

1.题目概述

image-20220128213252189

image-20220128213612790

2.解题过程

解压出了68个zip,根据题目描述,拼在一起,如何拼在一起呢?

先打开几个看看

image-20220128213829965

image-20220128214434545

那就是真加密了

接下来俺爆破无果,010看也没看出什么,只能求助网上的wp了,这是其中一个思路

image-20220128215615454

这个东西我一直没有太过关注,

image-20220128215942487

image-20220128220211659

利用CRC校验码爆破这个方法还是头一次见

那么这个题目的思路应该就是把这68个zip的crc校验码拼到一起,然后去解码,解码结果保存为文件,就可以了吧(后面没的思路和上一道题目差不多)

这是网上找的爆破脚本(脚本与68个压缩包放在同一文件夹就可)

import zipfile
import string
import binascii

def CrackCrc(crc):
    for i in dic:
        for j in dic:
            for k in dic:
                for h in dic:
                    s = i + j + k + h
                    if crc == (binascii.crc32(s.encode())):
                        f.write(s)
                        return

def CrackZip():
        for i in range(0,68):
            file = 'out'+str(i)+'.zip'
            crc = zipfile.ZipFile(file,'r').getinfo('data.txt').CRC
            CrackCrc(crc)

dic = string.ascii_letters + string.digits + '+/='

f = open('out.txt','w')
CrackZip()
print("CRC32碰撞完成")
f.close

得到所有zip的CRC校验码(但是好慢)

z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA==

解码,保存下来

image-20220130223114760

根据提示修复文件,文件头没有见过,文件尾是3D 7B 00 40 07 00,这是RAR的文件尾,添加文件头52 61 72 21 1A 07 00,保存

image-20220130222914132

打开rar看到flag

image-20220130223257095

3.flag

15.吹着贝斯扫二维码

1.题目概述

image-20220128222106705

image-20220128222213170

2.解题过程

打开flag.zip看看

是个加密的zip,在注释里有一串貌似是base32的编码,可能是密码

image-20220128222401747

去解解看

image-20220128222900300

不过好像解不出来,那先放一放,回去看看那些不明文件,

010打开一个看看

头是jpg,尾巴多了一点东西

image-20220128223111011

image-20220128223200575

改后缀

那就改改后缀看看能不能打开

image-20220128223320888

可以顺利打开,很明显这是一张二维码的一小部分,可以猜想,把全部的文件后缀都改成jpg,然后再把他们拼起来,不就是一张完整的二维码嘛,说干就干,不过也要借助一下脚本,python真是个好东西

import os

path = 'D://CTF//attachment//1' #文件具体路径,这个1是那堆文件所在的文件夹,不成功时可以改个路径
for i in os.listdir('D://CTF//attachment//1'): #路径最好用绝对路径,不会出错
	#if i == '修改后缀.py':
	#	continue

	#else:
		oldname = os.path.join(path,i)
		newname = os.path.join(path,i+'.jpg')
		os.rename(oldname,newname)

image-20220409092251449

运行完后,该怎么把这36张图片拼到一起呢?这是个问题(你也不知道顺序)

确认顺序

其实,在之前的图010看的时候,在文件尾后面还有一个数字,

image-20220128231200132

猜测这就是顺序,可以验证一下,

找一个3个角的特殊位置的图片,猜测数字可能是1,6,或31(根据图片数量确定位置)

image-20220128231414805

不放心可以再看看另外两个角

image-20220128231736560

image-20220128231904555

这下可以百分百确定了,这个数字就是拼图顺序

命名文件

可以利用python脚本根据这个顺序命名文件

import os
from PIL import Image

#目录路径
dir_name = r"./"
#获取目录下文件名列表
dir_list = os.listdir('./')
#print(dir_list)

#从列表中依次读取文件
for file in dir_list:
    if '.jpg' in file:
        f=open(file ,'rb')
        n1 = str(f.read())
        n2 = n1[-3:]	
        #经过测试发现这里要读取最后3个字节,因为最后还有一个多余的字节,不知道是不是转字符串的原因导致在末尾多了一个字符
        #print(file) #输出文件内容
        #print(n2)
        f.close()	#先关闭文件才能重命名,否则会报`文件被占用`错误
        os.rename(file,n2+'.jpg')	#重命名文件

image-20220409092456526

这些90多的,其实是1-9,代码写的不够好,出了点问题,改一下吧

利用ps拼图

拼图步骤如下:

1.新建,调整高度和宽度,我调整为24X24

image-20220409094125527

2.文件->置入嵌入对象,选择图片

image-20220409094229049

3.操作

注意有些地方可能会有一点点重合,

嘿,拼的还不错

image-20220409095429448

扫一下

image-20220409095510486

确认解码顺序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x4Pyxsn1-1657866852338)(https://wangyuhan2021-1308234555.cos.ap-nanjing.myqcloud.com/image-20220128225515420.png)]

解码

哦,这个应该就是那串编码的解码顺序了!难怪解不出来

base32→16进制→13→85→85→64→85(根据那串编码的格式判断顺序)

这个13不是base家族的,查了一下,是rot13编码

GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY
base32解码:3A715D3E574E36326F733C5E625D213B2C62652E3D6E3B7640392F3137274038624148
base16解码::q]>WN62os<^b]!;,be.=n;v@9/17’@8bAH
rot13解码::d]>JA62bf<^o]!;,or.=a;i@9/17’@8oNU
base85解码:PCtvdWU4VFJnQUByYy4mK1lraTA=
base64解码:<+oue8TRgA@rc.&+Yki0
base85解码:ThisIsSecret!233
解压密码就是ThisIsSecret!233

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9E31blIi-1657866852339)(https://wangyuhan2021-1308234555.cos.ap-nanjing.myqcloud.com/image-20220128234122574.png)]

3.flag

flag{Qr_Is_MeAn1nGfuL}

16.小易的U盘

1.题目概述

image-20220129160515506

image-20220129160814876

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBgzGg2I-1657866852340)(https://wangyuhan2021-1308234555.cos.ap-nanjing.myqcloud.com/image-20220129160833649.png)]

2.解题过程

flag.txt打开

image-20220129160936141

根据这个提示,flag可能要通过某些步骤生成,第一时间想到那个exe程序,打开看看

image-20220129161213672

然后这个程序就一直是这个界面,再看看其他的文件吧

image-20220129161758942

刚刚打开的是副本(2),打开副本(32)看看

image-20220129162322955那就根据它的提示,用按照它的提示,用VISUAL C++之类的东西打开,不过我想试试直接用WIN RAR 打开看看行不行

image-20220129163145097

查找一下,找到flag

image-20220129163217465

3.flag

flag{29a0vkrlek3eu10ue89yug9y4r0wdu10}

17.alison_likes

1.题目概述

image-20220129163345924

image-20220129163543167

2.解题过程

txt打开

image-20220129163620120

010看看两张图

image-20220129164154064

这张图挺正常

image-20220129164111878

很明显,这个图隐藏着一个zip,用Kali的binwalk分离一下看看,

分离图片

image-20220129165210562

image-20220129165238032

打开zip看看

image-20220129165503744

是一个加密的,看看是不是伪加密,可以用win rar修复功能判断

image-20220129165725531

那就是真加密,密码

寻找ZIP密码

先爆破试试

4个长度的数字

image-20220129170432961

6个长度的数字

image-20220129170404222

解压打开txt

image-20220129170610563

WVRKc2MySkhWbmxqV0Zac1dsYzBQUT09

有点像base64编码,解解看

image-20220129210302833

解码注意

不过好像有点问题,这个地方去查了一下,原来这里要连续解码3次,学到了学到了

image-20220129210502241

image-20220129210525905

image-20220129210602596

最后解出来是 killerqueen(正好是我喜欢的一首歌诶)

然而这个并不是flag,好奇怪,哪个地方没有处理好呢?

去百度了一下,原来第二张图片是outguess隐写,但是我不知道怎么看出来的

outguess隐写

那这个killerqueen就是密码,用Kali命令去解一下

outguess -k 'killerqueen' -r jljy.jpg out.txt

image-20220130224302219

终于得到flag了

3.flag

flag{pretty_girl_alison_likes_jojo}

18.从娃娃抓起

1.题目概述

image-20220129164821707

image-20220129165000400

2.解题过程

题目描述.txt

image-20220129164947885

从娃娃抓起.txt

image-20220130224531938

md5还不太了解,去查一查

一.作用:一般用于互联网一种数据的唯一性标识。

二.实体:本身是一个128位的0/1比特。一般被表示为16进制的字符串。4个比特位组成一个16进制字符,因此常常能见到的是(128/4=)32个16进制字符组成的字符串 4951 dd1c bff8 cbbe 4cd4 475c a939 fc8b,当然它实质是一种消息摘要算法

三.特点:

1.完全相同的一段数据,不论时间地点(加密算法相同的条件)加密出的32位的字符串完全相同。

2.加密过程本身就是一个有损的加密过程。因此几乎不能还原出原始数据。安全

补充:一般还原出原始数据都是使用碰撞的方式来还原。意思大概和穷举的意思一样,有足够多的原始数据量,世界上的所有数据用 1n来表示,把1n都用MD5计算一遍得1xnx(x表示计算后得的数)。把1n当成键值对的键,把1x~nx放入键值对的值,当得到一个MD5字符串,通过值去找键,就知道是什么数据了。因为你本来就拥有数据,因此才能找到数据。但当你没有原始数据时,想通过128比特的玩意去恢复大于128比特的数据本身就是玩笑,数据量都不一样,至于原理有兴趣的朋友可以研究研究信息论。不想研究的可以回想回想之前学的香农公式。再从这一点去研究。又有大的世界。
————————————————
版权声明:本文为CSDN博主「Anakki」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29519041/article/details/84403649

然后需要知道这句话指的是什么,这串数字和字母去百度一下

image-20220130230528994

那就好办了,这句话就是人工智能也要从娃娃抓起,

附上两个网站

中文电码查询 Chinese Commercial Code - 标准电报码免费在线查询|姓名电码|美国签证电码 (mcdvisa.com)

五笔输入法编码在线查询系统.汉字转拼音 (zd9999.com)

把这句话去加密一下,得到flag

MD5在线加密 - 站长工具 (chinaz.com)

image-20220130231606505

3.flag

flag{3b4b5dccd2c008fe7e2664bd1bc19292}

19.zips

1.题目概述

image-20220130232040806

image-20220130232147316

2.解题过程

和套娃似地,一个zip套着一个zip,

看看这个ZIP是不是伪加密

判断加密类型

image-20220131225053407

不是伪加密,那先爆破

爆破

image-20220131225324916

解压

image-20220131225531816

再判断加密类型

image-20220131230033594

修改后解压

image-20220131230625875

这个ZIP仍然是加密的,

image-20220131234405784

使用WIN RAR修复之后仍然是加密的,那就是真加密了,但是尝试爆破试不出来

再看看这个setup.sh文件

image-20220131234652941

#!/bin/bash

\#

zip -e --password=`python -c "print(__import__('time').time())"` flag.zip flag

原来如此,这个ZIP的解压密码的掩码是要通过这个文件来获得的,那就在python环境下运行一下代码,多试几次

image-20220131235418504

image-20220131235622684

那掩码应该就是1643644???.??去试试

试了半天不行就很奇怪,难道我做错了?

百度

image-20220201001201080

原来如此,再设置一下(注意,这个题目要求的是python2,python2的精度是两位)

image-20220201220222252

解压得到flag

image-20220201221037778

3.flag

flag{fkjabPqnLawhvuikfhgzyffj}

20.爬

1.题目概述

image-20220201222007453

image-20220201221813747

2.解题过程

010查看

image-20220201222332760

猜测这应该是一个PDF文件,修改后缀再打开

image-20220201222537268

只有一张图片,把照片移一下,出来一个图片(用的破解版的Adobe Acrobat DC)

image-20220203223418797

把内容保存下来,可以用QQ的文字识别

'0x77637466323032307b746831735f31735f405f7064665f616e645f7930755f63616e5f7573655f70686f7430736830707d ’

0x可以不要,试试010

image-20220203224903173

3.flag

flag{th1s_1s_@_pdf_and_y0u_can_use_phot0sh0p}

21.(╯°□°)╯︵ ┻━┻

1.题目概述

image-20220203192817430

image-20220203193033782

2.解题过程

这个题目很难想

只有这一个字符串,base解码解不出来,其他的思路也没想到

观察这个字符串的特点,差不多都是

010编辑一下,先把它看成十六进制

image-20220203194635561

换到右边

可以观察到左侧数字非常有规律,差不多都是60,30左右的样子,我们可以考虑ASCII,位数需要算一下,根据这个字符串中最小的来算,或者多试几次,总可以试出来的,在这里应该是128

借一个一个python脚本

key='d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd'
hex=[]
flag=''
for i in range(0,len(key)-1,2):
    zdh=key[i:i+2]
    hex.append(zdh)
for i in range(len(hex)):
    zdh1=hex[i]
    flag+=chr(int(int(zdh1,16))-128)
print(flag)

3.flag

flag{922ab9974a47cd322cf43b50610faea5}

22.docx

1.题目概述

image-20220204212827412

2.解题过程

打开是一个word文档,和黑客有关

image-20220204213513379

010打开

image-20220204213841576

竟然没有模板,按照老思路,修改成zip后缀试试,(文件头都一样)

image-20220204214809828

一个个地找呗

image-20220204214903911

3.flag

flag{unz1p_3v3ryth1ng}

23.百里挑一

1.题目概述

image-20220204215206732

image-20220204215148608

2.解题过程

一道流量分析题目,根据题目描述,流量包里应该有图片类文件

老思路。先追踪

image-20220204215458192

再导出

image-20220204215539573

save all,好家伙,直接一百七十多张照片

image-20220204215706032

那么flag藏在哪张图片里呢?wires hark看看有什么特殊的流

Kali上的新工具exiftool *|grep flag试一试

ExifTool是一种用于提取文件元数据的强大工具。它不仅适用于图像,还适用于其他格式的文件,比如PDF和mp4等。它使我们能够更新和删除文件的元数据,并提供有关文件的许多信息。可以通过这个回答了解

(2条消息) ubuntu 安装kali_如何在Linux,Windows,Kali,Ubuntu,Mint和示例中安装和使用exiftool_cunjiu9486的博客-CSDN博客

安装(对于Kali2021.3版本,如已安装请忽略)

sudo apt-get install libimage-exiftool-perl
image-20220204222128083

搜索flag

image-20220204222235286

另一半就不好找了,在Kali上用工具我搞了半天也没找出什么,还是回到wires hark上直接找吧(毕竟以前就有这个解法的题目)

在TCP114流中,找到另一半flag(不是我找出来的,找半天没找到,百度的)

image-20220204223200467

3.flag

flag{ae58d0408e26e8f26a3c0589d23edeec}

24.千层套路

1.题目概述

image-20220205133326585

image-20220205133352508

2.解题过程

先看看是不是伪加密

image-20220205133605900

win rar修复之后,仍然是加密的,那就是真加密,去爆破

image-20220205133747590

解压

image-20220205133916610

再爆破(忽然发现密码就是zip名)

image-20220205134001059

解压

image-20220205134114819

盲猜密码是0653

当我解压到这个步骤的时候,我感觉事情好像不太对\0573\0114\0653\0234\0976\0669\0540\0248\0275\0149\0028\0099\0894\0991\0291\0414\0296\0241\0510\0914\0340\0140\0286\0532\0347\0345

所以,只能求助脚本,要不根本解不完啊

脚本

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()


好家伙,解压出来1000个zip

还跑出来一个qr.zip,打开,有点像RGB三色素那个(而且不是255 255 255就是0 0 0,绝对是黑白的二维码)

image-20220205161045193

用脚本把它转换成图片吧

from PIL import Image
import os

string = ''

file = open('./qr.txt')
MAX = 200

picture = Image.new("RGB", (MAX, MAX))
for y in range(MAX):
    for x in range(MAX):
        string = file.readline()
        picture.putpixel([x, y], eval(string))  # 直接使用eval()可以转为元组
picture.show()



运行之后自动出现一张二维码

image-20220205165327402

扫描得到 flag

image-20220205165630118

3.flag

flag{ta01uyout1nreet1n0usandtimes}

25.girlfriend

1.题目概述

image-20220205140812842

image-20220205165734039

2.解题过程

解压之后是一个音频,用Audacity打开,应该是段摩斯电码吧

image-20220205170039967

写下来

— . … . … . . … . … . . . .-- . - . … . … . …- … . … . … . … . … . . . …

image-20220208215651480

忽然感觉不太对,这是摩斯电码吗,再仔细听一听,好像是拨号按键时的声音(大意了)

原来是DTMF拨号音识别,这有个程序可以识别dtmf2num.exe

下载地址,实在是太不好找了

https://www.softpedia.com/get/Multimedia/Audio/Other-AUDIO-Tools/DTMF2NUM.shtml#download

在当前文件夹中打开power shell(鼠标点击空白,Ctrl+Shift+右键),输入

.\ dtmf2num.exe girlfriend.wav

回车

image-20220215213214227

DTMF numbers:  999*666*88*2*777*33*6*999*4*4444*777*555*333*777*444*33*66*3*7777

然后就联想一下以前的九键手机按键,大概是这样的

image-20220215214041508

盲猜999即按3次9得到的字母(小时候打字的经验),666即按3次6得到的字母,以此类推:

999–y,666–o,88–u,

这前三个拼起来便是单词you,所以猜想是对的,继续:

2–a,777–r,33–e,6–m,999–y,4–g,4444–i,777–r,555–l,333–f,777–r,444–i,33–e,66–n,3–d,7777–s.

7777和4444只能是S和I,毕竟没有第四个字母。

连起来便是 youaremygirlfriends

3.flag

flag{ youaremygirlfriends}

26.Attack

1.题目概述

image-20220205141024011

image-20220215215637220

2.解题过程

是一道流量分析题,

先追踪流

HTTP

image-20220215215805196

TCP

image-20220215215838250

追踪出的内容是一模一样的

导出对象

HTTP(只有这里面有文件)

image-20220215220327486

保存下来看看

image-20220215220706135

这个lsass.dmp文件有些可疑,文件很大,

lsass是windows系统的一个进程,用于本地安全和登陆策略。

在foremost分离时有了发现

image-20220220214420263

image-20220220214627118

其他文件夹里都是些没用的图片

加密的txt,

image-20220220214906388

提示administrator的密码,联想到前面那个dmp文件,得知需要用一个新工具来获取dmp文件中的用户密码

下载地址

Releases · gentilkiwi/mimikatz (github.com)

image-20220220220659111

解压之后忽略安全软件提出的警告

mimikatz使用教程

(4条消息) 内网渗透神器(Mimikatz)——使用教程_W小哥-CSDN博客_mimikatz

image-20220220215224037

image-20220220215316849

然后把lsass文件放到mimikatz.exe文件目录下,再打开mimikatz

image-20220220221343738

输入

privilege::debug
sekurlsa::minidump 1.dmp
sekurlsa::logonpasswords full

回车

image-20220220221607491

password:W3lc0meToD0g3

解压打开

image-20220220221804414

得到flag

3.flag

flag{This is the secret of the administrator!}

27.Game

1.题目概述

image-20220221185624287

2.解题过程

010看图片

图片修改高之后也没出现什么东西

image-20220221190029232

foremost分离也没有东西

再回头看看那几个不认识的文件吧

先打开这个html文件看看

image-20220221190417509

用记事本打开,按照经验查查找flag或者password

image-20220221193829459

出现一串base32编码,

ON2WG5DGPNUECSDBNBQV6RTBNMZV6RRRMFTX2===

解出来

image-20220221194351192

试了一下发现并不是flag,emmm,只能再重点看一下图片了

会不会是LSB隐写呢?用stegsolve看看

LSB隐写

试了几次找出来了一串字符

image-20220221194656312

U2FsdGVkX1+zHjSBeYPtWQVSwXzcVFZLu6Qm0To/KeuHg8vKAxFrVQ==

但是却解不出来,好奇怪

image-20220221194850554

百度一下大神的wp,才知道这原来是DES加密,第一次见

DES加密

介绍(好复杂看不懂)

DES算法详解 - songoo - 博客园 (cnblogs.com)

常用DES解密网站

在线Triple DES加密 | Triple DES解密- 在线工具 (sojson.com)

解出来

image-20220221200102220

3.flag

flag{U_F0und_1t}

28.followme

1.题目概述

image-20220205141110421

2.解题过程

流量分析题

追踪流

image-20220221202441292

导出HTTP对象,果然有东西

image-20220221202653793

save all之后,有很多东西

image-20220221202849732

这个题和前面那个题目有点像,都是有好多文件

对,是百里挑一这道题,利用Kali命令直接搜索flag,CTF或者password之类的字样

grep

image-20220221203723868

打开Kali,在该文件目录下打开终端

输入命令

grep -r 'CTF'

image-20220221204258790

找到flag

但是如果把CTF改成password,可能会找不到

image-20220221204527022

3.flag

flag{password_is_not_weak}

29.CyberPunk

1.题目概述

image-20220205141132506

image-20220221202051249

2.解题过程

打开这个程序是这样的

image-20220221202033608

我就等了一会,说不定会出现什么东西

但是过了很久也没出现啥

忽然发现他说到2020.9.17会告诉我们flag

image-20220221205317113

于是我把电脑时间改了一下

修改时间

修改时间之后重新打开,出现了flag

image-20190917210707508

3.flag

flag{We1cOm3_70_cyber_security}

30.通行证

1.题目概述

image-20220205141154392

image-20220205142019454

2.解题过程

image-20220205142006789

a2FuYmJyZ2doamx7emJfX19ffXZ0bGFsbg==

然后我试了试也不是凯撒密码,那该怎么办呢?

经过一番搜集,原来这是栅栏密码

什么是栅栏密码呢?

栅栏密码

image-20220221211852232

栅栏密码(Fence)——python解密_有人_295的博客-CSDN博客_栅栏密码

几种加密方式简介

栅栏密码(The Rail-Fence Cipher)详解 - SwordCreater - 博客园 (cnblogs.com)

然后,多试几次每组字数,并且,这个题比较神奇地地方是要我们加密,而不是平常的解密,好家伙,这谁能想到

image-20220221213736679

CTF在线工具-在线栅栏密码加密|在线栅栏密码解密|栅栏密码算法|Railfence Cipher (hiencode.com)

这就是个简单的凯撒密码啦,耐心试位数(不要认为开头一定是flag或CTF之类的哦)

image-20220221214039847

3.flag

flag{oyay_now_you_get_it}

31.USB

1.题目概述

image-20220205141242550

image-20220221214617907

2.解题过程

010查看压缩包

修改zip文件头

image-20220221214858491

把74改成7A,再打开压缩包,多了一张图片

image-20220221215019485

010看图片没看出什么,再看看是不是LSB隐写

LSB隐写

在blue 0通道有一张二维码

image-20220221215621150

扫一下

image-20220221220011007

ci{v3erf_0tygidv2_fc0}

栅栏密码

image-20220222093855256

这是干嘛的?先放在这,去看看另一个文件

010看看,发现了一些东西

image-20220221220324145

保存下来看看

7-zip解压,虽然说文件尾错误,但是还是可以解压出来的,win-rar就不行

打开,是USB数据包内容(百度得知)

image-20220222095415649

又要学到新东西了,使用命令提取键盘的数据

Kali命令

提取USB键盘的数据

 tshark -r key.pcap -T fields -e usb.capdata > usbdata.txt

image-20220222100012021

打开txt

image-20220222100056250

利用脚本获取信息

脚本下载地址

WangYihang/UsbKeyboardDataHacker: USB键盘流量包取证工具 , 用于恢复用户的击键信息 (github.com)

Kali命令

python UsbKeyboardDataHacker.py key.pcap

image-20220222101205717

获得key:xinan

联想上面那个位置的东西,应该是维吉尼亚密码(其实我不知道,第一次见)

维吉尼亚密码

网站

维吉尼亚密码在线加密解密 - 千千秀字 (qqxiuzi.cn)

image-20220222101602095

然后就是栅栏密码了

栅栏密码

image-20220222101646263

3.flag

flag{vig3ne2e_is_c00l}

32.虚假的压缩包

1.题目概述

image-20220205141332337

image-20220222222714570

image-20220222222803657

2.解题过程

真实的压缩包.zip伪加密

image-20220222223949952

修改为00后,解压

image-20220222224133147

其实不用这么麻烦,7-zip可以直接打开

RSA加密

image-20220222223613190

第一次接触到RSA加密

介绍

(4条消息) 非对称加密算法–RSA加密原理_Vincent的专栏-CSDN博客_非对称加密算法

RSA破解脚本

import gmpy2

p=gmpy2.mpz(3)
q=gmpy2.mpz(11)
e=gmpy2.mpz(3)
l=(p-1)*(q-1)
d=gmpy2.invert(e,l)
c=gmpy2.mpz(26)
n=p*q
ans=pow(c,d,n)
print (ans)

如果pychrm或python报错,那可能是你没有安装gmpy2的缘故,安装步骤如下

gmpy2安装
下载gmpy2.whl

1.进入如下网址安装whell(轮子):(别用pip install whell,不管用)

https://www.lfd.uci.edu/~gohlke/pythonlibs/

cp27代表2.7版本cp36代表3.6版本amd64代表64位win32代表32位

(小贴士,ctrl+F搜索gmpy2即可找到gmpy2库,省时又省力)

image-20220227191820508

2.下载好后,把文件拖入到你对应编辑器的Scripts文件夹里(不用改名字)

image-20220227192058633

3.在Scripts文件夹下打开power shell窗口(Ctrl+Shift+右键),输入

pip install + 你下载的文件放入的文件夹路径 + \文件名.whl(+字不用写进去)

举例:

pip install E:\Programes\python_work\Scripts\gmpy2-2.0.8-cp39-cp39-win_amd64.whl

然后回车,

image-20220227192331827

上面已经显示gmpy2安装成功了可以通过pip install gmpy2测试一波,显示如下

image-20220227192358402

但是,我的安装之路却错误百出,一上来下错了文件,找到正确的后版本又不行,唉,不过又试了一个版本,发现可以,然后还更新了一波,如图

image-20220227192615978

OK,安装完成

运行后,出来了密码

密码

image-20220227192738136

当我以为解压密码是5的时候,却解不出来

呃,这里也有个坑,回过头看那个txt文档

image-20220227192923189

所以解压密码是:答案是5

太坑人了

解压

image-20220227193802168

image-20220227194101064

010打开图片

image-20220227195113420

从最简单的修改高度看看

第二行4-7列,从第七列开始修改,不要修改的太高了

image-20220227195443158

果真有东西

image-20220227195524244

^是C语言中的异或,那我们尝试将“亦真亦假”这个文件的16进制按照每位与5异或看看,(毕竟他没有上场)

首先修改一下名字,改成英文,比如cuihua,然后复制到pycharm存放python文件的文件夹下

异或(待定)

脚本

f1 = open('./cuihua','r')
data = f1.read()
f1.close()
flag_data = ""
for i in data:
    tmp = int(i,16) ^ 5
    flag_data += hex(tmp)[2:]
f2 = open('./flag.doc','wb')
f2.write(flag_data.decode('hex'))
f2.close()

如果报错,类似于这样

image-20220227201054724

这是因为python3并不支持python2中的一些写法,

具体解释

解决方法如下

在python scripts文件夹下打开power shell窗口,输入

pip install h5py==2.10 -i https://pypi.doubanio.com/simple

3.flag

Page4

1.[SWPU2019]Network(TTL隐写)

1.题目概述

image-20220312112132255

image-20220312112430479

2.解题过程

文档中的数字代表什么呢?会不会是RGB?

image-20220312112638417

看了一下以前做过的题目,好像并不是

那是什么呢?百度告诉我这是TTL隐写,哇,长见识了

TTL是 Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4报头的一个8
bit字段。注意:TTL与DNS
TTL有区别。二者都是生存时间,前者指ICMP包的转发次数(跳数),后者指域名解析信息在DNS中的存在时间。

IP报文在路由间穿梭的时候每经过一个路由,TTL就会减1。
这个东西是用来防止数据过多的。计算机网络知识。

大多数情况下通常只需要经过很小的跳数就能完成报文的转发,远远比上限255小得多,所以我们可以用TTL值的前两位来进行传输隐藏数据。
所以加密的方法就是把一个ASCII码分4截,分到4个TTL里面,有点像是最低位像素的隐写。

啊,这些好像也没啥用,

按照以下步骤,

1.转成2进制,

2.写个脚本。取出前两位。重新组合。再以8位一组。

3.转换为16进制字符。再将16进制字符转换为字符(好复杂)

借助大佬的脚本,开干!

脚本如下

with open('Network.txt') as f:
    lines = f.readlines()
n_num = []
#分析出所有的数
for i in lines:
    if i!='\n':
        n_num.append(int(i))
#拿到每个TTL值的高位
rlt = ''
for i in range(0,len(lines)):
    tmp = bin(n_num[i])[2:]
    tmp = '0'*(8-len(tmp)) + tmp
    rlt += tmp[0:2]
#得到最终的结果并存到文件中
rlt2 = ''
for i in range(0,len(rlt),8):
    rlt2 += chr(int(rlt[i:i+8],2))
with open('output.txt','w') as f:
    f.write(rlt2.rstrip())

image-20220312114339378

出来一个类似于zip文件的编码,存下来

打开,竟然是加密的

image-20220312114830696

是伪加密

image-20220312114911319

直接用7-zip打开

image-20220312115311327

这些base64编码和以前做过的一道题很像

image-20220312115735985

再试一下

多重Base64破解

import base64

f = open('1flag.txt','rb').read()
while True:
    f = base64.b64decode(f)
    if b'{' in f:
        print(f)
        break
    else:
        continue

pycharm python2环境下运行, 可能需要安装scikit-learn安装包(在设置里)

image-20220312122058159

3.flag

flag{189ff9e5b743ae95f940a6ccc6dbd9ab}

2.[RCTF2019]draw

1.题目概述

image-20220312132228277

image-20220312132216885

2.解题过程

题目名称叫“draw",肯定与图片有关

百度

image-20220312133344604

image-20220312133354217

是logo语言,丢进网站

Logo解释器 (calormen.com)

不同的浏览器出来的结果可能不太一样,但内容是一样的

image-20220312134555158

image-20220312134410306

修改一下字母顺序

RCTF_HeyLogo

3.flag

flag{RCTF_HeyLogo}

3.[UTCTF2020]file header

1.题目概述

image-20220312134731260

image-20220312134841250

2.解题过程

题目名称叫file header,而且图片打不开猜想是文件头有问题

010打开

image-20220312134944846

果然,文件头没有,加上看看

修改文件头

89504E47

image-20220312140212235

能打开了

image-20220312140240867

太感动了,终于遇到一道简单题了

3.flag

flag{3lit3_h4ck3r}

4.[ACTF新生赛2020]明文攻击

1.题目概述

image-20220312140432425

image-20220312140532401

image-20220312140549851

2.解题过程

题目叫明文攻击,又有加密的zip

先看看这个图片

image-20220312140748324

在文件尾FFD9后面还有一串未知字符

Kali下binwalk分离看看

image-20220312140954518

看来没有什么东西,线索在这串字符中

image-20220312141944071

这不是zip文件头的一部分嘛,而且还有flag.txt字符,存下来,把文件头补充完整

打开这个zip

image-20220312142142663

它也有一个flag.txt文件,联想到题目名称和那个res.zip里的文件,使用archpr进行明文攻击

复习一下明文攻击原理

明文攻击是一种较为高效的攻击手段,大致原理是当你不知道一个zip的密码,但是你有zip中的一个已知文件(文件大小要大于12Byte)时,

因为同一个zip压缩包里的所有文件都是使用同一个加密密钥来加密的,所以可以用已知文件来找加密密钥,利用密钥来解锁其他加密文件。

image-20220312143240012

image-20220312143259849

archpr跑起来

image-20220312184812076

运行一会后,停止攻击,

image-20220312185026718

会出来一个密钥和一个新的压缩包,新的压缩包就和加密的压缩包被破解之后的

image-20220312185000823

3.flag

flag{3te9_nbb_ahh8}

5.二维码

1.题目概述

image-20220312185154079

image-20220312185139242

2.解题过程

是一个撕破了的二维码,把它拼起来应该就好了

废了半天劲才拼成这样,关键是还扫不出来

image-20220312194902782

借用一下别人的图

image-20220312195310507

qr-reasearch好像扫不出来,用微信扫一扫可以(也不容易扫出来)

image-20220312195616873

3.flag

flag{7bf116c8ec2545708781fd4a0dda44e5}

6.[BSidesSF2019]zippy

1.题目概述

image-20220313185359586

image-20220313185528926

2.解题过程

追踪TCP流发现了这个

image-20220313200127866

哇,还是个加密的压缩包,但是导出对象里没有文件,那就用binwalk分离一下试试

image-20220313200523501

有戏,打开看看

image-20220313200651802

密码应该就是前面那个supercomplexpassword

image-20220313200739015

3.flag

flag{this_flag_is_your_flag}

7.[MRCTF2020]Hello_ misc

1.题目概述

image-20220313200852010

image-20220313200945541

2.解题过程

rar是加密的

image-20220313201010601

打开图片

image-20220313201033319

名叫try to restore it, 提示我们修复它,如何修复呢?

感觉这个图片像LSB隐写,stegsolve打开看看

LSB隐写

调整通道没有看到什么,改一下位深度

调整到这个数值的时候看到了熟悉的png文件头

image-20220313201741105

保存下来打开

image-20220313202020902

password:!@#$%67*()-+

按照提示binwalk分离原图片

binwalk分离

image-20220313202811970

打开压缩包,用前面那个password解压打开

TTL隐写

image-20220313203424311

又是熟悉的感觉,和network那道题很像

image-20220313203619993

借助同样的思路,用脚本破解

with open('out.txt') as f:
    lines = f.readlines()
n_num = []
#分析出所有的数
for i in lines:
    if i!='\n':
        n_num.append(int(i))
#拿到每个TTL值的高位
rlt = ''
for i in range(0,len(lines)):
    tmp = bin(n_num[i])[2:]
    tmp = '0'*(8-len(tmp)) + tmp
    rlt += tmp[0:2]
#得到最终的结果并存到文件中
rlt2 = ''
for i in range(0,len(rlt),8):
    rlt2 += chr(int(rlt[i:i+8],2))
with open('out1.txt','w') as f:
    f.write(rlt2.rstrip())

image-20220313203920331

打开out1.txt

image-20220313203949905

rar-passwd:0ac1fe6b77be5dbe

解压

image-20220313204058316

感觉这有点像word后缀改成zip再解压,改成doc后缀看看

zip改doc后缀

image-20220313204220413

啊?就这,玩捉迷藏呢

在文档的下面,这几个换行符有点不正常

image-20220313204838168

全选以后,有猫腻,应该是不可见字符,复制到sublime里看看

不可见字符

image-20220313205106047

MTEwMTEwMTExMTExMTEwMDExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTEwMDAwMDAxMTExMTExMTExMDAxMTAx
MTEwMTEwMTEwMDAxMTAxMDExMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMTExMTExMTEwMTEwMDEx
MTEwMDAwMTAxMTEwMTExMDExMTEwMTExMTExMTAwMDExMTExMTExMTExMDAxMDAxMTAxMTEwMDAwMDExMTExMDAwMDExMTExMTEx
MTEwMTEwMTAwMDAxMTExMDExMTEwMTExMTExMDExMTAxMTExMTExMTEwMTEwMTEwMTAxMTExMTExMTAwMTEwMTExMTExMTExMTEx
MTEwMTEwMTAxMTExMTExMDExMTEwMTExMTAxMDExMTAxMTExMTExMTEwMTEwMTEwMTAxMTAxMTExMTAwMTEwMTExMTExMTExMTEx
MTEwMTEwMTAwMDAxMTAwMDAwMTEwMDAwMDAxMTAwMDExMTAwMDAwMTEwMTEwMTEwMTAxMTEwMDAwMDAxMTExMDA

是一些base64编码,解码看看

image-20220313205313638

是一串二进制字符,转成16进制看看

没转出来啥东西,哪里错了呢?

忽然发现这些base64字符分行有点奇怪,会不会让我们分行解呢?

分行解base64

试一下

110110111111110011110111111111111111111111111111101110000001111111111001101

110110110001101011110111111111111111111111111111111101111111111111110110011

110000101110111011110111111100011111111111001001101110000011111000011111111

110110100001111011110111111011101111111110110110101111111100110111111111111

110110101111111011110111101011101111111110110110101101111100110111111111111

11011010000110000011000000110001110000011011011010111000000111100

哇,这就有意思了,这些01代表什么呢?

百度一下wp,这原来是可以变成图片的,脑洞太大了

用记事本替换功能把1或者0换成空格,试了一下,把1换成空格可以

image-20220313211300864

把0连起来,构成了flag{He1Lo_mi5c~}

字符错了可以多试几次

3.flag

flag{He1Lo_mi5c~}

8.[UTCTF2020]basic-forensics

1.题目概述

image-20220314103437610

image-20220314103513309

2.解题过程

题目叫basic-forensics,基本取证

图片打不开010看看

image-20220314103657770

没有文件头,并且有许多可读字符

搜flag字符

image-20220314110404858

flag{fil3_ext3nsi0ns_4r3nt_r34l}

3.flag

flag{fil3_ext3nsi0ns_4r3nt_r34l}

9.[WUSTCTF2020]spaceclub

1.题目概述

image-20220305185441220

image-20220305185425335

2.解题过程

txt文档大小为4kb但是打开却显示空白,肯定有猫腻

选中之后是这样的

image-20220305185635333

010打开

image-20220305185655324

16进制下数值非常规律,

用sublime打开看看(弱口令那道题也是这样的方法,可以去复习一下)

image-20220305190458605

Ctrl+A全选之后,可以看到文档中的大量 “·”,这个长度不应该是摩斯密码,而且太规律了,怀疑是长的一行代表一个东西,短的一行代表一个东西,这就可以联想到二进制

把长的一行换成1,短的一行换成0看看

1.在sublime里选中长的一行(不要先选短的),复制

然后用记事本的替换,把复制的一行粘贴,替换成1,

2.1.在sublime里选中短的一行,复制

然后用记事本的替换,把复制的一行粘贴,替换成0,

结果如图所示

image-20220305191445809

011101110110001101110100011001100011001000110000001100100011000001111011011010000011001101110010011001010101111100110001011100110101111101111001001100000111010101110010010111110110011001101100010000000110011101011111011100110011000101111000010111110111001100110001011110000101111101110011001100010111100001111101

然后二进制转字符

image-20220305192323410

得到flag

3.flag

flag{h3re_1s_y0ur_fl@g_s1x_s1x_s1x}

10.[MRCTF2020]Unravel!!

1.题目概述

image-20220305174546356

image-20220305174636057

2.解题过程

先用010打开图片

image-20220305175204627

在最后面,发现了一点提示

image-20220305175312058

aes,pngPK,可能是这个图片文件包含某个png,然后再对这个png进行AES解密

binwalk分离

image-20220305195022833

得到Tokyo.png,

image-20220305175652947这应该就是AES密钥

查看wav文件

老规矩,用Audacity打开分析频谱

image-20220305180304049

image-20220305180330414

好像也没啥东西

010看看(文件名提示Look_at_the_file_ending)

image-20220305180543940

key=U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=

AES解密

网站

在线AES加密 | AES解密 - 在线工具 (sojson.com)

image-20220305184245631

解得CCGandGulu,先放这里

最后看这个win-win.zip

image-20220305184442576

需要密码,试试刚刚得到的这个,应该就是解压密码

成功提取

Audacity没找出什么东西,再用Silent Eye看看

image-20220305184903931

得到flag

3.flag

flag{Th1s_is_the_3nd1n9}

11.[MRCTF2020]不眠之夜(待定)

1.题目概述

image-20220303201040453

image-20220303201249655

image-20220303201322443

image-20220303201407370

2.解题过程

这么多图片拼起来好像有字(红色字迹)

Kali工具montage和gaps

下载步骤

安装montage:
#Kali Linux

apt-get install graphicsmagick-imagemagick-compat

然后慢慢等他安装就好了

安装gaps:
git clone https://github.com/nemanja-m/gaps.git

montage *jpg -tile 10x12 -geometry 200x100+0+0 out.jpg #把图片碎片合成一个图片

将目录中的jpg文件按顺序拼成x轴10块,y轴12块,每个图块大小为200x100像素,输出文件为out.jpg

montage *jpg -tile 10x12 -geometry 200x100+0+0 out.jpg 
gaps --image=out.jpg --generations=50 --population=120 --size=100
#把图片碎片合成一个图片
# 将目录中的jpg文件按顺序拼成x轴10块,y轴12块,每个图块大小为200x100像素,输出文件为out.jpg
#还原原图片

//gaps --image=out.jpg --generations=50 --population=120 --size=100 #还原原图片
--image           指向拼图的路径
--size            拼图块的像素尺寸
--generations     遗传算法的代的数量
--population      个体数量
--verbose         每一代训练结束后展示最佳结果
--save            将拼图还原为图像


montage *jpg -tile 10x12 -geometry 200x100+0+0 out.jpg

3.flag

12.[ACTF新生赛2020]music

1.题目概述

image-20220314111803705

image-20220314111857128

2.解题过程

打开听一听

image-20220314112053799

010打开,添加文件头后仍然打不开

image-20220314114652873

忽然发现第二行A1和第一行添加的00位置非常对应,A1的异或正好是00,找到方法了

二进制异或

把原先添加的文件头删掉

image-20220314115033946

image-20220314115106288

image-20220314115118047

可以打开了,听到flag

flag{abcdfghijk}

3.flag

flag{abcdfghijk}

13.蜘蛛侠呀

1.题目概述

image-20220305192654673

image-20220305193655897

2.解题过程

wireshark查看

随便打开几个看看

image-20220305194508011

image-20220305194601752

image-20220305194657357

好像他们的后面都有一串东西

Tshark提取

使用Kali工具将其提取出来

tshark -r out.pcap -T fields -e data > flag.txt

image-20220305195417316

image-20220305195347454

大量数据,可以看出有很多重复

python脚本去重

with open('flag.txt', 'r') as file:
    res_list = []
    lines = file.readlines()
    print('[+]去重之前一共{0}行'.format(len(lines)))
    print('[+]开始去重,请稍等.....')
    for i in lines:
        if i not in res_list:
            res_list.append(i)
    print('[+]去重后一共{0}行'.format(len(res_list)))
    print(res_list)

with open('flag1.txt', 'w') as new_file:
    for j in res_list:
        new_file.write(j)


image-20220305200808181

输出仍然有很多行,和好像是16进制

image-20220305200718727

然后将十六进制数据转为字符

十六进制数据转为字符

脚本(只适用于python2)

import binascii()

with open('flag1.txt','r') as file:
    with open('data2.txt','wb') as data:
        for i in file.readlines():
            data.write(binascii.unhexlify(i[:-1]))

还是网站香

在线字符串和16进制互转 - 在线工具 (bugscaner.com)

image-20220305201745629

结果保存下来

image-20220305202656638

image-20220305202745861

首尾这两行没有用,删掉

利用记事本的替换功能,删掉 S T A R T START START

image-20220305203110100

Base64转16进制

方法一:

利用python将base64解码以字节流形式写成zip

import base64

with open('data.txt','rb') as file:
    with open('res.zip','wb') as new_file:
        new_file.write(base64.b64decode(file.read()))

image-20220305205316473

方法二:

利用网站(修改编码输出格式,数据量大,网站可能会卡)

image-20220305205244551

得到相同的16进制数据后,打开010,在编辑里选择粘贴自16进制文本

image-20220305210144311

然后打开压缩包,是一个gif文件,先用stegsolve和Kinovea打开都没有发现什么,百度才知道这是另一种隐写,叫时间隐写(真是稀奇)

时间隐写

Kali工具

identify -format “%T” flag.gif

image-20220305211902537

得到2050这样的重复,

字符替换

模仿上一题(spaceclub)的思路,把20替换成0,50替换成1,最后的4个6就忽略,得到(利用记事本这个强大的工具)

011011010100010000110101010111110011000101110100

然后把这个二进制转成字符

[在线二进制转换字符串EN] - 转换 (txttool.com)

image-20220314111047938

把这个字符MD5加密

image-20220314111229584

多试几次看看哪个对,试了一下,32位小写是正确答案

3.flag

flag{f0f1003afe4ae8ce4aa8e8487a8ab3b6}

14.[UTCTF2020]zero

1.题目概述

image-20220314115413457

image-20220314120111700

2.解题过程

题目提示0;

Sublime打开,看到一些奇怪的东西

image-20220314120057572

是一些零宽度字符,利用网站

Unicode Steganography with Zero-Width Characters (330k.github.io)

image-20220314120420834

3.flag

flag{whyNOT@sc11_4927aajbqk14}

15.easy misc

1.题目概述

image-20220309171936325

decode被加密了

read里面是这样的

image-20220309172224789

2.解题过程

压缩包破解

打开有提示密码

image-20220309204230356

算了一下,根号后面这一串数字结果是7,那么解压密码应该就是7+NNULLULL,7代表什么呢,试了一下,不是数字7,那么应该就是位数,Archpr破解试试

(注意,?要在英文模式下输入,别忘了还有个“,”

image-20220309205510200

解压打开

image-20220309205714424

先放这儿

再去看那些txt文档

按照hint提示,提取什么东西的前十六个字符,先打开几个文档看看;

24内容是这样的

image-20220309173210361

13

image-20220309173835206

1

image-20220309173919192

呃,好像也没啥思路,要不先看看那张照片吧

分离图片

foremost分离

image-20220309205912626

两张一模一样的图片,但是名字不一样,猜测是盲水印(虽然我也不太懂)

盲水印

学习一下

(5条消息) 隐写术(盲水印):从入门到出门_guofei9987的博客-CSDN博客_文本隐写术

要是觉得太难,就看这个简单的

【CTF】图片隐写术 · 盲水印 - 双份浓缩馥芮白 - 博客园 (cnblogs.com)

具体工具

bwmforpy3.py脚本

下载网站

GitHub - chishaxie/BlindWaterMark: 盲水印 by python

用法(如果报错,比如 No module named 'matplotlib’或者No module named ‘cv2’,就在power shell窗口输入以下代码)

注意,一定是这个,不要打开终端,可能跑不出来

image-20220310192224537

python -m pip install matplotlib  #python3环境
pip3 install opencv-python  #python3环境

如果没有报错,python3环境输入

python bwmforpy3.py decode 00000000.png 00000232.png output.png

但是运行出来是这样的

image-20220310191926258

查了一下才知道,工具里有个说明:注意程序python2和python3版本的加解密结果会有所不同,主要原因是python2和python3 random的算法不同,如果要让python3兼容python2的random算法请加 --oldseed参数。
因此,加上“–oldseed”:

image-20220310192037711

然后输入

python bwmforpy3.py decode 00000000.png 00000232.png result.png --oldseed

image-20220310192319427

出来了

image-20220310192355943

提示打开11.txt,去看看

image-20220310192500308

前面有个提示,提取前16个字符,那肯定不是文本里的前16个字符,根据咱们丰富的经验(bushi),应该是字频前16

脚本跑起来

字频脚本

这里引用别人的代码,在此表示感谢:

import re

file = open('11.txt')	#根据路径自行调整
line = file.readlines()
file.seek(0,0)
file.close()

result = {}
for i in range(97,123):
	count = 0
	for j in line:
		find_line = re.findall(chr(i),j)
		count += len(find_line)
	result[chr(i)] = count
res = sorted(result.items(),key=lambda item:item[1],reverse=True)

num = 1
for x in res:
		print('频数第{0}: '.format(num),x)
		num += 1

image-20220310192934466

image-20220310192950770

前16个字符是:

image-20220310193038697

即:

etaonrhisdluygwm

然后利用解压出来的decode那个文件进行替换(血泪教训)

image-20220310194125592

替换出来是

QW8obWdIWT9pMkFSQWtRQjVfXiE/WSFTajBtcw==

去base64网站解码

image-20220310195600069

然后再去base85网站解码

image-20220310195707175

3.flag

flag{have_a_good_day1}

16.派大星的烦恼

1.题目概述

image-20220310190139847

image-20220310190330656

2.解题过程

仔细揣摩题目概述,两种伤疤,而且还有0x22,0x44这种,可以想到二进制(smart)

010打开

image-20220310190431152

这后面为啥全是一样的,搜一搜看看

image-20220310203042389

image-20220310203128449

如果只是滑滚轮的话很可能看不到,毕竟22和44太少了(有点像一种隐写)

替换字符

把这些22和44提取出来,然后利用记事本的替换,把22换成0,把44换成1,试试看

(这样选择就可以复制22和44了)

image-20220310203514897

image-20220310203636385

0110110000101100000011000110110010011100101011000000110010000110101011000010110010001100000111000010110001000110001001101010110001100110101001100110110001000110011011001010011010101100010001100010110011000110101001100010110011001100000111001100110001001100

接下来该干什么呢?陷入了僵局

题目又提示 (答案为32位的一串字符串),所以尝试将其转化为字符,发现是一堆无意义的东西

image-20220310204340420

要不先转成16进制,(去掉空格)再转字符?

image-20220310204931873

image-20220310205215351

卡壳了许久之后,突然想到倒序

倒序

脚本

a = "01101100 00101100 00001100 01101100 10011100 10101100 00001100 10000110 10101100 00101100 10001100 00011100 00101100 01000110 00100110 10101100 01100110 10100110 01101100 01000110 01101100 10100110 10101100 01000110 00101100 11000110 10100110 00101100 11001100 00011100 11001100 01001100"
a = a.split()
flag = ''
for i in a:
    flag += chr(int(i[::-1],2))

print (flag)

image-20220310210502730

6406950a54184bd5fe6b6e5b4ce43832

再转字符(我怕我是傻了)

这不就是flag吗?

3.flag

flag{6406950a54184bd5fe6b6e5b4ce43832}

17.[GKCTF 2021]签到

1.题目概述

image-20220311141537461

image-20220311182823546

2.解题过程

追踪HTTP流

image-20220311181554808

在下面发现了一串可疑字符

Base16转base64

放到010里看看

image-20220311141958716

复制下来,去转字符

image-20220311142217107

好像不是,再回去找找其他的

image-20220311142700597

image-20220311144556347

又发现了这个

image-20220311144705141

看来flag与Base64编码有关,那么怎么才能得到呢?

可以利用base16转成base64,然后base64又可以转成字符,就这么干

又找出来2个base16字符串

image-20220311181849383

image-20220311181916619

复制到010

image-20220311180917581

image-20220311180956913

但是第一个解出来啥都没有

image-20220311181203805

再解解第二个

image-20220311182138891

看来有戏,但是解了一下没出来什么东西,还提示编码有误

image-20220311182241219

看了看才发现,他这个地方有点问题

image-20220311182124531

正常的==应该在最后,把他逆序一下

wIDIgACIgACIgAyIK0wIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMiCNoQD
jMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjoQDjACIgACIgACIggDM6EDM6AjMgAzMtMDMtEjM
t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0iCNMyIjMyIjMyIjMyI
6AjMgAzMtMDMtEjMwIjO0eZ62ep5K0wKrQWYwVGdv5EItAiM1Aydl5mK6M6jlfpqnrQDt0SLt0SL
t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLK0AIdZavo75mlvlCNMTM6EDM
z0yMw0SMyAjM6Q7lpb7lmrQDrsCZhBXZ09mTg0CIyUDI3VmbqozoPW+lqeuCN0SLt0SLt0SLt0SL
sxWZld1V913e7d2ZhFGbsZmZg0lp9iunbW+Wg0lp9iunbW+Wg0lp9iunbW+WK0wMxoTMwoDMyACM
DN0QDN0QDlWazNXMx0Wbf9lRGRDNDN0ard0Rf9VZl1WbwADIdRampDKilvFIdRampDKilvVKpM2Y
==QIhM0QDN0Q  
#正常情况应该是XXX==这种,所以逆序一下试试,注意是每行逆序才能得到标准的XXX==

然后建一个脚本:

每行逆序

a='wIDIgACIgACIgAyIK0wIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMiCNoQD'
b='jMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjoQDjACIgACIgACIggDM6EDM6AjMgAzMtMDMtEjM'
c='t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0iCNMyIjMyIjMyIjMyI'
d='6AjMgAzMtMDMtEjMwIjO0eZ62ep5K0wKrQWYwVGdv5EItAiM1Aydl5mK6M6jlfpqnrQDt0SLt0SL'
e='t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLK0AIdZavo75mlvlCNMTM6EDM'
f='z0yMw0SMyAjM6Q7lpb7lmrQDrsCZhBXZ09mTg0CIyUDI3VmbqozoPW+lqeuCN0SLt0SLt0SLt0SL'
g='sxWZld1V913e7d2ZhFGbsZmZg0lp9iunbW+Wg0lp9iunbW+Wg0lp9iunbW+WK0wMxoTMwoDMyACM'
h='DN0QDN0QDlWazNXMx0Wbf9lRGRDNDN0ard0Rf9VZl1WbwADIdRampDKilvFIdRampDKilvVKpM2Y'
i='==QIhM0QDN0Q'
print(a[::-1])
print(b[::-1])
print(c[::-1])
print(d[::-1])
print(e[::-1])
print(f[::-1])
print(g[::-1])
print(h[::-1])
print(i[::-1])
#耐心一点,正确分行

image-20220311171940189

image-20220311171958539

逆序后再转一下看看

base64转字符

image-20220311182436523

哇,终于出来了,去重一下

flag{Welc0me_GkC4F_m1siC!}

(注意,下划线_不要漏了)

或者利用栅栏密码网站,调整一下{}的位置就好了

image-20220311183527829

这道签到题好难啊!!!

3.flag

flag{Welc0me_GkC4F_m1siC!}

18.粽子的来历

1.题目概述

image-20220312095958429

image-20220312100130933

2.解题过程

DBAPP是什么意思呢?

打开文档

image-20220312100623873

既然已经损坏,用010打开看看

A中发现了这个

image-20220312100836298

B

image-20220312101007449

C里发现了DBAPP字符

image-20220312101119915

最后看看D

image-20220312101146048

那C里的字符是最可疑的,尝试修复一下C文件看看,

49436F6D6546726F6D44626170706168

从上面我们可以知道,这几个word文档缺少文件头,加上看看能不能打开

加上 504B0304之后,还是打不开

image-20220312102249018

利用zip文件头和word相同这一特点,把它改成zip看看

打开后还是没有什么东西,用binwalk分离一下

binwalk分离

image-20220312104807688

还是没有,看来前面的思路不太对,再用用其他的修复方式

把C里面IcomefromDBAPP那几个不一样的字符全部改成周围的字符一样看看(删去前面添加的文件头)

哇,终于打开了

image-20220312105558145

可是接下来该干什么呢?没有思路了

忽然这个文档的发现行间距不一样,

image-20220312110126039

image-20220312110139120

把1.5倍的看成1,1.0倍的看成0试试

行间距

image-20220312110309502

得到

100100100001

MD5加密

MD5在线加密 - 站长工具 (chinaz.com)

image-20220312110629368

32位小写

d473ee3def34bd022f8e5233036b3345

3.flag

flag{d473ee3def34bd022f8e5233036b3345}

19.[CFI-CTF 2018]webLogon capture

1.题目概述

image-20220314181818175

image-20220314181944211

2.解题过程

image-20220314182046629

导出HTTP文件,

image-20220314182726930

image-20220314182749502

image-20220314182800852

%20%43%46%49%7b%31%6e%73%33%63%75%72%33%5f%6c%30%67%30%6e%7d%20

base64转字符

方法一:

去掉百分号后:

204346497b31637333637572335f6c3067306e7d20

base16转字符;利用网站或直接搞到010里

方法二:

利用python

print(‘%20%43%46%49%7b%31%6e%73%33%63%75%72%33%5f%6c%30%67%30%6e%7d%20’.replace(‘%’,‘’)) #去掉%

import binascii

binascii.a2b_hex(‘204346497b316e7333637572335f6c3067306e7d20’) #转字符

image-20220314184513330

3.flag

flag{1cs3cur3_l0g0n}

20.hashcat

1.题目概述

image-20220314184923401

image-20220314185107610

2.解题过程

文件叫这是什么类型的文件,并且题目是hashcat,应该和哈希有关

法一:爆破

010打开

image-20220316153856193

文件头没有搜到,看看文件尾

image-20220316153929396

也没搜到文件尾的信息,用虚拟机的binwalk看看

image-20220316155250597

XML文件,也就是数据文件,可以用Excel打开

添加后缀.xml,打开,有密码

image-20220316155528711

爆破

使用Accent OFFICE Password Recovery破解密码,

下载地址https://url82.ctfile.com/f/26363582-542017838-b06171(访问密码:6878)

没有给密码提示,那就暴力破解,纯数字,2-6位差不多

image-20220316195406790

密码9919,解压打开

这个有点可疑

image-20220316195556829

标黑看看

image-20220316195657228

得到flag

还给了一个MD5的小结,有良心

image-20220316195810422

法二:office2join+hash(待定)

修改后缀后(比如pptx),利用office2join.py命令得到哈希值

需要先安装这个脚本

参考这个文章安装

How to Crack Password-Protected Microsoft Office Files, Including Word Docs & Excel Spreadsheets « Null Byte :: WonderHowTo

然后输入命令:

python office2john.py 20-1.pptx > hash.txt  #把由这个文档得到的哈希值存储到hash.txt中

image-20220316202143467

image-20220316202203034

3.flag

flag{okYOUWIN}

21.[SCTF2019]电单车

1.题目概述

image-20220316181208607

题目的原本描述是这样的:

截获了一台电动车的钥匙发射出的锁车信号,3分钟之内,我要获得它地址位的全部信息。flag内容二进制表示即可。

2.解题过程

audicity打开,观察频谱图

image-20220316193102070

然后查一查这是什么协议

image-20220317185026969

观察频谱图,一细一粗,把细的换成0,粗的换成1,(只看前面这一段就好,别漏了最初的0)

image-20220317191500544

0/011101001010101001100(这个0有点奇怪,多出来一位)/0100

地址位:01110100101010100110

知识点:

参考这篇文章

https://www.freebuf.com/articles/wireless/191534.html

PT2242信号:前面4bit表示同步码,中间的20bit表示地址码,后面的4bit表示功能码,最后一位是停止码。

3.flag

flag{01110100101010100110}

22.[watevrCTF 2019]Evil Cuteness

1.题目概述

image-20220317192824683

image-20220317192845215

2.解题过程

010打开

image-20220317193010415

隐藏着压缩包,binwalk分离

image-20220317193210729

竟然如此简单,菜鸟狂喜

3.flag

flag{7h475_4c7u4lly_r34lly_cu73_7h0u6h}

23.[MRCTF2020]pyFlag(zip数据移接)

1.题目概述

image-20220317193335785

image-20220317193419595

2.解题过程

010看看这几张图片

furan.jpg文件尾后面有一串未知字符

image-20220317193531689

miku后面也有

setsuna

image-20220317194215138

而且分别是part2,part3,part1,把它们用binwalk-e命令分离一下

image-20220317195758973

得到一个加密的压缩包,

image-20220317195817814

爆破行不通

再分离其他两个jpg看看

image-20220317200339178

3.flag

24.[QCTF2018]X-man-A face

1.题目概述

image-20220318200826985

image-20220318200804840

2.解题过程

随便找个二维码把左上和左下的小方块给裁下来拼到这个图片上,利用画图工具就可以

image-20220318201015132

QR-reasarch扫不出来,就用微信扫一扫

得到:

KFBVIRT3KBZGK5DUPFPVG2LTORSXEX2XNBXV6QTVPFZV6TLFL5GG6YTTORSXE7I=

很长时间没有接触base32编码了,一下子没反应过来

解码

Base32编码解码,Base32在线转换工具 - 千千秀字 (qqxiuzi.cn)

image-20220318201141865

3.flag

flag{Pretty_Sister_Who_Buys_Me_Lobster}

25.[UTCTF2020]File Carving

1.题目概述

image-20220318201250394

image-20220318201321917

2.解题过程

png格式,010打开

修改高度无果,搜索PK发现zip数据

image-20220318201530670

binwalk -e分离

image-20220318202210534

打开这里面的zip

image-20220318202232687

法一:010

未知格式,010打开,搜索flag(根据hidden提示)

image-20220318202315054

这里面有一些奇怪的字符,删掉

得到

flag{2fbe9adc2ad89c71da48cabe90a121c0}

法二:Kali运行elf文件

binwalk分析这个hidden_binary文件

image-20220318202647439

elf文件,百度

image-20220318202756204

kali可以直接运行,挺好

image-20220318203746687

这个方法更快

3.flag

flag{2fbe9adc2ad89c71da48cabe90a121c0}

26.[INSHack2017]sanity

1.题目概述

image-20220318204333340

image-20220318204457754

2.解题过程

image-20220318204621517

3.flag

flag{Youre_sane_Good_for_you}

27.[GUET-CTF2019]soul sipse

1.题目概述

image-20220318204915862

image-20220318205017052

2.解题过程

audacity打开音频

image-20220318205856204

突然就没有思路了。。。

binwalk分离

image-20220319101602390

也没有什么东西,那应该是隐写了

steghide extract -sf out.wav
无密码

image-20220319103750485

Firefox浏览器能打开,edge竟然打不开

image-20220319104001535

打开

image-20220319104158123

010打开

image-20220319104540391

文件头损坏,改成47

image-20220319104626156

\u0034\u0030\u0037\u0030\u000d\u000a\u0031\u0032\u0033\u0034\u000d\u000a

unicode编码,转换一下

Unicode编码转换 - 站长工具 (chinaz.com)

image-20220319105010247

数学题1,加起来等于5304,哦,这就是flag

3.flag

flag{5304}

28.voip

1.题目概述

image-20220319105245633

image-20220319105305004

2.解题过程

viop百度

image-20220320115103470

哇,那应该和电话有关

image-20220320115136033

打开之后,有一段音频

image-20220320115206395

播放

image-20220320115407892

声音很诡异,我愣是没听出来,提交都是错的

正确的flag:(俺也不知道咋听出来的,离谱)

flag{9001IVR}

3.flag

flag{9001IVR}

29.寂静之城

1.题目概述

image-20220320120641276

image-20220320120711800

2.解题过程

删掉链接后面的无用字,再打开链接,如果自动的跳转到其他页面,就在加载的时候点一下这个

image-20220320122357709

这个题很坑,我看了半天文章没找到什么信息,结果flag竟然藏在点赞的人里

image-20220320122452100

打开这个出题人的主页,发现了

image-20220320122518349

base64

evL5S5J+a5HzxAKR8xXiUXPUd1LDKPYYNHSjN6ZF8i0=

接下来就不会做了,百度别人的wp都没有说怎么做

flag{31010419920831481363542021127}

哈哈哈,点开评论太有意思了

image-20220320122624326

image-20220320122645319

3.flag

flag{31010419920831481363542021127}

30.Business Planning Group

1.题目概述

image-20220320124131933

image-20220320124207371

2.解题过程

010打开,显示结尾有错误

image-20220320124859810

题目缩写BPG,直接搜索BPG

image-20220320125127511

百度

image-20220320125210866

从来没见过

把这些数据存下来

下载个软件打开这个bpg

BPG Image format (bellard.org)

image-20220320125536135

下载后把bpg图片拖到bpgview.exe中(直接打开bpgview.exe会出错)

image-20220320130109368

image-20220320130054487

YnNpZGVzX2RlbGhpe0JQR19pNV9iM3R0M3JfN2g0bl9KUEd9Cg==

base64,转换一下

image-20220320130152050

得到flag

flag{BPG_i5_b3tt3r_7h4n_JPG}

3.flag

flag{BPG_i5_b3tt3r_7h4n_JPG}

31.[湖南省赛2019]Findme

1.题目概述

image-20220320130314895

image-20220320130350499

2.解题过程

010打开这几张图片

先简单分析一下这几张图片

简单分析

1.png

从外观上,1.png明显高度太低,需要更改

image-20220320181649786

2.png

2.png末尾有疑似其他文件的名称

image-20220320181740754

3.png

3.png暂时没发现什么东西

4.png

4.png末尾有一串不明base64

image-20220320181947153

cExlX1BsY

5.png

5.png末尾也有一串base64字符和提示性话语

image-20220320182059341

Yzcllfc0lN

然后再开始深入分析1.png

简单修改高后打开

image-20220320182327228

仍然没有什么信息

那来个专业的脚本看一下它原来的宽高是多少

import zlib
import struct

filename = '1.png'
with open(filename, 'rb') as f:
    all_b = f.read()
    crc32key = int(all_b[29:33].hex(), 16)
    data = bytearray(all_b[12:29])
    n = 4095
    for w in range(n):
        width = bytearray(struct.pack('>i', w))
        for h in range(n):
            height = bytearray(struct.pack('>i', h))
            for x in range(4):
                data[x + 4] = width[x]
                data[x + 8] = height[x]
            crc32result = zlib.crc32(data)
            if crc32result == crc32key:
                print("宽为:", end="")
                print(width)
                print("高为:", end="")
                print(height)

image-20220320191441522

按照这个数据给改一下

image-20220320191557775

再打开

image-20220320191612184

继续分析

IDAT隐写

使用工具pngcheck检查IDAT

下载地址:

pngcheck Home Page (libpng.org)

命令:

pngcheck.exe -v 1.png

image-20220320184841767

显示有错误,010再打开1.png,

image-20220320191731230

很明显,这两和其他人不一样

image-20220320185357889

chunk2和chunk3的CTYPE缺少IDAT字样,给加上(在16进制数据里改)IDAT的十六进制标识为49 44 41 54

image-20220320190613843

改好后再打开

image-20220320191833493

LSB隐写

按照它原来的模样猜测有二维码

stegsolve打开

image-20220320192139562

QR-reasearch扫描

image-20220320192303813

哦耶,又找到一个线索

ZmxhZ3s0X3

再看2.png,按照前面的分析,2.png里应该藏有其他文件的数据,但是并没有找到zip之类压缩包的数据

会不会藏有其他格式的压缩包呢?搜一下看看

在搜索7Z时,有了一点线索

image-20220320192603298

哈哈,笑死我了,出题人为了咱们能找到7Z竟然加了2000多个7Z,也不忘记加上个nothing here,有心了

image-20220320193059591

7Z替换成PK

这些7Z后面要么是03 04 要么就是01 02,这不妥妥的zip数据的模样吗?把7Z全部改成PK

image-20220320193315770

然后binwalk分离

image-20220320193457176

打开

image-20220320193550003

得到了999的txt究竟谁是最特殊的那个呢?

按照大小排序,618.txt最大,打开

image-20220320193746504

哦耶,第二个线索

1RVcmVfc

或者直接搜索find,这样更简单,但是不好才到关键词是find

image-20220320193937504

010看3.png,会发现,除了chunk7的CRC是正常的长度,其他的都不正常,太短了

image-20220320194120031

把这6个crc保存下来,是

33 52 6C 5A 33 30 3D

然后放010里

image-20220320194405694

哦耶,线索3

3RlZ30=

把5条线索集中到一起

1-5分别是

ZmxhZ3s0X3

1RVcmVfc

3RlZ30=

cExlX1BsY

Yzcllfc0lN

然后我就按照1-5的顺序直接解,结果不行???

排序,3肯定在最后,

1的解码

image-20220320195145096

2解不出来

4

image-20220320195304293

5也解不出来,

1开头,3结尾,4中间,那只有2种可能

12453或15423,试了一下15423的顺序正确

ZmxhZ3s0X3Yzcllfc0lNcExlX1BsY1RVcmVfc3RlZ30=

image-20220320195118926

终于做出来了!!!

3.flag

flag{4_v3rY_sIMpLe_PlcTUre_steg}

32.[ACTF新生赛2020]剑龙

1.题目概述

image-20220321103052085

image-20220321103126990

2.解题过程

直接解压www.zip,出了一个o_o文件,O_O是pyc文件,题目名称叫剑龙

image-20220321105818386

pyc文件

借一段话,转自

一文让你完全弄懂Stegosaurus - Angel_Kitty - 博客园 (cnblogs.com)

简单来说, pyc 文件就是 Python 的字节码文件,是个二进制文件。我们都知道 Python 是一种全平台的解释性语言,全平台其实就是 Python 文件在经过解释器解释之后(或者称为编译)生成的 pyc 文件可以在多个平台下运行,这样同样也可以隐藏源代码。其实, Python 是完全面向对象的语言, Python 文件在经过解释器解释后生成字节码对象 PyCodeObject , pyc 文件可以理解为是 PyCodeObject 对象的持久化保存方式。而 pyc 文件只有在文件被当成模块导入时才会生成。也就是说, Python 解释器认为,只有 import 进行的模块才需要被重用。 生成 pyc 文件的好处显而易见,当我们多次运行程序时,不需要重新对该模块进行重新的解释。主文件一般只需要加载一次,不会被其他模块导入,所以一般主文件不会生成 pyc 文件。

pyc文件破解需要密码,先放在这里,去寻找密码

www.zip解压后是一个hint.zip,010查看发现藏着其他压缩包,

biwalk分离

image-20220321103230442

image-20220321103252294

打开图片

image-20220321103415789

打开pwd.txt

image-20220321103441965

AAencode编码

CTF在线工具-在线AAencode编码|AA编码|AAencode解码|AAencode编码原理|AAencode编码算法 (hiencode.com)

image-20220321103703053

welcom3!

再看看图片,

不是LSB隐写,有密码,可能是steghide隐写

steghide隐写

隐写工具Steghide - 简书 (jianshu.com)

Steghide是一个可以将文件隐藏到图片或音频中的工具

下载地址:

Find out more about steghide | SourceForge.net

命令

./steghide.exe extract -sf hh.jpg

image-20220321135753404

想要flag吗?解出我的密文吧~
U2FsdGVkX1/7KeHVl5984OsGUVSanPfPednHpK9lKvp0kdrxO4Tj/Q==

再找密码

查看属性

image-20220321105115612

@#$%^&%%$)

解密网址

在线DES加密 | DES解密- 在线工具 (sojson.com)

image-20220321140343044

stegosaurus加密

回到前面那个O_O.pyc的文件,使用反编译工具stegosaurus

下载地址

AngelKitty/stegosaurus: A steganography tool for embedding payloads within Python bytecode. (github.com)

image-20220330182921314

 python stegosaurus.py -x O_O.pyc

image-20220330182841182

python版本为3.7.9

3.flag

flag{3teg0Sauru3_!1}

33[GKCTF 2021]Excel骚操作

1.题目概述

image-20220330124355445

image-20220330124336232

2.解题过程

010打开

image-20220330124328275

zip开头,kali binwalk 分离

image-20220330124837238

image-20220330152922901

都是一些xml文件,打开看看没啥东西,再回去看看excel表格

excel据说有个好玩的点:

如果单元格类型为“;;;”时,excel会隐藏单元格中的数字

image-20220330153544617

随便打开几个单元格,会发现有的值为1,却没显示,有的值为空,联想以前做过的一道题,猜想可能是1与0转换成图形

MRCTF[2020]Hello_misc

image-20220330153814483

Ctrl+F找到所有值为1的单元格,然后替换成黑色的单元格(根据1的值地域分布不连续推测不会直接是flag字样,而可能是二维码)

image-20220330154115777

替换完成

image-20220330154138521

修改一下单元格的宽,使之近似为正方形

image-20220330154325107

这样子应该差不多

image-20220330154436333

image-20220330155755409

这个二维码看起来有点奇怪,微信扫不出来,网上一查这叫汉信码, 打开中国编码网下载对应app,

软件下载 (ancc.org.cn)

image-20220330154706523

也可以直接扫描这个二维码下载

image-20220330155336888

扫码得到flag,flag{9ee0cb62-f443-4a72-e9a3-43c0b910757e}

image-20220330160005291

3.flag

flag{9ee0cb62-f443-4a72-e9a3-43c0b910757e}

Page 5

1.寂静之城(4-29)

2.[UTCTF2020]spectogram

1.题目概述

image-20220330183442609

image-20220330183542009

2.解题过程

听了一下没有什么东西,那就用audacity打开看看

image-20220330183712548

image-20220330184351499

打开是这个东西,这是什么意思?

看看频谱

image-20220330190335850

似乎有什么信息,但是看不清

silenteye打开没有加密信息

百度一下题目名称

image-20220330184711391

看来又是一种新的东西

spectogram分析博客

(9条消息) 211130-Python谱图(Spectogram)分析Demo_GuokLiu的博客-CSDN博客_demo谱分析

spectogram下载

下载声波可视化器 (sonicvisualiser.org)

add layer spectogram

下载后打开文件,在layer里添加spectogram,看到隐藏信息

image-20220330191022086

image-20220330192716429

flag{sp3trogr4mophon3}

欸,这个不对哦,仔细看这个类似o的比m高,所以应该是数字0,又是个坑

flag{sp3tr0gr4m0ph0n3}

3.flag

flag{sp3tr0gr4m0ph0n3}

3.[UTCTF2020]sstv

1.题目概述

image-20220330193050304

image-20220330193151354

2.解题过程

又是一道wav隐写题目

audacity打开看波形,竟然是一道平的

image-20220330193241523

看看频谱

image-20220330193329234

百度题目名称SSTV

image-20220330193431084

好眼熟,好像在哪里见到过(想了一下,原来是高中时候的阅读理解)

搜了一下,QSSTV这个玩意可以解码

image-20220330194042369

Kali安装QSSTV

apt-get install qsstv

下载好后,在终端输入qsstv,系统自动打开qsstv,然后点击Options->configuration->sound->sound input->from file

image-20220330194629148

点击OK,然后点击这个按钮,选择要解码的文件,然后就开始解码啦

解码

image-20220330194823559

image-20220330194833978

image-20220330194939426

3.flag

flag{6bdfeac1e2baa12d6ac5384cdfd166b0}

4.[*CTF2019]otaku

1.题目概述

image-20220330195407371

BUU上少了题目描述

One day,you and your otaku friend went to the comic expo together and he had a car accident right beside you.Before he died,he gave you a USB hard disk which contained this zip.Please find out his last wish.
提示:The txt is GBK encoding.

2.解题过程

010打开

image-20220330195700861

藏着其他的zip,kali分离

binwalk分离文件

image-20220330212316341

image-20220330195803472

寻找docx隐藏内容

爆破无果,去前面那个docx文档里寻找线索

image-20220330212354878

很明显,这个文档隐藏了一些内容

在搜索框里搜索显示/隐藏编辑标记,显示出隐藏的内容

image-20220330212507594

对比发现,隐藏的内容为:

image-20220330212548874

Hello everyone, I am Gilbert. Everyone thought that I was killed, but actually I survived. Now that I have no cash with me and I’m trapped in another country. I can't contact Violet now. She must be desperate to see me and I don't want her to cry for me. I need to pay 300 for the train, and 88 for the meal. Cash or battlenet point are both accepted. I don't play the Hearthstone, and I don't even know what is Rastakhan's Rumble." 

去掉不可见符号

利用记事本的替换功能

Hello everyone, I am Gilbert. Everyone thought that I was killed, but actually I survived. Now that I have no cash with me and I’m trapped in another country. I can't contact Violet now. She must be desperate to see me and I don't want her to cry for me. I need to pay 300 for the train, and 88 for the meal. Cash or battlenet point are both accepted. I don't play the Hearthstone, and I don't even know what is Rastakhan's Rumble." 

然后联想刚刚那个加密压缩包里的last words.txt,猜想是明文攻击,把这段文字改成GBK编码(BUU上漏掉了这一个关键性的提示)

转换为GBK

# -*- coding:GBK -*-
f = open('flag1.txt','w')
s = "Hello everyone, I am Gilbert. Everyone thought that I was killed, but actually I survived. Now that I have no cash with me and I’m trapped in another country. I can't contact Violet now. She must be desperate to see me and I don't want her to cry for me. I need to pay 300 for the train, and 88 for the meal. Cash or battlenet point are both accepted. I don't play the Hearthstone, and I don't even know what is Rastakhan's Rumble."
f.write(s)
f.close()

打开转换后的GBK文件

image-20220331205216733

这里有个疑问,为什么文件内容没有变化?

然后把flag1.txt压缩为zip,然后观察CRC校验码和前面那个flag.zip的是否一样(这个真没想到)

明文攻击

image-20220331202200446

确实是一样的,那就开始明文攻击(打开的文件是加密的文件,明文文件是刚刚flag.txt压缩后的zip)

image-20220331203839573

解压

image-20220331204002043

txt文件和前面那个txt文件内容一样,010打开图片没发现什么东西

看看是不是LSB隐写

png数据隐写

法一:stegsolve-data extract

image-20220331204803472

法二:kali工具zsteg

(查看PNG和BMP文件隐藏信息的工具)

image-20220331204651700

3.flag

flag{vI0l3t_Ev3rg@RdeN}

5.[HDCTF2019]你能发现什么蛛丝马迹吗

1.题目概述

image-20220402104200769

image-20220402104525890

2.解题过程

文件类型是光盘映像文件,百度一下IMG文件

image-20220402105539752

image-20220402105621567

010打开

image-20220402104818649

这是一种新的题型,要用到另一个内存取证工具:

volatility

下载地址:(我下载的版本2.6)

Release Downloads | Volatility Foundation

然后把刚刚那个memory.img文件放到解压之后的文件夹里

image-20220402185354312

查看文件的Profile

我把程序名字稍微改了一下,只要输入的和存在的同名就行

打开终端,输入

 ./volatility.exe -f memory.img imageinfo

image-20220402185622357

可以看到,profile是Win2003SP1x86

查看进程

./volatility -f memory.img --profile=Win2003SP1x86 pslist

image-20220402185820997

image-20220402190238635

看完镜像直接查看这个镜像上有那些进程正在运行 pslist应该比较好理解就是进程的列表的意思。

可以看到有许多exe文件,并且最后一个用过的程序名字还是DumpIt这个敏感的名字,

查看cmd命令使用记录

./volatility -f memory.img --profile=Win2003SP1x86 cmdscan

image-20220403091123450

发现flag字符,继续

将DumpIt.exe这个程序dump下来

./volatility -f memory.img --profile=Win2003SP1x86 memdump -p 1992 --dump-dir=./

image-20220403091414101

产生一个1992.dmp文件,010打开

image-20220403091518438

没发现什么东西,

foremost分离

image-20220403091625565

打开有好多东西

image-20220403093031044

(binwalk会出来一大串奇奇怪怪的东西)
image-20220403091832438

打开分离出的文件

png

image-20220403092205928

第一个扫码:

image-20220403092224671

jfXvUoypb8p3zvmPks8kJ5Kt0vmEw0xUZyRGOicraY4=

第二个扫码:

image-20220403092300602

内容是一样的

打开有字符的图片

image-20220403092332482

iv是偏移量,有key有字符,有偏移量,是AES加密

jfXvUoypb8p3zvmPks8kJ5Kt0vmEw0xUZyRGOicraY4=

key:Th1s_1s_K3y00000

iv:1234567890123456

在线AES加密解密、AES在线加密解密、AES encryption and decryption–查错网 (chacuo.net)

image-20220403092925456

flag{F0uNd_s0m3th1ng_1n_M3mory}

3.flag

flag{F0uNd_s0m3th1ng_1n_M3mory}

6.真的很杂

1.题目概述

image-20220403112820178

image-20220403113705498

2.解题过程

只有一张图片,010打开

image-20220403173626956

结尾发现zip,binwalk分离(foremost分离出一堆没用的照片)

image-20220403190045821

image-20220403190506478

安卓逆向介绍

Android逆向 - 简书 (jianshu.com)

准备安卓逆向工具

1.apktool——可以反编译软件的布局文件、图片等资源,方便大家学习一些很好的布局;
2.dex2jar——将apk反编译成java源码(classes.dex转化成jar文件);
3.jd-gui——查看APK中classes.dex转化成出的jar文件,即源码文件。

apktool(选最新版)

iBotPeaches / Apktool / Downloads — Bitbucket
然后把这个网址里的东西复制粘贴保存为apktool.bat,和上面下载的apktool.jar放在同一个目录下

https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat

image-20220403195227657

安装工具dex2jar2.0

Download dex2jar from SourceForge.net

image-20220403195128218

下载jd-gui(我下载的win版)

程序:

Java Decompiler (java-decompiler.github.io)

jar文件

java-decompiler/jd-gui: A standalone Java Decompiler GUI (github.com)

image-20220403195244678

开干

把class.dex文件放到dex2jar目录下,打开终端,输入

./d2j-dex2jar.bat classes.dex

image-20220403194602345

然后会生成一个jar文件

image-20220403194954768

或者直接把class.dex文件拖到d2j-dex2jar.bat上面,也能生成这个文件

然后把这个jar文件用jd-gui.exe打开

image-20220403195455478

不难看到flag(我近视都能发现,你不会看不到吧?)

flag{25f991b27f" + i + "dc2f7a82a2b34" + j + "86e81c4}

i和j代表题目中要我们爆破的字母和数字

多试几十次之后,得到flag

flag{25f991b27fcdc2f7a82a2b34386e81c4}

3.flag

flag{25f991b27fcdc2f7a82a2b34386e81c4}

7.[INSHack2019]INSAnity

1.题目概述

image-20220404091536500

image-20220404091852358

2.解题过程

这不秒得flag?

3.flag

flag{YouRe_Crazy_and_I_Love_it}

8.greatescape(TLS密钥流量分析)

1.题目概述

image-20220404092040617

image-20220404092100236

2.解题过程

wireshark打开

追踪TCP流,总共有大约90个流,一个个的看一看,在18发现了ssc key

image-20220404112059654

紧接着,在19发现了私钥

image-20220404112155572

先把私钥存下来

image-20220404112429460

继续看看剩下的几十条流,没有什么线索

分析文件猜测,这应该在向ftp服务器传送私钥,我们得到了私钥,就可以解密TLS报文,

image-20220404141138797

具体步骤:

编辑->首选项->protools->TLS->edit->点击±>添加key.txt

image-20220404140250668

image-20220404140334128

下拉,找到TLS

image-20220404140412656

image-20220404140453113

image-20220404140523018

然后继续追踪TLS流,会默认出来tcp.stream eq80/81 发现flag

image-20220404140042803

image-20220404140739093

3.flag

flag{OkThatWasWay2Easy}

9.[INSHack2019]Sanity

1.题目概述

image-20220404150114265

image-20220404150152319

2.解题过程

签到题

flag{Welcome}

3.flag

flag{Welcome}

10.[INSHack2017]insanity-

1.题目概述

image-20220404150250261

image-20220404150318399

2.解题过程

签到题

flag{Youre_crazy_I_like_it}

3.flag

flag{Youre_crazy_I_like_it}

11.key不在这里

1.题目概述

image-20220404150409542

image-20220404150433620

2.解题过程

扫一扫看看

扫码

image-20220404150507147

内容是一个网址

https://cn.bing.com/search?q=key%E4%B8%8D%E5%9C%A8%E8%BF%99%E9%87%8C&m=10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568&qs=n&form=QBRE&sp=-1&sc=0-38&sk=&cvid=2CE15329C18147CBA4C1CA97C8E1BB8C

这个网址是搜索"key不在这里",用bing随便找个搜索key这个单词的网址对比一下看看有什么不同

image-20220404151429211

正常:

https://cn.bing.com/search?q=key&qs=n&form=QBRE&sp=-1&pq=ke%27y&sc=8-4&sk=&cvid=5C1A3D12026745D28A50BB2341A4B04D

题目:

https://cn.bing.com/search?q=key%E4%B8%8D%E5%9C%A8%E8%BF%99%E9%87%8C&m=10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568&qs=n&form=QBRE&sp=-1&sc=0-38&sk=&cvid=2CE15329C18147CBA4C1CA97C8E1BB8C

找不同

(绿色代表共同点,红色标出的就有点不正常)

image-20220404151627352

10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568

数了一下,一共有92个数字,而且f的ascii码值为102,l的ascii码值为108,接下来把这一串ascii码转成字符

ascii码转成字符

python的chr()函数

ascii转为字符

s = '10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568'
temp = ''

while len(s):
    if int(s[:3]) < 127:
        temp += chr(int(s[:3]))
        s = s[3:]
    else:
        temp += chr(int(s[:2]))
        s = s[2:]
print(temp)

image-20220404153726349

flag%7B5d45fa256372224f48746c6fb8e33b32%7D

%7B和%7D分别是是URL编码中的”{“和“}”

3.flag

flag{5d45fa256372224f48746c6fb8e33b32}

12.[MRCTF2020]小O的考研复试

1.题目概述

image-20220404153956026

image-20220404154033248

2.解题过程

百度一下取模运算(数学不好)

image-20220404154745582

2的19260817次方>0,1e9+1也大于0,所以flag就是2的19260817次方除1e9+7的余数

1e9+7=100000007,代码敲起来

C或C++可能需要好久才能跑出来结果,不如万能的python,几秒就跑出来了

a=2
for i in range(19260816):
    a = a * 10 + 2
    a%=(1e9+7)

print(a)

image-20220404160923569

577302567.0

去除小数点,flag{577302567}

3.flag

flag{577302567}

13.[INSHack2018]Self Congratulation

1.题目概述

image-20220404161122295

image-20220404161157923

2.解题过程

010打开,数据比较正常

仔细看,这里好像有个二维码的一角

image-20220404161319324

不是LSB隐写,不是CRC隐写,binwalk也没有,就没有什么思路了

百度大佬的wp,又有一个新的脑洞,这个小角是11x6的长方形,把黑色小块当作1,白色小块当作0,如下:

image-20220404163515576

00110001001

10010001100

11001101000

01101010011

01100011011

10011100000

然后把它们连起来

001100010011001000110011001101000011010100110110001101110011100000

然后二进制转字符

网站

汉字二进制转换器,字符与2-36进制相互转换 - 千千秀字 (qqxiuzi.cn)

image-20220404163716239

python脚本

s = '001100010011001000110011001101000011010100110110001101110011100000'
def bin2asc(string):
    temp = ''
    for i in range(int(len(string) / 8)):
        temp += chr(int(string[i * 8: i * 8 + 8], 2))
    print(temp)
    return
bin2asc(s)

image-20220404163757671

3.flag

flag{12345678}

14.[GWCTF2019]huyao(待定)

1.题目概述

image-20220404163845343

image-20220404163927766

2.解题过程

两张一摸一样的图片。猜测是盲水印,这是以前做过的一道盲水印的题

image-20220404164035451

但是这个方法不适用于这次的盲水印,原来这是频域盲水印,那就换一个方法吧

借鉴一下大佬的脚本

# coding=utf-8
import cv2
import numpy as np
import random
import os
from argparse import ArgumentParser
ALPHA = 5
def build_parser():
    parser = ArgumentParser()
    parser.add_argument('--original', dest='ori', required=True)
    parser.add_argument('--image', dest='img', required=True)
    parser.add_argument('--result', dest='res', required=True)
    parser.add_argument('--alpha', dest='alpha', default=ALPHA)
    return parser
def main():
    parser = build_parser()
    options = parser.parse_args()
    ori = options.ori
    img = options.img
    res = options.res
    alpha = options.alpha
    if not os.path.isfile(ori):
        parser.error("original image %s does not exist." % ori)
    if not os.path.isfile(img):
        parser.error("image %s does not exist." % img)
    decode(ori, img, res, alpha)
def decode(ori_path, img_path, res_path, alpha):
    ori = cv2.imread(ori_path)
    img = cv2.imread(img_path)
    ori_f = np.fft.fft2(ori)
    img_f = np.fft.fft2(img)
    height, width = ori.shape[0], ori.shape[1]
    watermark = (ori_f - img_f) / alpha
    watermark = np.real(watermark)
    res = np.zeros(watermark.shape)
    random.seed(height + width)
    x = range(height / 2)
    y = range(width)
    random.shuffle(x)
    random.shuffle(y)
    for i in range(height / 2):
        for j in range(width):
            res[x[i]][y[j]] = watermark[i][j]
    cv2.imwrite(res_path, res, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
if __name__ == '__main__':
    main()

把这个文件存为blind watermask.py,

pip install opencv-python==4.2.0.32 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

在当前目录下打开终端,输入命令:

python2 blindwatermark.py --original --huyao.png --image stillhuyao.png --result output.png

python2 blindwatermark.py --original huyao.png --image stillhuyao.png --result res.png

python2 blindwatermark.py --original huyao.png --image stillhuyao.png --result out.png

python encode.py --image huyao.png --watermark stillhuyao.png --result out.png

pip install --target=/home/xxxx/anaconda3/envs/huayan/lib/python3.6/site-packages opencv-python==4.2.0.34 -i https://pypi.doubanio.com/simple

python encode.py --image huyao.png --watermark stillhuyao.png --result put.png

python decode.py --original huyao.png --image stillhuyao.png --result put.png

python2 water2.py --original huyao.png --image stillhuyao.png --result out.png

3.flag

15.[BSidesSF2019]table-tennis

1.题目概述

image-20220404210441024

image-20220405190827943

2.解题过程

仔细观察协议,再ICMP下发现一些base64字符

image-20220406200935337

Q1RG

image-20220406201030731

e0p1c3RB

image-20220406201105216

UzBuZ0Fi

image-20220406201137286

MHV0UDFu

image-20220406201222042

Z1Awbmd9

一共有这些(注意重复)

Q1RG/e0p1c3RB/UzBuZ0Fi/MHV0UDFu/Z1Awbmd9/

Q1RGe0p1c3RBUzBuZ0FiMHV0UDFuZ1Awbmd9

找个网站解base64

image-20220406201917168

3.flag

flag{JustAS0ngAb0utP1ngP0ng}

16.[GKCTF 2021]你知道apng吗?

1.题目概述

image-20220406202140548

2.解题过程

我还真不知道APNG是啥,百度

image-20220406202211386

chrome安装apng插件后可以打开

image-20220406203107351

是一个短的动画,并且隐藏着一个二维码,chrome没法编辑,那就用另一个新工具吧

apng图片分割器-APNG图片分解器(APNG Disassembler)下载v2.7 绿色版-绿色资源网 (downcc.com)

打开文件,会自动分解,真不错

image-20220406212721909

得到了4张二维码

1

image-20220406212702171

2

image-20220406212749191

3

image-20220406212803396

4

image-20220406212818872

第一张有点问题,需要借助强大的PS扭曲一下(使劲拉,一次不行再弄一次)

image-20220406210736005

搞得差不多就可以扫出来了

image-20220406210829643

第2张扫码

image-20220406213043971

-9b9d

第3张扫码:

image-20220406210635126

-ad20

最后一个

image-20220406213150341

拼起来就是

flag{a3c7e4e5-9b9d-ad20-0327-288a235370ea}

这里有一个地方需要注意,如果直接用kinovea打开或potplayer逐帧查看,非常难发现第2张二维码(别问我怎么知道的,不信你可以试试看)

3.flag

flag{a3c7e4e5-9b9d-ad20-0327-288a235370ea}

17.[RCTF2019]disk

1.题目概述

image-20220407172055728

image-20220407172623833

2.解题过程

010打开

搜索CTF(或者RCTF),得到第一部分flag

image-20220407183106225

ctf{unseCure_quick_form4t_vo1ume

然后7Z打开,很神奇的得到了一个fat文件,这我属实是没想到

image-20220407183329305

image-20220407183644964

FAT文件就可使用VeraCrypt进行挂载,VeraCrypt下载地址

Download VeraCrypt from SourceForge.net

VeraCrypt打开fat文件

image-20220407184217545

挂载

因为密码没有什么线索,所以考虑最简单的rctf或者题目名称,密码是rctf,然后出现这个:

image-20220407184335454

然后打开挂载的E盘

(原先电脑里并没有,是新建的)

image-20220407184542370

打开password.txt

image-20220407184610577

图片名暗示先忽略图片线索,并且password中出现了另一个密码,这就有意思了

再次挂载

这是一个容易忽视的点。那就是在挂载的时候,不同的密码可以进入不同的文件系统

然后又创建了一个磁盘,奇怪的是无法打开,必须格式化(坑),010也打开驱动器也打不开

image-20220407201240417

搜了一下,原来这代表磁盘被加密了,牛

winhex可以打开,具体步骤:

image-20220407201154450

image-20220407201217784

可能会报错,不用在意,它还是可以打开

随便一拉就看到了flag的另一半(狗头)

image-20220407201452351

_and_corrupted_1nner_v0lume}

注意

这里有一个弯路,就是直接打开磁盘的时候会提示必须格式化才能继续使用嘛,这个时候千万不要格式化,一旦格式化了这个磁盘名字就无法继续使用了,必须换一个,我就是格式化之后有建了一次,结果打开就是这个样子:

image-20220407185534521

3.flag

flag{unseCure_quick_form4t_vo1ume_and_corrupted_1nner_v0lume}

18.[ACTF新生赛2020]frequency

1.题目概述

image-20220407202238657

image-20220407202323894

2.解题过程

根据题目名称frequency与文件内容猜测应该是字频方向

如果打开文档是空白的,就搜索

image-20220407203559743

显示隐藏内容

a2draGxmY290bnRpdWZwZ2hodGN3dWprY2ttb3ducGNrbXdseWd0bHBtZmtneWFhaWh1Y2RsYXRveXVjb2lnZ3JwbGt2a2Ftcmt0cXp4ZW1taXdrbGh1YWVrY2VvbHBvY2ZtdGFobWdmbWF2YWpuYmNwbWx0anRwdWZqY2FwY3RvanBqYmZmYmpid2h1YWxnZ3lqbmFtY2JmeWFjamJheGtpeGxtbXFpa3NtcHRxeW9qZXJ0ZmVrdGR4ZHh4YnRyeGNhbmd5bXNpbWh2dXdrdGV4c2dscnRwZ2FrdGJtZnVjZ3ZubXRqdWZvZWt5bXRsaW14ZGlqanB4eWl0YWJwbWt1Y2NubGtwb2V0Z2NkY3Bvc2tpenZ5eHJ0enhyYXh0bm9paHFjeGZvYWFhbHBhanlja2VrYnljZnZqb21sbGthamd5bWdmZGNycGVxa2xmc2NtZWppY3BqaWtjcHBhY3h5ZXZma3ljcHBia2R6Y2ZsbGlrcW5pdGNrYmhqb3JuZGhzb21mdHlwYWhwcW94cnlpbWhmbGNoY21rb3JldG1yb3RrYXJjanRobWZ0aWxpam55a3V0aWhienR0dW1zbmdmdGxtcmJmZmx0ZndjbmptZmF0bGZiemxva3RscHBsbWZpY29rcHBucGFjbWZ1Z21wdW5kdnRvbXdldmNqc2dhamdmZXF1dXBhaWV0eW5mamJicGpzbHZ5bmFmdG1scHBka3R0b2Z1emppanhpdGJmaXJtb3ZwemVraXJic2Zqc2d6bHVrb2x5dm9obXZnY3BrdGhzeGZ6bW1ibm1sZHp5dWljZHZrbXpiYXlidG9yY2ZvdHRkYW1jY25iYXBucmd4bGN5cGh5Zm5jZXhidmRubG9rZ295aWxwcmxvbnNodGNranR4bmFiamhsbWJwZGNtaGtqbmxnbXRnam5qYWtyaXpsbHBtbWFscHhhbXVuaW51cGtwZGlhcHNzbXZrZGp2Z2l5b2R1bXBuYXBsamtqYmNmaHRoc2tpb2twZ3R0eWhubmRzeGtxanp2dmRvc2VwcG9pZ3l0bW5uYXZjdG9wZHlpeHZiZG9zb2JtY3ViaXVhanhoeWZrdnJremdjdXlpbHB2YXdheW5xYWFwbGJrd2lpeHJjdGN0bGt4ZmpscGVhbW1qbmF1amNvdWlmbXZpa2ZpbXJvYXF0Y3RjZm1hdWJnYWdva2FyZnFmaGVtb3NydHlmb3B1a3VkY2FhaW1oZGZvZ25oa3JjZWxwY2F0Y3RweWpsYXZva2xnY2xhdGx0bXR6eWdwZWhma3poY3R6bmdtb2ZjaXpsdm54dG5sdWFqbHRvdmNqYWp1YnphdHBlaGhma25uZ2dwbHlsaXZmZWFpZHJteWp0YWNhbXhjbmtmeXN0d2ZuZmx5bmJta2NrYXJ4YWlzcGpsa3ZjdHZrbHh1bmNmcGJ4dmlyaXFleXBtdXZ1bHZsamNrY3lwcHRwdmV0b3hobWlwYmlsbmplb3drd3VjdG9rbmFmcHdvYXBmdGNsemhwaHhjY2F0dGh1bXZ3aHpvbWFmd3Fxbmxzb3lhYnV0bHpwaWF0Zm1tYWprcmR2bGN6d2pwc3Nwb2FiaWZpcGhrb2NocHRrYXRrYWZlb255YmZpdmVjbGR6b2ZhdGV0Z2FsaGFmYW1vYXlvc291bm5hZmlhdGNqdGl3b29sYWNya2N1YWRwdXRreWxweXBiZ2ZlcHdwc25jd2tjd2xsYXJ5anNjYW5id3BkcHpicHR1dG5sbm9wd3BpdGJsb3RsbHppZmtsYWF1cmpwaWFqZnB0a2ZteHBic3VjdmpzZ21jYWxhbnRyc2NrYmt1eWZnYWFrZmFjbmxkdXZxZXR5amdqbW5hZWFjbmdheGNuYW1qbWlna2tpdW1sbmR3Y2ttdWFuYW52cnJiZnp4enl1dWVob25lbWxjanp1dm9hanVmZGdqamp

jZ21ucHRmdXVjdWJjdGpoYW1sb2xmaG9pZnZia2themNwb3pjeXVjYnJnb2picG5haGNneXV0dGR2bXR0dndqbWhic2ptYmJhdmNkbHlob3Fqb21wY3B2aHRrb2FpcnZ0bWtmZnlhdGttcHR1dW9vb2xncG5udWVsaGZodnZpc3Vrd3lubWlhY25sbHVtaHRqZWt1YXV1cGxyeGtpZXB1anhsaWNma2NiY2htbmdsZ3BsaWhteWNybnNvbWF3dWZ1b29tdXVuaGRvb2FydWRhbW9hbW9ocW9vY2Z1cGp1aWFieHh1dnl2bm9zb3Vvb3Zha2xjZmt0eXJmYWdmYXl2cHVmdnBiZ3RhZmVraXBpY292dGZ0bnV4c2phdmpkcWt2ZnVpa2x0bWRrYmJua3BhZnhycXBmZ2N0dmFzY3VqamN1Y2h1YXpjaXVtdHRkbmF3aWhtbW9qZmJoeHZvbXRmcGJmaHR2aXdsYXVlb2dwcG1qc3BjYWxmaGNhcmtsYmlzcGh0anBhbmhsaXNwbnRza2tjbGpnZ2tjenRmaG5lY25wdGlmZnRyZG10amZla2ZpdGthc2RnbmVscHVoYmZpbXB1Y2JrcGtjbXhsZmtwaWlqdmh0amtzeWx6cm9vZmFjeGNscGpuaGJpcmN5ZGp0Y2xqZG9ibHlyeW1hdGdoaWZvam1qanNla29vbW9mY2FjdGF2ZmN5Zm11Znhoc3Rqd3VwYmpreW9nbnlyeXBseXBxbGF5eW1veHRhbnFkcHVyYnd6cGxsb2traGhtYW5kam5hdGNibGtjb3Rna2x1dHR3YmRhdHFybWF6cHJ2YXd6anhlZmhqdGRraWt1cmxsY2xjam9naG1sd3RhbWRkY2NucXVyb3Jha2N5b2JsYXJ6YWNtbnFjbWV0dHVheWF1eWl2c21ma25uYW5sdGNtaWdmcmdhYmlwdG50aG1tdXRwaWJ5bHJhdGhqY2doY2ZtbG92cGNudHFwZW96bG90ZGtlaW9jZmtjaXZ1eWx6Ympvb3hjc2FjbmdkdXZ4dG50aGphZXBhdX1rbGFocGNtdnppY2twYWFwaG9jZ2lvZ2p0dnB0Z2poZG9udW5scGFvbG5kcWJxZmRtYnBqam94Ym9tbGlreXVpcG54cXh6Y2lmb3JhaGhldXl5dHpoanV0Z2Z3dHVscmpjZnhvaWFneWpmYnBqaWFrZ3l0eGJmbnBsZnBxd3RkaXFuaXR2dmF1amRqbGlmamlvcnltdmZ4bXhnb3JpY3ljZGZob2ZiYnlnZmxhdGlyamRpZGFkcXZpa2pvY2l5ZmR6aHJvZ255eWlia2dubnZobWpsb2xhdndmaWpjZ2dma3B0a3BnY3FmYWZheXNpdHltYWN2a3FweWxoaGJ1Ymh4c2x1emN5dmxvcmlwdGxwZmxjdWljcG5mc2hpeXh2a2tiY2p5dWtvdGFsZmNpcGhjZGd4aWZ0a2xkZ29wanNtdXJ0eWp5cGhia2JmbmJ3YnNvZmlheHRsdWhwbXJmZGFrdWx1cGVhcHZyeXhtYWVwaGF5bmV4emZsbmV2am1pYndvcml0aGh4YmJ5cG1tYWJvYmZuZmNvanR0Y3Jram1naXJ2bWlzdW5mbHVodGVudHJodGVvamtjaGtwZnBhZXNnd2dscWRrdnZudWx1bnF7bG1sdGFscGhvdWZqcGlhbGNmbGZ5ZHZmd3lkb2ZraGFpeWF3bGx3Y2pvYXJxdnpqbGZmZ2xjdGNsYmxwa2JzZmxocnRqZGFvd3ByZGJjdWJmbHlveWJodmh3ZndvZWl0Z254YnpuaWZwbGx4bXN0a251aWhvYmZlZWZra2FreW5uYWNra2NkdWFtZ3N2bnBoY3RmZ3NybnJvZWh2ZW5kYmZpb21xZm14Ym1paWl1bGF2b2dma2dhY2lrYWFtcHBybGpmbXBqY3VhYXNja2l1cWlmY2liamx1dGNtcGF0b2pyanZmeGdsenBvcGpkZ2NoanVqbGtuZnd0cG5qZnBhY3JrcHRmaGNzamdyaXBjcmZjZGFsem5ob25mZGNvaG9zZmhvaGVha250aXRtamZsbmJvcGNsY3hjdWlnb3hja3JiYWxyYWVidGFhcml

查看备注

在备注中又发现了一段Base64字符

image-20220407203650765

0ZWZtemNxaWRvZmd0ZnFnYmFkaWNubWhvdGlvbm9iZnlubGdvenRkYXZ2aW14b2JvdGlra2Z4d2lyb3JwZmNjdXpob3BoZmRjaWVrY2p5b21lamtjZ2Zmam51bmhvcGFkdGZndG1sdA==

再结合文档内容,合并在一起去解码(如果直接统计字频没有什么思路,刚刚试过了)

base64解码

a2draGxmY290bnRpdWZwZ2hodGN3dWprY2ttb3ducGNrbXdseWd0bHBtZmtneWFhaWh1Y2RsYXRveXVjb2lnZ3JwbGt2a2Ftcmt0cXp4ZW1taXdrbGh1YWVrY2VvbHBvY2ZtdGFobWdmbWF2YWpuYmNwbWx0anRwdWZqY2FwY3RvanBqYmZmYmpid2h1YWxnZ3lqbmFtY2JmeWFjamJheGtpeGxtbXFpa3NtcHRxeW9qZXJ0ZmVrdGR4ZHh4YnRyeGNhbmd5bXNpbWh2dXdrdGV4c2dscnRwZ2FrdGJtZnVjZ3ZubXRqdWZvZWt5bXRsaW14ZGlqanB4eWl0YWJwbWt1Y2NubGtwb2V0Z2NkY3Bvc2tpenZ5eHJ0enhyYXh0bm9paHFjeGZvYWFhbHBhanlja2VrYnljZnZqb21sbGthamd5bWdmZGNycGVxa2xmc2NtZWppY3BqaWtjcHBhY3h5ZXZma3ljcHBia2R6Y2ZsbGlrcW5pdGNrYmhqb3JuZGhzb21mdHlwYWhwcW94cnlpbWhmbGNoY21rb3JldG1yb3RrYXJjanRobWZ0aWxpam55a3V0aWhienR0dW1zbmdmdGxtcmJmZmx0ZndjbmptZmF0bGZiemxva3RscHBsbWZpY29rcHBucGFjbWZ1Z21wdW5kdnRvbXdldmNqc2dhamdmZXF1dXBhaWV0eW5mamJicGpzbHZ5bmFmdG1scHBka3R0b2Z1emppanhpdGJmaXJtb3ZwemVraXJic2Zqc2d6bHVrb2x5dm9obXZnY3BrdGhzeGZ6bW1ibm1sZHp5dWljZHZrbXpiYXlidG9yY2ZvdHRkYW1jY25iYXBucmd4bGN5cGh5Zm5jZXhidmRubG9rZ295aWxwcmxvbnNodGNranR4bmFiamhsbWJwZGNtaGtqbmxnbXRnam5qYWtyaXpsbHBtbWFscHhhbXVuaW51cGtwZGlhcHNzbXZrZGp2Z2l5b2R1bXBuYXBsamtqYmNmaHRoc2tpb2twZ3R0eWhubmRzeGtxanp2dmRvc2VwcG9pZ3l0bW5uYXZjdG9wZHlpeHZiZG9zb2JtY3ViaXVhanhoeWZrdnJremdjdXlpbHB2YXdheW5xYWFwbGJrd2lpeHJjdGN0bGt4ZmpscGVhbW1qbmF1amNvdWlmbXZpa2ZpbXJvYXF0Y3RjZm1hdWJnYWdva2FyZnFmaGVtb3NydHlmb3B1a3VkY2FhaW1oZGZvZ25oa3JjZWxwY2F0Y3RweWpsYXZva2xnY2xhdGx0bXR6eWdwZWhma3poY3R6bmdtb2ZjaXpsdm54dG5sdWFqbHRvdmNqYWp1YnphdHBlaGhma25uZ2dwbHlsaXZmZWFpZHJteWp0YWNhbXhjbmtmeXN0d2ZuZmx5bmJta2NrYXJ4YWlzcGpsa3ZjdHZrbHh1bmNmcGJ4dmlyaXFleXBtdXZ1bHZsamNrY3lwcHRwdmV0b3hobWlwYmlsbmplb3drd3VjdG9rbmFmcHdvYXBmdGNsemhwaHhjY2F0dGh1bXZ3aHpvbWFmd3Fxbmxzb3lhYnV0bHpwaWF0Zm1tYWprcmR2bGN6d2pwc3Nwb2FiaWZpcGhrb2NocHRrYXRrYWZlb255YmZpdmVjbGR6b2ZhdGV0Z2FsaGFmYW1vYXlvc291bm5hZmlhdGNqdGl3b29sYWNya2N1YWRwdXRreWxweXBiZ2ZlcHdwc25jd2tjd2xsYXJ5anNjYW5id3BkcHpicHR1dG5sbm9wd3BpdGJsb3RsbHppZmtsYWF1cmpwaWFqZnB0a2ZteHBic3VjdmpzZ21jYWxhbnRyc2NrYmt1eWZnYWFrZmFjbmxkdXZxZXR5amdqbW5hZWFjbmdheGNuYW1qbWlna2tpdW1sbmR3Y2ttdWFuYW52cnJiZnp4enl1dWVob25lbWxjanp1dm9hanVmZGdqampjZ21ucHRmdXVjdWJjdGpoYW1sb2xmaG9pZnZia2themNwb3pjeXVjYnJnb2picG5haGNneXV0dGR2bXR0dndqbWhic2ptYmJhdmNkbHlob3Fqb21wY3B2aHRrb2FpcnZ0bWtmZnlhdGttcHR1dW9vb2xncG5udWVsaGZodnZpc3Vrd3lubWlhY25sbHVtaHRqZWt1YXV1cGxyeGtpZXB1anhsaWNma2NiY2htbmdsZ3BsaWhteWNybnNvbWF3dWZ1b29tdXVuaGRvb2FydWRhbW9hbW9ocW9vY2Z1cGp1aWFieHh1dnl2bm9zb3Vvb3Zha2xjZmt0eXJmYWdmYXl2cHVmdnBiZ3RhZmVraXBpY292dGZ0bnV4c2phdmpkcWt2ZnVpa2x0bWRrYmJua3BhZnhycXBmZ2N0dmFzY3VqamN1Y2h1YXpjaXVtdHRkbmF3aWhtbW9qZmJoeHZvbXRmcGJmaHR2aXdsYXVlb2dwcG1qc3BjYWxmaGNhcmtsYmlzcGh0anBhbmhsaXNwbnRza2tjbGpnZ2tjenRmaG5lY25wdGlmZnRyZG10amZla2ZpdGthc2RnbmVscHVoYmZpbXB1Y2JrcGtjbXhsZmtwaWlqdmh0amtzeWx6cm9vZmFjeGNscGpuaGJpcmN5ZGp0Y2xqZG9ibHlyeW1hdGdoaWZvam1qanNla29vbW9mY2FjdGF2ZmN5Zm11Znhoc3Rqd3VwYmpreW9nbnlyeXBseXBxbGF5eW1veHRhbnFkcHVyYnd6cGxsb2traGhtYW5kam5hdGNibGtjb3Rna2x1dHR3YmRhdHFybWF6cHJ2YXd6anhlZmhqdGRraWt1cmxsY2xjam9naG1sd3RhbWRkY2NucXVyb3Jha2N5b2JsYXJ6YWNtbnFjbWV0dHVheWF1eWl2c21ma25uYW5sdGNtaWdmcmdhYmlwdG50aG1tdXRwaWJ5bHJhdGhqY2doY2ZtbG92cGNudHFwZW96bG90ZGtlaW9jZmtjaXZ1eWx6Ympvb3hjc2FjbmdkdXZ4dG50aGphZXBhdX1rbGFocGNtdnppY2twYWFwaG9jZ2lvZ2p0dnB0Z2poZG9udW5scGFvbG5kcWJxZmRtYnBqam94Ym9tbGlreXVpcG54cXh6Y2lmb3JhaGhldXl5dHpoanV0Z2Z3dHVscmpjZnhvaWFneWpmYnBqaWFrZ3l0eGJmbnBsZnBxd3RkaXFuaXR2dmF1amRqbGlmamlvcnltdmZ4bXhnb3JpY3ljZGZob2ZiYnlnZmxhdGlyamRpZGFkcXZpa2pvY2l5ZmR6aHJvZ255eWlia2dubnZobWpsb2xhdndmaWpjZ2dma3B0a3BnY3FmYWZheXNpdHltYWN2a3FweWxoaGJ1Ymh4c2x1emN5dmxvcmlwdGxwZmxjdWljcG5mc2hpeXh2a2tiY2p5dWtvdGFsZmNpcGhjZGd4aWZ0a2xkZ29wanNtdXJ0eWp5cGhia2JmbmJ3YnNvZmlheHRsdWhwbXJmZGFrdWx1cGVhcHZyeXhtYWVwaGF5bmV4emZsbmV2am1pYndvcml0aGh4YmJ5cG1tYWJvYmZuZmNvanR0Y3Jram1naXJ2bWlzdW5mbHVodGVudHJodGVvamtjaGtwZnBhZXNnd2dscWRrdnZudWx1bnF7bG1sdGFscGhvdWZqcGlhbGNmbGZ5ZHZmd3lkb2ZraGFpeWF3bGx3Y2pvYXJxdnpqbGZmZ2xjdGNsYmxwa2JzZmxocnRqZGFvd3ByZGJjdWJmbHlveWJodmh3ZndvZWl0Z254YnpuaWZwbGx4bXN0a251aWhvYmZlZWZra2FreW5uYWNra2NkdWFtZ3N2bnBoY3RmZ3NybnJvZWh2ZW5kYmZpb21xZm14Ym1paWl1bGF2b2dma2dhY2lrYWFtcHBybGpmbXBqY3VhYXNja2l1cWlmY2liamx1dGNtcGF0b2pyanZmeGdsenBvcGpkZ2NoanVqbGtuZnd0cG5qZnBhY3JrcHRmaGNzamdyaXBjcmZjZGFsem5ob25mZGNvaG9zZmhvaGVha250aXRtamZsbmJvcGNsY3hjdWlnb3hja3JiYWxyYWVidGFhcml0ZWZtemNxaWRvZmd0ZnFnYmFkaWNubWhvdGlvbm9iZnlubGdvenRkYXZ2aW14b2JvdGlra2Z4d2lyb3JwZmNjdXpob3BoZmRjaWVrY2p5b21lamtjZ2Zmam51bmhvcGFkdGZndG1sdA==

Base64编码转换工具,Base64加密解密 (qqxiuzi.cn)

image-20220407203822717

复制下来

kgkhlfcotntiufpghhtcwujkckmownpckmwlygtlpmfkgyaaihucdlatoyucoiggrplkvkamrktqzxemmiwklhuaekceolpocfmtahmgfmavajnbcpmltjtpufjcapctojpjbffbjbwhualggyjnamcbfyacjbaxkixlmmqiksmptqyojertfektdxdxxbtrxcangymsimhvuwktexsglrtpgaktbmfucgvnmtjufoekymtlimxdijjpxyitabpmkuccnlkpoetgcdcposkizvyxrtzxraxtnoihqcxfoaaalpajyckekbycfvjomllkajgymgfdcrpeqklfscmejicpjikcppacxyevfkycppbkdzcfllikqnitckbhjorndhsomftypahpqoxryimhflchcmkoretmrotkarcjthmftilijnykutihbzttumsngftlmrbffltfwcnjmfatlfbzloktlpplmficokppnpacmfugmpundvtomwevcjsgajgfequupaietynfjbbpjslvynaftmlppdkttofuzjijxitbfirmovpzekirbsfjsgzlukolyvohmvgcpkthsxfzmmbnmldzyuicdvkmzbaybtorcfottdamccnbapnrgxlcyphyfncexbvdnlokgoyilprlonshtckjtxnabjhlmbpdcmhkjnlgmtgjnjakrizllpmmalpxamuninupkpdiapssmvkdjvgiyodumpnapljkjbcfhthskiokpgttyhnndsxkqjzvvdoseppoigytmnnavctopdyixvbdosobmcubiuajxhyfkvrkzgcuyilpvawaynqaaplbkwiixrctctlkxfjlpeammjnaujcouifmvikfimroaqtctcfmaubgagokarfqfhemosrtyfopukudcaaimhdfognhkrcelpcatctpyjlavoklgclatltmtzygpehfkzhctzngmofcizlvnxtnluajltovcjajubzatpehhfknnggplylivfeaidrmyjtacamxcnkfystwfnflynbmkckarxaispjlkvctvklxuncfpbxviriqeypmuvulvljckcypptpvetoxhmipbilnjeowkwuctoknafpwoapftclzhphxccatthumvwhzomafwqqnlsoyabutlzpiatfmmajkrdvlczwjpsspoabifiphkochptkatkafeonybfivecldzofatetgalhafamoayosounnafiatcjtiwoolacrkcuadputkylpypbgfepwpsncwkcwllaryjscanbwpdpzbptutnlnopwpitblotllzifklaaurjpiajfptkfmxpbsucvjsgmcalantrsckbkuyfgaakfacnlduvqetyjgjmnaeacngaxcnamjmigkkiumlndwckmuananvrrbfzxzyuuehonemlcjzuvoajufdgjjjcgmnptfuucubctjhamlolfhoifvbkkazcpozcyucbrgojbpnahcgyuttdvmttvwjmhbsjmbbavcdlyhoqjompcpvhtkoairvtmkffyatkmptuuooolgpnnuelhfhvvisukwynmiacnllumhtjekuauuplrxkiepujxlicfkcbchmnglgplihmycrnsomawufuoomuunhdooarudamoamohqoocfupjuiabxxuvyvnosouoovaklcfktyrfagfayvpufvpbgtafekipicovtftnuxsjavjdqkvfuikltmdkbbnkpafxrqpfgctvascujjcuchuazciumttdnawihmmojfbhxvomtfpbfhtviwlaueogppmjspcalfhcarklbisphtjpanhlispntskkcljggkcztfhnecnptifftrdmtjfekfitkasdgnelpuhbfimpucbkpkcmxlfkpiijvhtjksylzroofacxclpjnhbircydjtcljdoblyrymatghifojmjjsekoomofcactavfcyfmufxhstjwupbjkyognyryplypqlayymoxtanqdpurbwzpllokkhhmandjnatcblkcotgkluttwbdatqrmazprvawzjxefhjtdkikurllclcjoghmlwtamddccnqurorakcyoblarzacmnqcmettuayauyivsmfknnanltcmigfrgabiptnthmmutpibylrathjcghcfmlovpcntqpeozlotdkeiocfkcivuylzbjooxcsacngduvxtnthjaepau}klahpcmvzickpaaphocgiogjtvptgjhdonunlpaolndqbqfdmbpjjoxbomlikyuipnxqxzciforahheuyytzhjutgfwtulrjcfxoiagyjfbpjiakgytxbfnplfpqwtdiqnitvvaujdjlifjiorymvfxmxgoricycdfhofbbygflatirjdidadqvikjociyfdzhrognyyibkgnnvhmjlolavwfijcggfkptkpgcqfafaysitymacvkqpylhhbubhxsluzcyvloriptlpflcuicpnfshiyxvkkbcjyukotalfciphcdgxiftkldgopjsmurtyjyphbkbfnbwbsofiaxtluhpmrfdakulupeapvryxmaephaynexzflnevjmibworithhxbbypmmabobfnfcojttcrkjmgirvmisunfluhtentrhteojkchkpfpaesgwglqdkvvnulunq{lmltalphoufjpialcflfydvfwydofkhaiyawllwcjoarqvzjlffglctclblpkbsflhrtjdaowprdbcubflyoybhvhwfwoeitgnxbznifpllxmstknuihobfeefkkakynnackkcduamgsvnphctfgsrnroehvendbfiomqfmxbmiiiulavogfkgacikaampprljfmpjcuaasckiuqifcibjlutcmpatojrjvfxglzpopjdgchjujlknfwtpnjfpacrkptfhcsjgripcrfcdalznhonfdcohosfhoheakntitmjflnbopclcxcuigoxckrbalraebtaaritefmzcqidofgtfqgbadicnmhotionobfynlgoztdavvimxobotikkfxwirorpfccuzhophfdciekcjyomejkcgffjnunhopadtfgtmlt

统计字频

可以用网站,也可以用脚本

网站:

语料库在线–字词频统计 (zhonghuayuwen.org)

image-20220407204119471

序号 字词 出现次数 出现频率
1 a 198 6.2658
2 c 194 6.1392
3 t 188 5.9494
4 f 180 5.6962
5 p 174 5.5063
6 l 170 5.3797
7 o 164 5.1899
8 k 159 5.0316
9 m 152 4.8101
10 i 145 4.5886
11 j 139 4.3987
12 n 133 4.2089
13 u 128 4.0506
14 h 116 3.6709
15 b 109 3.4494
16 y 106 3.3544
17 g 100 3.1646
18 v 92 2.9114
19 r 87 2.7532
20 d 79 2.5
21 x 73 2.3101
22 e 68 2.1519
23 s 61 1.9304
24 z 54 1.7089
25 w 48 1.519
26 q 41 1.2975
27 { 1 0.0316
28 } 1 0.0316

显然,flag是按照字频从大到小排列的({和}除外)

flag{plokmijnuhbygvrdxeszwq}

脚本
import re

file = open('18.txt')  #根据路径自行调整
line = file.readlines()
file.seek(0,0)
file.close()

result = {}
for i in range(97,123):
   count = 0
   for j in line:
      find_line = re.findall(chr(i),j)
      count += len(find_line)
   result[chr(i)] = count
res = sorted(result.items(),key=lambda item:item[1],reverse=True)

num = 1
for x in res:
      print('频数第{0}: '.format(num),x)
      num += 1

不过使用脚本会有一点点小问题,那就是{和}没有给统计上(不知是因为频率太低还是特殊字符的愿因,这时就需要我们给它加上了

频数第1: (‘a’, 198)
频数第2: (‘c’, 194)
频数第3: (‘t’, 188)
频数第4: (‘f’, 180)
频数第5: (‘p’, 174)
频数第6: (‘l’, 170)
频数第7: (‘o’, 164)
频数第8: (‘k’, 159)
频数第9: (‘m’, 152)
频数第10: (‘i’, 145)
频数第11: (‘j’, 139)
频数第12: (‘n’, 133)
频数第13: (‘u’, 128)
频数第14: (‘h’, 116)
频数第15: (‘b’, 109)
频数第16: (‘y’, 106)
频数第17: (‘g’, 100)
频数第18: (‘v’, 92)
频数第19: (‘r’, 87)
频数第20: (‘d’, 79)
频数第21: (‘x’, 73)
频数第22: (‘e’, 68)
频数第23: (‘s’, 61)
频数第24: (‘z’, 54)
频数第25: (‘w’, 48)
频数第26: (‘q’, 41)

flag{plokmijnuhbygvrdxeszwq}

3.flag

flag{plokmijnuhbygvrdxeszwq}

19.很好的色彩呃?

1.题目概述

image-20220407210440704

image-20220407210607855

2.解题过程

实物与描述严重不符(狗头)

PS打开,具体操作步骤如下:

image-20220408145922555

image-20220408145946666

image-20220408150215731

1

image-20220408145807602

8b8b61

2

image-20220408150301893

8b8b61

3

image-20220408150317041

8b8b70

4

image-20220408150336725

8b8b6a

5

image-20220408150403726

8b8b65

6

image-20220408150419887

8b8b73

8b8b618b8b618b8b708b8b6a8b8b658b8b73

16进制,直接放到010里

image-20220408151205933

aapjes

包上flag衣服·就好了

flag{aapjes}

3.flag

flag{aapjes}

20.[INSHack2019]gflag

1.题目概述

image-20220408151529860

image-20220408151559250

2.解题过程

打开description.md

image-20220408154537102

这段话的翻译是:

image-20220408154644642

https://static.ctf.insecurity-insa.fr/a7572eb34ba9700b39f1ba7f5869bf301b67d406.tar.gz

网址打不开,再看看gflag

image-20220408154618108

根据翻译的提示,这应该和编程有关,这个文件就很可疑,有大量重复性的语句

在维基百科上找到了一种很相似的

image-20220408161707577

看了看代码示例,应该就是G代码

image-20220408161913359

找个网站运行

NC Viewer // GCode Viewer and Machine Simulator

image-20220408162048138

image-20220408162106953

flag{3d_pr1nt3d_fl49}

3.flag

flag{3d_pr1nt3d_fl49}

21.我爱Linux

1.题目概述

image-20220408162224564

image-20220408162251916

2.解题过程

图片名称有点可疑。是base16,但是没解出来什么

b0d3e5f34e36b189b47a1a57a0a43ba4

010打开图片

image-20220408162500563

文件头似乎有点问题,尝试着修复了一下,把png文件头给删掉

修复文件头

image-20220408190538647

重新打开

image-20220408190613035

很明显文件尾后面有一些东西

image-20220408190156634

存下来(直接复制出了点问题),存为txt文件

保存末尾多余数据

image-20220408194210929

打开

image-20220408194310909

虽然是乱码,但是我们可以把它转化一下,这是序列化文件

转化序列化文件

python脚本

import pickle                   #pickle库
fp = open("211.txt","rb+")      #打开序列化文件
fw = open("pickle.txt", "w")    #开保存文件
a=pickle.load(fp)               #反序列化文件编译
pickle=str(a)                   #转换成字符串要不然不能保存
fw.write( pickle )              #写入文件
fw.close()                      #关闭文件
fp.close()

打开pickle

image-20220408195420138

是一些类似于坐标的东西,用脚本搞一下

fw = open("pickle.txt","r")
text=fw.read( )
i=0
a=0


while i<len(text)+1:
    if(text[i]==']'):
       print('\n')
       a=0
    elif(text[i]=='('):
        if(text[i+2]==','):
            b=text[i+1]
            d=text[i+1]
            b=int(b)-int(a)
            c=1
            while c<b:
                print(" ", end="")
                c += 1
            print(text[i+5], end="")
            a=int(d)
        else:
            b=text[i+1]+text[i+2]
            d=text[i+1]+text[i+2]
            b=int(b)-int(a)
            c=1
            while c<b:
                print(" ", end="")
                c += 1
            print(text[i+6], end="")
            a=int(d)
    i +=1

image-20220408195754309

打开图形

image-20220408200153586

image-20220408200551069

不得不说,这也太考验想象力了,需要多试几次才能得到,尤其是9和该选哪个,还有6和b

flag{a273fdedf3d746e97db9086ebbb195d6}

再搜一下sl命令

image-20220408184926028

image-20220408184942059

感觉好有意思,试试看

打开kali,以root身份打开终端,输入

apt install sl

image-20220408185313861

然后输入sl,如果出现了一辆会跑的小火车,表明安装成功,如下:

哇,忽然发现typora也可以放视频,真不错

3.flag

flag{a273fdedf3d746e97db9086ebbb195d6}

22.大流量分析(一)未做

1.题目概述

image-20220408201424749

image-20220408201829457

2.解题过程

随便打开一个看看,题目要求我们获得黑客的IP地址,黑客攻击时会产生大量的数据包。利用wireshark统计工具分析一下

image-20220408201958044

然后统计-端点,同样发现183.129.152.140的包数最多

image-20220408202049510

最后统计-IPv4 Statistics-ALL Address。统计下IP,183.129.152.140的数量最多。

image-20220408202113793

所以,183.129.152.140应该就是黑客的IP。分析其它数据包也印证了这个结果

3.flag

flag{183.129.152.140}

23.[INSHack2018]INSanity

1.题目概述

image-20220408202236877

2.解题过程

image-20220408202226788

打开即可看到flag

3.flag

flag{let_the_game_begin!}

24.[DDCTF2018]流量分析

1.题目概述

image-20220408202350928

image-20220408202412132

2.解题过程

txt

image-20220408202432179

90c490781f9c320cd1ba671fcb112d1c

和前面的一道题很像

image-20220408202649916

导出对象,

在IMF里发现:

image-20220408212738749

存下来,

image-20220408212924455

打开(10).eml,在这个邮件里发现一张有base64的图片,这里面的内容应该就是密钥了

image-20220408212903011

使用在线把它提取出来,可以大致看一下是否有错误

在线识别图像

Free Online OCR - convert PDF to Word, Images to text, JPEG to Word

image-20220408213018708

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDCm6vZmclJrVH1AAyGuCuSSZ8O+mIQiOUQCvN0HYbj8153JfSQ
LsJIhbRYS7+zZ1oXvPemWQDv/u/tzegt58q4ciNmcVnq1uKiygc6QOtvT7oiSTyO
vMX/q5iE2iClYUIHZEKX3BjjNDxrYvLQzPyGD1EY2DZIO6T45FNKYC2VDwIDAQAB
AoGAbtWUKUkx37lLfRq7B5sqjZVKdpBZe4tL0jg6cX5Djd3Uhk1inR9UXVNw4/y4
QGfzYqOn8+Cq7QSoBysHOeXSiPztW2cL09ktPgSlfTQyN6ELNGuiUOYnaTWYZpp/
QbRcZ/eHBulVQLlk5M6RVs9BLI9X08RAl7EcwumiRfWas6kCQQDvqC0dxl2wIjwN
czILcoWLig2c2u71Nev9DrWjWHU8eHDuzCJWvOUAHIrkexddWEK2VHd+F13GBCOQ
ZCM4prBjAkEAz+ENahsEjBE4+7H1HdIaw0+goe/45d6A2ewO/lYH6dDZTAzTW9z9
kzV8uz+Mmo5163/JtvwYQcKF39DJGGtqZQJBAKa18XR16fQ9TFL64EQwTQ+tYBzN
+04eTWQCmH3haeQ/0Cd9XyHBUveJ42Be8/jeDcIx7dGLxZKajHbEAfBFnAsCQGq1
AnbJ4Z6opJCGu+UP2c8SC8m0bhZJDelPRC8IKE28eB6SotgP61ZqaVmQ+HLJ1/wH
/5pfc3AmEyRdfyx6zwUCQCAH4SLJv/kprRz1a1gx8FR5tj4NeHEFFNEgq1gmiwmH
2STT5qZWzQFz8NRe+/otNOHBR2Xk4e8IS+ehIJ3TvyE=
-----END RSA PRIVATE KEY-----

手动检查一下是否有错误,按照正确格式保存一下,存为key.txt,一定要确保密钥是对的,否则后面做不出来

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDCm6vZmclJrVH1AAyGuCuSSZ8O+mIQiOUQCvN0HYbj8153JfSQ
LsJIhbRYS7+zZ1oXvPemWQDv/u/tzegt58q4ciNmcVnq1uKiygc6QOtvT7oiSTyO
vMX/q5iE2iClYUIHZEKX3BjjNDxrYvLQzPyGD1EY2DZIO6T45FNKYC2VDwIDAQAB
AoGAbtWUKUkx37lLfRq7B5sqjZVKdpBZe4tL0jg6cX5Djd3Uhk1inR9UXVNw4/y4
QGfzYqOn8+Cq7QSoBysHOeXSiPztW2cL09ktPgSlfTQyN6ELNGuiUOYnaTWYZpp/
QbRcZ/eHBulVQLlk5M6RVs9BLI9X08RAl7EcwumiRfWas6kCQQDvqC0dxl2wIjwN
czILcoWLig2c2u71Nev9DrWjWHU8eHDuzCJWvOUAHIrkexddWEK2VHd+F13GBCOQ
ZCM4prBjAkEAz+ENahsEjBE4+7H1HdIaw0+goe/45d6A2ewO/lYH6dDZTAzTW9z9
kzV8uz+Mmo5163/JtvwYQcKF39DJGGtqZQJBAKa18XR16fQ9TFL64EQwTQ+tYBzN
+04eTWQCmH3haeQ/0Cd9XyHBUveJ42Be8/jeDcIx7dGLxZKajHbEAfBFnAsCQGq1
AnbJ4Z6opJCGu+UP2c8SC8m0bhZJDelPRC8IKE28eB6SotgP61ZqaVmQ+HLJ1/wH
/5pfc3AmEyRdfyx6zwUCQCAH4SLJv/kprRz1a1gx8FR5tj4NeHEFFNEgq1gmiwmH
2STT5qZWzQFz8NRe+/otNOHBR2Xk4e8IS+ehIJ3TvyE=
-----END RSA PRIVATE KEY-----

然后按照以前那个greatspace那道题类似的步骤添加密钥

添加TLS密钥

w

追踪HTTP流

发现flag

image-20220409202001144

flag{0ca2d8642f90e10efd9092cd6a2831c0}

3.flag

flag{0ca2d8642f90e10efd9092cd6a2831c0}

25.[MRCTF2020]摇滚DJ

1.题目概述

image-20220409202335141

image-20220409202357085

2.解题过程

听了一下,真难听,

audacity打开,波形是平的

image-20220409203659490

和前面那道题有点像

image-20220409203650885

kali的qsstv工具

安装qsstv

apt install qsstv

安装成功后,在终端下输入qsstv,自动打开

下载好后,在终端输入qsstv,系统自动打开qsstv,然后点击Options->configuration->sound->sound input->from file

image-20220330194629148

点击OK,然后点击这个按钮,选择要解码的文件,然后就开始解码啦

image-20220409204937827

flag{r3ce1ved_4n_img}

3.flag

flag{r3ce1ved_4n_img}

26.[XMAN2018]排位赛]file

1.题目概述

image-20220409205228454

image-20220409205240216

2.解题过程

看来又是一道内存取证题

查看基本信息

./volatility -f 26.img imageinfo

奇怪了,怎么没有结果

image-20220410210939411

那就要使用另一个程序来处理了

trid下载与安装,参考

(11条消息) 文件类型识别工具:TrID(trid)下载安装及使用_Red snow的博客-CSDN博客

然后就可以进行分析了

trid分析文件

image-20220412205154698

./trid 26.img

可以看到可能的文件类型

image-20220412205256444

没发现什么,再去虚拟机挂载看看

mount挂载

命令:

mount 26.img /mnt

进行挂载,不成功的话可以加个sudo或者多试几次,直至输入ls出现文件

image-20220416113808698

输入cd /mnt,再输入ls出现文件表明挂载成功

image-20220416113950906

然后再输入ls -lha查看具体信息

image-20220416114047867

到文件系统中打开mnt文件夹,查看分离出的图片

image-20220416140156757

并没有找到什么,但是前面ls查看时有lost+found字样,百度一下

image-20220416143814323

ext指extundelete,可以恢复文件,具体可以参考这篇博客

(11条消息) 文件恢复原理&&Linux文件恢复工具-foremost&extundelete_Red snow的博客-CSDN博客_foremost 恢复

extundelete恢复文件

使用命令:

extundelete 26.img --restore-all 

image-20220416144222711

然后打开恢复的文件夹

image-20220416144258785

打印输出

使用cat命令打印或者010打开文件

cat file.17

image-20220416144550878

或者先查看恢复的文件是什么,然后再打印出来

image-20220416144932547

010

image-20220416144458501

3.flag

flag{fugly_cats_need_luv_2}

4.知识点

cat,ls,extundelete命令恢复文件,mount挂载文件

27.[SCTF2019]Ready_Player_One

1.题目概述

image-20220416145333185

image-20220416145739389

image-20220416145812165

2.解题过程

一上来有点懵,这是啥?

运行一下那个程序看看,是一个游戏,靠最右侧直接一路上去就发现flag了

image-20220416150600379

flag{You_Are_The_Ready_Player_One!!!For_Sure!!!}

3.flag

flag{You_Are_The_Ready_Player_One!!!For_Sure!!!}

4.知识点

玩游戏获得flag

28.[GUET-CTF2019]520的暗示

1.题目概述

image-20220416151145138

image-20220416151220245

2.解题过程

这个题目名称好有意思

010打开,

image-20220416151753246

photo.dat,那应该和图片有关系,分析开头和结尾

image-20220416152000030

image-20220416151942781

有点类似于jpg的FFD8FF文件头和FFD9文件尾诶,那要怎么样转换成jpg格式呢?想到了那几个常用的计算方法——二进制与,二进制或,二进制异或和二进制反转,优先考虑异或,这个比较常见,CC和FF的二进制分别是:

CC 11001100

FF 11111111

CC^x=11111111

异或运算符是这个意思,参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1

(1) 00=0,01=1 0异或任何数=任何数

(2) 10=1,11=0 1异或任何数-任何数取反

(3) 任何数异或自己=把自己置0

这样就可以一位位地推导出x是多少了,1-8位x与CC的bit位全是不同的,这就很简单,x应该是

00110011,转换成16进制就是33

在线进制转换器 | 菜鸟工具 (runoob.com)

image-20220417100932010

与33异或

010

image-20220417101027606

image-20220417101051418

看起来很成功

image-20220417101106054

保存,修改后缀为jpg,打开,

image-20220417101226255

这张图片还从来没见过,百度一下

原来需要根据图片中的信息定位,查询网站

https://v.juhe.cn/cell/Triangulation/index.html?s=inner

image-20220417121700455

这个flag很离谱,是中文

flag{桂林电子科技大学花江校区}

3.flag

flag{桂林电子科技大学花江校区}

4.知识点

二进制异或,联通基站定位

29.Beautiful_Side

1.题目概述

image-20220417132136399

image-20220417132202927

2.解题过程

看题目描述,应该和二维码有关

010打开

image-20220417132329526

在文件尾后面发现了png数据,存下来

选中后复制为16进制文本

image-20220417132431797

然后新建一个010文件,粘贴自16进制文本

image-20220417132510899

存下来,打开

image-20220417132545131

是一张残缺的二维码,试了试扫不出来

再回到刚刚图片,stegsolve打开也没发现啥,silent eye也没解出来东西,

百度一下能不能修复

image-20220417133655489

试试看

借助网站

QRazyBox - QR Code Analysis and Recovery Toolkit (merricx.github.io)

新建一个project

image-20220417134531203

然后新建空白的二维码(导入会出错)

image-20220417134602243

调整大小为29x29,这是根据那个残缺的二维码确定的

image-20220417134723776

尺寸说明如下,共29个间隔

image-20220417134428984

然后就一点点的根据这一半二维码进行填充,记得,补全黑色部分后,也要把白色的部分填补上,因为灰色是算“空”的。借助这个分隔进行填充,不然容易搞错

image-20220417135902411

image-20220417142548020

然后点击Tools-Extract QR Infomation

image-20220417142820457

image-20220417142803278

就看到flag了

image-20220417142639096

3.flag

flag{OQWIC_4DS1A_S034S}

4.知识点

二维码修复工具

30.大流量分析(二)

1.题目概述

image-20220417150918660

image-20220417150937972

2.解题过程

打开第一个看看

image-20220417151003851

邮箱协议

POP3

POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。(与IMAP有什么区别?)

SMTP

SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
  SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。
  增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

IMAP

IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。(与POP3有什么区别?

参考:什么是POP3、SMTP和IMAP?-163邮箱常见问题

百度一下常用的SMTP协议

image-20220417151048576

过滤smtp流量,可以很明显的看到几个邮箱地址

image-20220417151611901

打开其中一条

image-20220417151802075

可以知发送邮箱是 xsser@live.cn

3.flag

flag{ xsser@live.cn}

4.知识点

SMTP邮箱协议

31.[GKCTF 2021]FireFox Forensics

1.题目概述

image-20220417152052330

image-20220417152135097

2.解题过程

取证题目,名称是火狐,可以借助一个工具

firepwd ,github下载工具

https://github.com/lclevy/firepwd

打开解压后的文件夹,打开终端,输入

python firepwd.py logins.json

image-20220417192953987

在最后面看到flag

如果出错自行百度

注意这个flag不用flag{}包起来

3.flag

GKCTF{9cf21dda-34be-4f6c-a629-9c4647981ad7}

4.知识点

firepwd工具的使用

32.[DDCTF2018]第四扩展FS

1.题目概述

image-20220417193115594

image-20220417193148261

2.解题过程

010打开

image-20220417193243425

百度一下The fourth extended filesystem

image-20220417193351105

这不是前面那个文件恢复程序嘛

image-20220417193443852

没有img文件,先放着,

查看图片属性

image-20220417195251827

有备注,第一时间联想到压缩包密码

用Kali的foremost分离看看

foremost分离

image-20220417194048347

jpg文件夹里还是刚刚那张图片,压缩包打开是加密的,正好用前面那个备注里的信息破解一下试试

Pactera

还真是解压密码,得到一个file.txt

image-20220417195439665

这熟悉的感觉,

统计字频

脚本

import re

file = open('file.txt')    #根据路径自行调整
line = file.readlines()
file.seek(0,0)
file.close()

result = {}
for i in range(97,123):
   count = 0
   for j in line:
      find_line = re.findall(chr(i),j)
      count += len(find_line)
   result[chr(i)] = count
res = sorted(result.items(),key=lambda item:item[1],reverse=True)

num = 1
for x in res:
      print('频数第{0}: '.format(num),x)
      num += 1

image-20220417195829402

D:\Programes\py37_work\Scripts\python.exe D:/Programes/pythonProject/字频统计.py
频数第1:  ('h', 1700)
频数第2:  ('u', 1650)
频数第3:  ('a', 1600)
频数第4:  ('n', 1550)
频数第5:  ('w', 1500)
频数第6:  ('e', 1450)
频数第7:  ('s', 1350)
频数第8:  ('i', 1300)
频数第9:  ('k', 1250)
频数第10:  ('o', 1150)
频数第11:  ('b', 0)
频数第12:  ('c', 0)
频数第13:  ('d', 0)
频数第14:  ('f', 0)
频数第15:  ('g', 0)
频数第16:  ('j', 0)
频数第17:  ('l', 0)
频数第18:  ('m', 0)
频数第19:  ('p', 0)
频数第20:  ('q', 0)
频数第21:  ('r', 0)
频数第22:  ('t', 0)
频数第23:  ('v', 0)
频数第24:  ('x', 0)
频数第25:  ('y', 0)
频数第26:  ('z', 0)

进程已结束,退出代码0

结果似乎有点问题,还是用网站吧

网站

语料库在线–字词频统计 (zhonghuayuwen.org)

image-20220417200152798

3.flag

flag{huanwe1sik4o!}

4.知识点

图片属性,foremost分离,字频统计

Page 6

1.[INSHack2018]42.tar.xz

1.题目概述

image-20220418124454456

image-20220418124557258

image-20220418124617557

2.解题过程

随便打开一个tar文件

image-20220418124711360

继续打开也是这样,好家伙,这么多文件地嘛,

有点类似于套娃

python脚本

import tarfile
import os
current_path = r"\D:/Programes/pythonProject/new/tar"

if __name__ == "__main__":
    i = 0
    target = "42.tar.xz"
    tarname = current_path + target
    while True:
        i += 1
        print("当前层数:{0}".format(i))
        tar = tarfile.open(tarname)
        filenames = tar.getnames()
        if target not in filenames: break
        tar.extract(target,current_path)
        tar.close()

    print("最后一层:{}".format(filenames),"\n正在解压……")
    tar.extractall(current_path)
    tar.close()

不过速度太慢了,借用一下一个bash,

while [ "`find . -type f -name '*.tar.xz' | wc -l`" -gt 0 ]; do find -type f -name "*.tar.xz" -exec tar xf '{}' \; -exec rm -- '{}' \;; done;

image-20220418162228531

好家伙,一运行直接磁盘爆满,一共就4GB内存,运行到一半我及时地暂停了

image-20220418161943408

直接cat查找flag

image-20220418162032727

3.flag

flag{04ebb0d6a87f9771f2eea4dce5b91a85e7623c13301a8007914085a91b3ca6d9}

4.知识点

破解套娃,bash语句,cat命令

2.[XMAN2018排位赛]AutoKey(待定)

1.题目概述

image-20220418181423555

image-20220418181412445

2.解题过程

有点像USB数据包,和以前做过的一道题很像

image-20220418181921094

解法一

使用同样的tshark命令获取数据

tshark -r 2.pcapng -T fields -e usb.capdata > usbdata.txt

image-20220418182310243

打开usbdata文件,和USB那道题很类似

image-20220418182543318

解法二

利用脚本获取信息
UsbKeyboardDataHacker爆破

WangYihang/UsbKeyboardDataHacker: USB键盘流量包取证工具 , 用于恢复用户的击键信息 (github.com)

下载地址

WangYihang/UsbKeyboardDataHacker: USB键盘流量包取证工具 , 用于恢复用户的击键信息 (github.com)

python UsbKeyboardDataHacker.py 2.pcapng

image-20220418183132058

【+] Found : autokey(‘****’).decipheer(‘mplrvffczeyoujfjkybxgzvdgqaurkxzolkolvtufblrnjesqitwahxnsijxpnmplshcjbtyhzealogviaaissplfhlfswfehjncrwhtinsmambvexopzeiz’)

有效信息

处理一下密文,把<DEL>前面的一个字母给删去(del代表delete删除键,看看键盘就知道了)

mplrvffczeyoujfjkybxgzvdgqaurkxzolkolvtufblrnjesqitwahxnsijxpnmplshcjbtyhzealogviaaissplfhlfswfehjncrwhtinsmambvexpziz

https://github.com/WangYihang/UsbKeyboardDataHacker)

breakautokey爆破

下载地址

hotzzzzy/breakautokey: breakautokey (github.com)

环境配置

脚本

实用密码学 (practicalcryptography.com)

image-20220418185742015

配置文件

Practical Cryptography

image-20220418190015654

解压后,把文件名里的"english_"删去,放在Python2文件夹中。最后一个py文件放在lib文件夹里。

把框出来的这部分换成我们要破解的数据,然后就可以跑脚本啦

image-20220418191427548

python2 break_autokey.py

3.flag

4.知识点

3.[QCTF2018]X-man-Keyword(待定)

1.题目概述

image-20220421201114754

image-20220421201132541

image-20220421201952400

2.解题过程

png图片有密码,联想到了lsb

Stegsolve打开,在red0通道发现了一点东西,blue0和green0里面也有,尝试着合并也没出来什么东西

image-20220430133226367

那就利用一个lsb工具试试看

livz/cloacked-pixel: LSB steganography and detection (github.com)

cloacked-pixel-master

用法

image-20220430133524133

python2 lsb.py extract 3.png out lovekfc

提示把keyword放到前面,根据提示,

3.flag

flag{cCgeLdnrIBCX9G1g13KFfeLNsnMRdOwf}

4.知识点

4.[BSidesSF2019]diskimage

1.题目概述

image-20220501130418568

image-20220501130442383

2.解题过程

题目名称叫disk image,就是磁盘照片,和磁盘有关系

照片上部分有点问题,010打开

image-20220501130538205

第一眼没有什么问题,stegsolve打开看看

image-20220501132259767

好像也没啥,换个工具看看,

zsteg查看

image-20220501132552053

image-20220501132712396

导出镜像信息

zsteg -e 'b8,rgb,lsb,xy' 4.png > disk.dat

image-20220501132909345

导出文件的格式选择dat,txt文档无法正常查看

image-20220501133016446

打开dat文件看看

image-20220501133800416

没有什么东西

恢复磁盘信息

使用kali自带的testdisk工具,命令

testdisk 4disk.dat 

打开之后

image-20220501134532639

回车

image-20220501134553864

默认none,再次回车

image-20220501134906792

方向键右键选择undelete

然后向下查看所有文件,找到一个不正常的

image-20220501135546004

根据提示,按c,回车,拷贝,

image-20220501140054210

打开

image-20220501140202291

3.flag

flag{FAT12_FTW}

4.知识点

zsteg查看png隐藏信息;testdisk工具处理磁盘

5.[INSHack2017]hiding-in-plain-sight

1.题目概述

image-20220501140418397

image-20220501140515247

2.解题过程

打开description

image-20220501140552160

翻译一下

image-20220501140645801

漏洞题目

010打开图片,发现jpg文件头

image-20220501221202137

foremost分离

image-20220501221313838

打开jpg文件,发现flag

image-20220501221339071

3.flag

flag{I337_h4xx0r5_c0mmun1c473_w17h_PNGs}

4.知识点

binwalk分离

6.[HDCTF2019]信号分析

1.题目概述

image-20220507095951654

image-20220507100036947

提示:

image-20220507183623652

2.解题过程

听了听没有东西,audacity打开

image-20220507101542512

熟悉的套路,频谱是重复的,选取其中一段,宽的代表1,窄的代表0,提取出来

image-20220507183408441

0101010101010101000000110

再按照提示,转化成:

FFFFFFFF0001,

最后一个0就不算了

flag{FFFFFFFF0001}

3.flag

flag{FFFFFFFF0001}

4.知识点

频谱长短转化;根据提示解题;

7.[MRCTF2020]寻找xxx

1.题目概述

image-20220507183932026

image-20220507184010152

2.解题过程

听了听是电话按键音,dtmf2num工具识别一下

下载地址,实在是太不好找了

https://www.softpedia.com/get/Multimedia/Audio/Other-AUDIO-Tools/DTMF2NUM.shtml#download

打开终端,输入

.\ dtmf2num.exe 密码.wav

image-20220508113048396

DTMF numbers: 18688422216D09

电话号码是纯数字,删掉D,1868842221609

也可以利用网站,解出来没有字母;

Detect DTMF Tones (dialabc.com)

然后发送电话号码到公众号,没找到,这里直接得出flag了

3.flag

flag{Oh!!!_Y0u_f1nd_my_secret}

4.知识点

DTMF电话音识别;

8.[INSHack2017]remote-multimedia-controller

1.题目概述

image-20220508113640764

image-20220508113710145

2.解题过程

题目描述:

image-20220508113724976

翻译一下

image-20220508113802456

追踪TCP流,

发现flag.txt字样,并且还跟着一串base64编码

image-20220508185438892

Vmxkd1NrNVhVbk5qUlZKU1ltdGFjRlJYZEhOaWJFNVhWR3RPV0dKVmJEWldiR1JyV1ZkS1ZXRXphRnBpVkVaVFYycEtVMU5IUmtobFJYQlRUVmhDTmxZeFdtdGhhelZ5WWtWYWFWSlViRmRVVlZaYVRURmFjbFpyT1ZaV2JXUTJWa1pvYTFkck1YVlVhbHBoVWxack1GUlZaRXRqVmxaMVZHMTRXRkpVUlRCWFdIQkdUbGRHY2s1VmFFOVdNWEJoV1Zkek1XSldaSFJPVm1SclZsZDRXbFJWVm5wUVVUMDk=

找网站解了一下没解出来,多试几次就出来了,

VldwSk5XUnNjRVJSYmtacFRXdHNibE5XVGtOWGJVbDZWbGRrWVdKVWEzaFpiVEZTV2pKU1NHRkhlRXBTTVhCNlYxWmthazVyYkVaaVJUbFdUVVZaTTFaclZrOVZWbWQ2VkZoa1drMXVUalphUlZrMFRVZEtjVlZ1VG14WFJURTBXWHBGTldGck5VaE9WMXBhWVdzMWJWZHROVmRrVld4WlRVVnpQUT09
VWpJNWRscERRbkZpTWtsblNWTkNXbUl6VldkYWJUa3hZbTFSWjJSSGFHeEpSMXB6V1Zkak5rbEZiRTlWTUVZM1ZrVk9VVmd6VFhkWk1uTjZaRVk0TUdKcVVuTmxXRTE0WXpFNWFrNUhOV1paYWs1bVdtNVdkVWxZTUVzPQ==
R29vZCBqb2IgISBZb3UgZm91bmQgdGhlIGZsYWc6IElOU0F7VENQX3MwY2szdF80bjRseXMxc19jNG5fYjNfZnVuIX0K

y

也可以用python脚本,根据最终字符串中含有flag为线索

import base64

cipher_text = 'Vmxkd1NrNVhVbk5qUlZKU1ltdGFjRlJYZEhOaWJFNVhWR3RPV0dKVmJEWldi' \
              'R1JyV1ZkS1ZXRXphRnBpVkVaVFYycEtVMU5IUmtobFJYQlRUVmhDTmxZeFdt' \
              'dGhhelZ5WWtWYWFWSlViRmRVVlZaYVRURmFjbFpyT1ZaV2JXUTJWa1pvYTFk' \
              'ck1YVlVhbHBoVWxack1GUlZaRXRqVmxaMVZHMTRXRkpVUlRCWFdIQkdUbGRH' \
              'Y2s1VmFFOVdNWEJoV1Zkek1XSldaSFJPVm1SclZsZDRXbFJWVm5wUVVUMDk='
plain_text = ''

while 'flag' not in plain_text:
    cipher_text, plain_text = plain_text, base64.b64decode(cipher_text).decode()

print(plain_text)

image-20220508191403907

3.flag

flag{TCP_s0ck3t_4n4lys1s_c4n_b3_fun!}

4.知识点

追踪流;base64多次编码;

9.一路到底

1.题目概述

image-20220508191436865

image-20220508192233593

2.解题过程

好家伙,155534个txt文件,

image-20220509192825928

打开start

image-20220509193227815

找到这个文件

image-20220509193141473

按照内容再打开下一个文件

image-20220509193342491

继续

image-20220509193433434

这就有点奇怪了,太像套娃了,这些txt文件内容前面都有数字,这代表什么呢?写出来

2055577251202304

转换一下进制

在线进制转换器 | 菜鸟工具 (runoob.com)

image-20220509195339190

套路好深,那就用一个脚本提取这些数据吧

import re

current_path = "D:\\CTF\\P6-BUU\\9\\files\\" #最好使用绝对路径

start = open(current_path + "start.txt","r")
zipfile = open("data.zip","wb")  #创建一个文件存储数据
content = start.read()
while True:
    num = re.findall(r"^[0-9]+",content)[0]
    zipfile.write((int(num)).to_bytes(2, byteorder = 'big'))
    filename = re.findall(r" ([A-Za-z0-9.]+)$",content)
    if filename:
        nextfile = open(current_path + filename[0],"r")
        content = nextfile.read()
        nextfile.close()
    else:
        break
print(content)
start.close()
zipfile.close()

image-20220509212043332

打开

image-20220509212139353

有密码,那就爆破

爆破了十几分钟之后终于解出来了,范围是

image-20220510161706792

image-20220510161628854

tgb678

打开

image-20220510161753858

010打开,原来是文件头被改了

image-20220510161837660

修改为FF D8 FF ,还是不可以,看来修改的太少了

随便找一张jpg

image-20220512183740694

修改为FF D8 FF E0,可以打开了

image-20220512183827604

3.flag

flag{0c6b489ca956e2fd94dce12be4bf0729}

4.知识点

10进制与16进制转换;python脚本获取文件信息;jpg文件头

10.[SUCTF2018]dead_z3r0

1.题目概述

image-20220510155951921

2.解题过程

不知道啥格式,binwalk也没分析出来,

010打开

image-20220510160136701

仔细观察,有点像反编译

image-20220510160840973

image-20220510160920436

而且文件头加入了一些base64数据

image-20220510160959950

去掉base64数据

如图中选中部分

image-20220518140113061

保存为pyc文件

再用stegosaurus脚本工具,和剑龙那道题一样

python stegosaurus.py -x 10.pyc

image-20220518140543783

3.flag

flag{Z3r0_fin411y_d34d}

4.知识点

反编译;stegosaurus脚本使用

11.INSHack2018(not) so deep

1.题目概述

image-20220518141251287

image-20220518141313928

2.解题过程

description:

image-20220518141455561

audacity查看频谱

image-20220527211124188

很明显有flag的痕迹,只是显示不全,

调整一下频率

image-20220528130134920

INSA{Aud1o_st3G4n

得到一半flag,继续寻找,联系题目名称和要求,这次要用到一个新工具

deep sound,在歌曲中隐藏文件的工具

链接:https://pan.baidu.com/s/14LOBPAzm4mWNMPJ3ccT4SQ?pwd=ujso
提取码:ujso

image-20220528130945734

打开提示需要密码,使用脚本破解她的密码,脚本下载地址

john/deepsound2john.py at bleeding-jumbo · openwall/john · GitHub

破解密码

打开终端

 python deepsound2john.py final_flag.wav > password.txt

image-20220528132258437

final_flag.wav:$dynamic_1529$b8f858d9deb0b805797cef03299e3bdd8990f48a

尝试对获取final_flag.wav 密码的hash值然后使用john进行爆破

john爆破

John在Kali上有,可以直接用

image-20220528134301054

password:azerty

导出文档

image-20220528135107202

按照提示找到导出文档

image-20220528135159917

0_1s_4lwayS_Th3_S4me}

3.flag

flag{Aud1o_st3G4n0_1s_4lwayS_Th3_S4me}

4.知识点

audacity查看并调整频谱;deep sound获取音频隐藏信息;john破解

12.大流量分析

1.题目概述

image-20220528135705809

2.解题过程

3.flag

4.知识点

13.[INSHack2017]10-cl0v3rf13ld-lane-signal

1.题目概述

image-20220627105653972

image-20220627104546271

2.解题过程

翻译一下

image-20220627105233956

010打开

image-20220627105733514

是jpg文件,

修改一下后缀

image-20220627105828706

在后面发现了png数据

image-20220627105909314

导出png数据

仔细观察会发现

image-20220627111711083

放大

image-20220627111412641

短的是.,长的是-

… . .-… .–. – .

就是HELPME

再回到png的010,结尾后面还有数据

image-20220627124817427

改后缀

也复制下来,后缀改为ogg,

image-20220627125235505

原来是个音频文件,audacity打开

image-20220627125444508

查看摩斯密码

image-20220627125556097

… -. … .- -.–. – ----- .-.

image-20220627125616251

… …-- …–.- .-- .---- .-…

image-20220627125631225

.-… …–.- -. …-- …- …-- .-.

image-20220627125709479

…–.- …- --. …-- -.-.-- -.–.-

合起来

… -. … .- -.–. – ----- .-. … …-- …–.- .-- .---- .-… .-… …–.- -. …-- …- …-- .-. …–.- …- --. …-- -.-.-- -.–.-

翻译一下

image-20220627130831657

INSAM0R53W1LLN3V3R4G3

这个网站不对劲,换个网站试试

image-20220627131808661

这个靠谱,(改成{

所以前面的helpme没用上

3.flag

flag{M0R53_W1LL_N3V3R_4G3!}

4.知识点

010数据处理

摩斯密码

14.[NPUCTF2020]碰上彩虹,吃定彩虹!

1.题目概述

image-20220627200443030

2.解题过程

maybehint

根据以前的题目推测应该和NTFS数据流有关

NTFS

image-20220627204200821

导出后打开这个out.txt

image-20220627210509557

==联想到base64,那就统计一下字频

字频统计

image-20220627211216737

ZW5jcnlwdG8=

和推测一致,解码

image-20220627211807128

那应该和密码有关,先放着

再打开lookatme,发现底部有摩斯密码

摩斯密码

image-20220627200814486

.- …- - — -.- . -.–

image-20220627201514951

是AUTOKEY

achnrvxzzuglarucalznwcygfggrufryvbzqjoxjymxvchhhdmliddcwmhghclpebtzwlojvew

那文本内容应该使用了autokey加密,使用脚本破解一下(pycharm坏了,重新安装,就没跑)

autokey加密

解出来的密码是:iamthepasswd

010打开secret

image-20220627212504437

这一段文字需要删掉才可以继续解密

然后使用

encrypto解密

image-20220627212319447

搞出来一张图片

image-20220627212618245

010打开图片发现zip数据

image-20220627212729548

导出来打开

哟是

又是加密的zip,密码在哪呢?

很久很久以前也做过一道题

image-20220627213024269

采用同样的办法提取颜色的十六进制

ps拾色器

image-20220627213323412

ffff70

image-20220627213345427

ffff40

image-20220627213414108

ffff73

image-20220627213448413

ffff73 …

6条黄色带的16进制就是:

ffff70 ffff40 ffff73 ffff73 ffff57 ffff64

提取后2位

704073735764

转一下ascii

image-20220627213634957

打开文档

image-20220627213706014

显示隐藏内容

image-20220627213749958

这是一种编程语言,ALPHUCK,借个网站

alphuck在线开发工具,在线编译IDE_w3cschool

eeeeeeeeeepaeaeeeaeAeeeeeeaeeeeeeeeeeccccisaaaaeejeeeeeejiiiiiiLiiiiijeeeeeejeeeeeeeeeeeeeeeeeeeejcceeeeeeeeeeePeeeeeeeejaaiiiiiiijcciiiiiiiiiijaaijiiiiiiiiiiiiiiiiiiiijeeeeeeHeeeeeeeeeeeeeeeeejcceeeeeeeeeeeejaaiiiijeeeeeeejceeeeeeeeeeeeeeeeeeeeeeeeejceeeeeeeeeeeeeeeeejaeeeeeejciiUiiiiiiiiiiiiiiiiijaeeeejceeeeeeeeeCeeeeeeeeejajciiiiiiiiiiiiiiiiiiijaaiiiijiijeeeeeeeeeeejKcciiiiiiiiiiiiiiijaaij

删掉大写APHKC几个字母

image-20220627214115507

终于得到flag了!

3.flag

flag{1t's_v3ry_De1iCi0us~!}

4.知识点

太多了!

15.[RoarCTF2019]forensic

1.题目概述

2.解题过程

3.flag

4.知识点

16.[WMCTF2020]行为艺术

1.题目概述

image-20220628195934371

2.解题过程

打开hint

image-20220628200043107

md5sum flag.zip 
17f5b08342cf65f6dc08ed0b4c9bd334  flag.zip

推测和MD5加密,zip加密有关

打开图片,数字是zip的16进制数据

image-20220628200102353

010打开

image-20220629182343052

CRC校验码有误,跑个脚本看一下它的正确宽高

image-20220629182847217

image-20220629182908827

高度有问题,改一下,再打开

image-20220629182951140

一看就是zip的16进制,识别不出来,就用无影手敲出来

很快,我们得到:

504B0304140000000800DB93C55086A39007D8000000DF01000008000000666C61672E74787475504B0E823010DD93708771DDCCB0270D5BBD0371815A9148AC6951C2ED9D271F89C62E2693D7F76BB7DE9FC80D2E6E68E782A326D2E01F81CE6D55E76972E9BA7BCCB3ACEF7B89F7B6E90EA16A6EE2439D45179ECDD1C5CCFB6B9AA489C1218C92B898779D765FCCBB58CC920B6662C5F91749931132258F32BBA7C288C5AE103133106608409DAC419F77241A3412907814AB7A922106B8DED0D25AEC8A634929025C46A33FE5A1D3167A100323B1ABEE4A7A0708413A19E17718165F5D3E73D577798E36D5144B66315AAE315078F5E51A29246AF402504B01021F00140009000800DB93C55086A39007D8000000DF010000080024000000000000002000000000000000666C61672E7478740A00200000000000010018004A0A9A64243BD601F9D8AB39243BD6012D00CA13223BD601504B050600000000010001005A000000FE00000000000000 

保存一下,打开

image-20220629183500921

Ook!密码,找个网站借一下

image-20220629183732762

3.flag

flag{wai_bi_baaaa_bo!2333~~~}

4.知识点

png高度隐写;

Ook!密码

17.[watevrCTF 2019]Unspaellablle

1.题目概述

image-20220628201432772

2.解题过程

打开txt

image-20220628201258828

像是一首小诗,翻译一下

image-20220628201524024

很离谱,居然这么多词儿

搜一搜这个SG是个啥玩意

image-20220629185136435

有一些内容是多余的,查找一下{

image-20220629192516527

这个题目找半天没找到一个完美的原文文档

解题思路大致就是利用beyond compare软件找不同,借个图

image-20220629192651823

多出来的的内容组合到一起就是flag

3.flag

flag{icantspeel_tiny.cc/2qtdez}

4.知识点

beyond compare

搜索能力

18.[羊城杯 2020]signin

1.题目概述

image-20220628202831142

2.解题过程

打开txt

image-20220628202855385

这道题没啥思路,常见的几种编码都试了也不行,解题过程参考百度

根据题目提示,一表人才,二表倒立,以及玩具toy,猜测是toy加密

这是一篇介绍toy加密的文章(全英文,看不懂就不看了)

301.pdf (iacr.org)

image-20220629212021680

简单来说,TOY加密有2个过程,

image-20220629211434786

image-20220629211520097

image-20220629211537364

简单写了一下过程,大致就是2次映射,如有错误请指教:

image-20220630104225554

每个字母的加密过程如下图

“一表人才”:

image-20220629211006171

“二表倒立”:

image-20220629211052957

然后就可以借助脚本解一下内容(当然内容很少的话也可以手动解)

list1 = {'M':'ACEG','R':'ADEG','K':'BCEG','S':'BDEG','A':'ACEH','B':'ADEH','L':'BCEH','U':'BDEH','D':'ACEI','C':'ADEI','N':'BCEI','V':'BDEI','H':'ACFG','F':'ADFG','O':'BCFG','W':'BDFG','T':'ACFH','G':'ADFH','P':'BCFH','X':'BDFH','E':'ACFI','I':'ADFI','Q':'BCFI','Y':'BDFI'}
#首先把每个字母的最终映射写出来
list2 = original_list = ['M','R','K','S','A','B','L','U','D','C','N','V','H','F','O','W','T','G','P','X','E','I','Q','Y']
#原始内容会出现的24个字母(Z J已被替换)
list2_re =list2[::-1]

ori_str = 'BCEHACEIBDEIBDEHBDEHADEIACEGACFIBDFHACEGBCEHBCFIBDEGBDEGADFGBDEHBDEGBDFHBCEGACFIBCFGADEIADEIADFH'
#原始字符串,可替换

flag_1 = ''
for i in range(0,len(ori_str),4):
    _val = ori_str[i:i+4]
    for key, val in list1.items():
        if val == _val:
            flag_1 += key
print(flag_1)
flag = ''
for i in flag_1:
    for j,k in enumerate(list2):
        if i == k:
            flag += list2_re[j]
print(flag) 

跑一下

image-20220630104848868

GWHT是此次羊城杯的flag头

3.flag

flag{TOYSAYGREENTEAISCOOL}

4.知识点

Toy加密

19.[INSHack2019]Passthru

1.题目概述

image-20220630105212755

description

image-20220630105153859

image-20220630105231735

2.解题过程

打开发现传输层协议是TLS,并且被加密

image-20220701102002332

文件中还有一个SSLkey文件(SSL3.0就是TLS)

和以前做过的一道题类似,TLS密钥,

导入密钥文件

打开首选项

image-20220701102624485

打开protocols

image-20220701102721888

下拉找到TLS,导入

image-20220701102850120

3.flag

4.知识点

20.[XMAN2018排位赛]ppap

1.题目概述

2.解题过程

3.flag

4.知识点

21.

1.题目概述

2.解题过程

3.flag

4.知识点

22.[BSidesSF2020]barcoder

1.题目概述

image-20220630201513192

2.解题过程

打开说明

image-20220630201555065

image-20220630201613525

重点观察一下图片

image-20220630201714688

因为条形码上下都是一样的,而且这张图片“巧合地”露出了每一竖条的一部分

画图打开(不太会PS),猜想把每一竖条码没有被涂鸦的的区域摘出来,然后拉长,组合到一起,扫一扫就行

开干

矩形工具选中每一细竖条没有涂鸦的地方,然后拉伸

image-20220630210943150

image-20220630212303313

中国编码APP扫一扫

3.flag

flag{way_too_common}

4.知识点

条形码遮挡处理

24.[CTF2019]She

1.题目概述

image-20220701103604874

2.解题过程

打开这个游戏

image-20220701105112144

走进左下角这个屋子,遇到了一只鸡,打败这只鸡才能得到flag线索

image-20220701105212989

image-20220701105306856

这只鸟好强,根本打不过,一上来就over了

image-20220701105337939

不行,我要开外挂

这个游戏类型是RPG,那就下载一个RPG

RPG Maker XP | RPG Maker | Make Your Own Game! (rpgmakerweb.com)

image-20220701105626979

image-20220701143242905

image-20220701143255792

新建进程,把Game.rxproj放到She下,然后再次打开进程选择She下的Game.rxproj

打开后我们要对这只鸟的参数进行修改

Tools——database——

image-20220701144146530

参数可以都调成1

image-20220701190226414

然后再当我们打完鸟,往后走,有个幽灵,我们一碰就Game Over

我们编辑事件,先点击箭头的蓝色块

image-20220701193217865

选中幽灵图标右键编辑事件,然后清空事件页就行ROOM1-4但凡有幽灵的都给清除

image-20220701193326598

然后再进入游戏

开挂当然稳赢

然后我们从第一个门开始打开门,发现打不开然后挨个尝试,按照该顺序获取到的数值是371269(第几个门),按照房间顺序排列得到213697。(第一个门是2,第二个门给的数字是1以此类推)

将213697进行md5加密

image-20220701194119379

3.flag

flag{d6f3fdffbcb462607878af65d059f274}

4.知识点

利用RPG软件开挂

  • 2
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

cuihua-

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值