资讯详情

BUUCTF Misc Page2-6部分题目

Page 2

1.劫持的神秘礼物-流量分析、字符搜索

image-20211215093527793

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

这是TCP,似乎什么都没有

再看看HTTP流看密码可以随意打开一个HTTP流,也可以整个跟踪,

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

2.刷新图片-F5隐写

解压后,我得到了一张奇怪的用stegsolve查看010后没有错,

根据主题描述,刷新键不仅是F5键能有什么神奇的效果吗?F5隐写吗?我去百度(28条消息) 【隐写术】F5隐写_m0_46296905的博客-CSDN博客_f5隐写

然后学习F如何使用工具。

在kali经过多次失败,终于提取出了一个奇怪的txt文件

经验是在kali不要用汉字命名所有文件夹,因为你不能在终端中输入汉字。

直接打开txt什么都看不见,用010检查一下,应该是个zip文件。

修改文件后缀,解压,结果是伪加密

好办,修改一下deFlags

得到flag

3.snake

得到一张绿蛇的照片,蛇真的不怎么样

010看到了很多奇怪的东西,不仅有几个网站,还有一个压缩包

用Kali分开,得到几份文件

在这个key文件中,

解密后得到

这是什么意思?百度查这个名字,查她的歌,

一个个查词后,找到了这个Anaconda意思很接近

然后我不知道该怎么办。提交这个词是错误的。嘿,还有另一份文件。从他人的经验中学习并解密它。单词中的A不应该大写,而应该改为小写。

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

认真的你就输了–乱找

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

看这个名字就知道这个问题不能复杂。

解压zip文件完成后,在几个文件夹中翻转,不小心找到了flag,果然不能认真做。

5.藏藏藏–jpg隐写

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

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

但是Kali的binwalk奇怪的是,分离后什么都没有,flag藏在哪里?

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

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

6.被盗文件–流量分析

经过仔细检查,在这里FTP我在一条里看到了flag跟踪字符

另存为未知格式文件,用010看看是什么,

好像不行。会隐藏什么文件吗?Kali的foremost分离原始流量文件(桌面output文件必须是空的,跟踪流得到的提示我们flag在一个rar在文件中,不要让我们分析未知的格式文件),

加密rar

密码是什么格式呢?

用archpr暴力破解试试,试能试几次。

获取密码解压flag

7.菜刀–流量分析

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

追踪HTTP流发现,

我试过这张照片中的信息好几次都没找到。先借网上。

得到一张图片,Th1s_1s_p4sswd_!!!

这应该是压缩包的密码,用于解密foremost 分离出来的zip文件,

得到flag

8.佛系青年–ZIP伪加密

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

图片中没有密码信息,会伪加密吗?乍一看,真的有

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

9.猜猜我是什么

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

那flag藏在哪里?

是图片隐藏吗?回头看010,在最后发现flag

10.梅花香之苦寒来

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

将这些16个制字符转换成ASCII代码试试(删除上面的,保留下面的,太长,不容易复制),16进制到ASCII字符串在线转换工具 - Coding.Tools

这些坐标代表什么?

查了一下,又发现了kali上一个新工具,gnuplot绘图工具绘制图片,工具识别格式没有括号和逗号,修改,更换记事本,(复制文本中的括号和逗号,找不到)

这个命令Kali没有,要自己安装,上网搜索,结合这个回答,得到二维码

(28条消息) gnuplot安装 - CSDN

扫描得到flag

11秘密文件

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

用foremost分离原文件,

得到一个rar并且有密码

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

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

010看一下

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

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

asdfghjkl1234567890 

但是压缩包里什么都没有,只有一张图片

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

解码后还是一串base64编码,很奇怪

搜索后,原来这是多次编码,人们使用python脚本做的,我很好吃,不会写脚本,那就借鉴吧

最后这个跑了

comEON_YOuAreSOSoS0great

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

写完后得到这个

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

转换,

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

flag{morseisveryveryeasy} 

13just_a_rar

暴力破解下

解压

这张图片还挺好看

010瞅一瞅

得到flag,藏得好隐蔽

flag{Wadf_123}

14一叶障目

这是个啥

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

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

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

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

15鸡你太美-GIF

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

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

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

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

16穿越时空的思念

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

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

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

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

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

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

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

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

17[BJDCTF2020]纳尼

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

这个样子试试行不行

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

Q1RGe3dhbmdfYmFvX3FpYW5nX2lzX3NhZH0=

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

OK得到flag:flag{wang_bao_qiang_is_sad}

18[ACTF新生赛

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

加上好像也不行,

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

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

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

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

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

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

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

flag{gue33_Gu3Ss!2020}

19[SWPU2019]我有一只马里奥

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

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

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

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

这个需要用notepad打开,

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

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

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

在path系统变量中添加:

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

就搞好了,

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

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

20谁赢了比赛?

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

这里面有什么玄机吗?

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

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

欸,还真有。

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

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

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

但是还需要密码,

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

啊,这好像是zip的。。。

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

很明显,这个rar是加密的

并且,在最后还有这个

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

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

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

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

事实证明确实如此。

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

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

flag{do_you_know_where_is_the_flag}

但是为什么不对呢?

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

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

OK,扫描得到flag.

flag{shanxiajingwu_won_the_game}

21.[HBNIS2018]excel破解

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

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

22.[HBNIS2018]来题中等的吧

这是个啥?

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

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

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

去翻译一下

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

flag{alphalab}

23[GXYCTF2019]gakki

开图雷击

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

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

打开之后是这样的

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

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="")

运行出来这个:

得到flag{gaki_IsMyw1fe}

24[WUSTCTF2020]find_me

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

010看着倒也还正常

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

去翻译一下

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

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字符

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

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

再看那一个txt文件,

错误思路

I2luY2x1ZGU8aW9zdHJlYW0+Cg==

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

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

那该怎么办呢?去百度了一下其他人的做法,原来,我方向错了,那些字符串并不是只有一个,他有好多个,不是直接解码,而是通过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文件一定要与脚本文件在同一目录下,一些小错误自己可以尝试根据提示修改。

flag{6aseb4_f33!}

26[SWPU2019]伟大的侦探

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

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

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

wllm_is_the_best_team!

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

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

福尔摩斯小人密码

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

翻译一下,就是 iloveholmesandwllm

flag{iloveholmesandwllm}

27[GUET-CTF2019]KO

是一个txt文件

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

Ook!密码

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

flag{welcome to CTF}

28黑客帝国

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

这个开头很熟悉啊,

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

果然是rar文件

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

16进制存为文件

import binascii

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

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

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

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

头是png,尾是jpg,

那应该改哪个?都试试

似乎不行,那就改成jpg

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

修改之后,图片正常打开

flag{57cd4cfd4e07505b98048ca106132125}

29[MRCTF2020]你能看懂音符吗

29[MRCTF2020]你能看懂音符吗

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

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

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

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

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

解密后得到

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

flag{thEse_n0tes_ArE_am@zing~}

31[MRCTF2020]ezmisc

010打开后,提示

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

修改之后就看到了

flag{1ts_vEryyyyyy_ez!}

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

得到两个加密zip,flag3和flag2

flag3

flag2

1.暴破flag3的密码,

一下就出来了

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

试了好像并不是

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

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

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

2.potplayer逐帧查看

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

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

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

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

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

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

敲击码

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

对应下来就是

WLLM

继续看,7.36秒发现

Base64

dXBfdXBfdXA=

up_up_up

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

wllmup_up_up

010打开

在结尾发现flag

flag{A2e_Y0u_Ok?}

Page 3

1,2 Caesar+低个头

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

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

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

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

EWAZX RTY TGB IJN IO KL

flag{CTF}

3Mysterious(待定)

1.题目描述

2.题解过程

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

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

010先看看

DOS是什么?

继续寻找线索

卡了,

4[SUCTF2018]single dog

1.题目描述

2.解题过程

是一道图片题

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

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

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

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

找个网站

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

flag{happy double eleven}

和题目遥相呼应y

5.喵喵喵(太难了)

1.题目描述

2.解题过程

LSB隐写

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

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

调整通道

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

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

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

修改文件头

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

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

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

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

修改高度

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

得到了一个完整的二维码

扫二维码

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

解压出来一个txt,结果…

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

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

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

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

NTFS数据流搜索

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

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

反编译

借鉴一下大佬的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.题目描述

解压之后

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.题目描述

2.解题过程

010看

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

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

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

是这样一串字符

MZWGCZ33GZTDCNZZG5SDIMBYGBRDEOLCGY2GIYJVHA4TONZYGA2DMM3FGMYH2

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

竟然真是,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编码。

3.flag

flag{6f1797d4080b29b64da5897780463e30}

8.john-in-the-middle

1.题目概述

2.解题过程

是一道流量分析题目

首先追踪流

TCP

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

那就导出试试

果然有些东西,save all看看

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

不过这个视频好像打不开

然后再010看一下

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

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

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

3.flag

flag{J0hn_th3_Sn1ff3r}

9.弱口令(hard)

1.题目概述

2.解题过程

名叫弱口令

判断加密方式

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

爆破试试

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

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

查看压缩包属性

再回过头仔细看看

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

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

摩斯密码

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

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

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

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

010看图片

并没有什么,stegsolve看看

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

接下来又是别人的解答

python脚本

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

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

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

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

常见的弱口令总结 - 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.题目概述

2.解题过程

base64隐写

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

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

脚本

很顺利

脚本如下(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.题目概述

2.解题过程

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

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

先去了解一下

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

HTTP

UDP

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

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

是个加密的zip,

判断伪加密

确实是

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

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

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

win rar修复

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

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

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

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

打开flag这个文件,看到flag

3.flag

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

12黄金6年

1.题目概述

2.解题过程

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

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

kinovea下载链接

Kinovea

逐帧分析

在75帧出现了一个二维码

继续看看,还有什么东西

148帧

246帧

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

扫描二维码

75帧

148帧

246帧

key1-key3连起来是 i want play

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

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

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

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

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

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

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

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

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

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

扫一下

获得key

key1-key3连起来是 iwantplayctf

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

base64编码

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

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

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

保存成rar

不知道为啥,他打不开,

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

解码方式(弯路)

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

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

010再试试

终于可以了

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

3.flag

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

13.间谍启示录

1.题目概述

2.解题过程

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

文档说明

在打开systemzx.exe时

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

点击运行试试看

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

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

3.flag

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

14.zip

1.题目概述

2.解题过程

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

先打开几个看看

那就是真加密了

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

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

利用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==

解码,保存下来

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

打开rar看到flag

3.flag

15.吹着贝斯扫二维码

1.题目概述

2.解题过程

打开flag.zip看看

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

去解解看

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

010打开一个看看

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

改后缀

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

可以顺利打开,很明显这是一张二维码的一小部分,可以猜想,把全部的文件后缀都改成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)

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

确认顺序

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

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

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

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

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

命名文件

可以利用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()	#先关闭文件才能重命名,否则

标签: 电子终端连接器dj7066xs618b4nal2传感器51对射光电传感器pz堆叠式卡连接器连接器q18j4aq18j5a连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台