仔细查看题目中的描述,我们的任务是找出0x22,0x44代表伤疤的两种细胞,这里应该是十六进制表示的“和D。下载题目文件,是个bmp图像,图像的底部有一行其它颜色的线,把图像放进010editor查看。可以发现有一部分连续的22和44的十六进制位。
这里的22和44有点像是二进制的组合,其中22代表1,44代表0,我们可以得到以下的二进制列。
0110110000101100000011000110110010011100101011000000110010000110101011000010110010001100000111000010110001000110001001101010110001100110101001100110110001000110011011001010011010101100010001100010110011000110101001100010110011001100000111001100110001001100
放进CyberChef后发现是乱码。
这里以为是思路出现了问题,但最后发现是需要对这一串二进制编码进行一个反转。
但是该字符串依然不是正确的flag,用前面同样的方法再对得到的字符串进行反转,最终得到我们的flag。
类型 | 图片隐写、字符编码 |
---|---|
工具 | 010editor、CyberChef |
Flag | flag{6406950a54184bd5fe6b6e5b4ce43832} |
题目内容太长了看了两遍也没咋看懂。首先下载题目文件,是四个不同的doc文件,直接打开会显示错误,显示”如果继续打开将显示乱码“。这里猜测是文件损坏了需要修复。
这里先选择A,把A文档放进010editor看看有什么特别的地方。很快就能发现文件头的一部分被改为了可读字符”IComeFromAlibaba“。这里把这一段全部改为FF就能够复原文件并正常打开了。
打开文件后发现是一段诗,仔细观察会发现整段诗不整齐,这里的原因就是每一行的行间距不一样。
我这里用的是WPS,WPS中,选中每一行然后右键选择”段落“可以查看行间距。这里查看每一行的行间距,把1.5倍行间距看作是1,1倍行间距看作是0,就可以得到一串二进制。
100100100001
这里用在线工具对其进行MD5加密,得到的小写加密值就是答案。
类型 | 文件修复、字符编码、文件隐写 |
---|---|
工具 | 010editor、在线工具 |
Flag | flag{d473ee3def34bd022f8e5233036b3345} |
一道拼图题,之前我们遇到过一模一样的题目。这里也是利用montage和gaps两个工具进行自动化拼图。两个工具都需要安装,安装可以参考这篇文章。安装后可以使用下列的指令进行自动化拼图。
#先把所有图片拼成一张完整的图片
montage -tile 10x12 -geometry 400x200+0+0 *jpg flag.jpg
#通过gaps迭代算法复原图片(有时候结果不理想可以调整generation和population参数的值)
gaps run flag.jpg solution.jpg --generations=40 --population=120 --size=200
下面是两个工具生成的结果。其中答案就在最终修复完成的图片上。
类型 | 拼图 |
---|---|
工具 | montage、gaps |
Flag | flag{Why_4re_U_5o_ShuL1an??} |
看题目就可以知道这道题目考的是sstv,sstv是一种用于传输和接收静态图像的通信技术,通常在无线电频段上进行。可以理解为一种特殊的加密方式,直接人耳听或者看频谱图是看不出什么信息的,需要借助特定的工具导出信息。这里我推荐一个在线解密工具。(https://sstv-decoder.mathieurenaud.fr/)上传题目的wav文件,decode,得到答案。
类型 | sstv |
---|---|
工具 | sstv在线解密工具 |
Flag | flag{6bdfeac1e2baa12d6ac5384cdfd166b0} |
就喜欢这种题目就提示考点的题。很直接,考察的就是VoIP。下载题目文件,是个pcap日志文件。用wireshark打开,不用管具体流量,直接通过上方工具栏中的“电话” - “VoIP通话”可以直接查看流量中的VoIP通话记录,这里看到有一条记录显示。
通过下方的“Play Stream”可以播放原通话,这里通话内容应该就是flag,可惜机器语速太快了有点听不清。可以借用一个在线工具,把通话内容转换为文字,有点类似微信中的语音转文字功能。首先在播放录音界面ctrlA全选录音,然后右下角导出。
导出后的文件上传到这个在线工具中。(https://www.speech-to-text.cloud/)得到的结果如下,转换为字母后就是答案。
[00:00:00]
Hi, this is second IBR service. Please press 1 to listen to the flag. Press 9 to exit.
[00:00:10]
The flag is S-E-C-C-O-N, open brace, 9-0-0-1-I-B-R, close brace. Only capital letters, no spaces are used. Thank you.
类型 | 日志分析、VoIP |
---|---|
工具 | wireshark、在线录音转文字工具 |
Flag | flag{9001IVR} |
题目文件是个未知类型的文件,没有文件后缀,放进随波逐流工具识别一下,发现是个XLS文件(其实这里也有可能是PPT文件,因为PPT和XLS都是这个文件头“d0cf11e0a1b11ae1”)。可以通过010editor进一步判断,先尝试改为XLS发现需要密码。
因为题目提示了需要hashcat,这里又存在密码,那这里大概率就是考点了,用hashcat爆破密码。在爆破之前,需要先把这个office文件的hash导出来,这里用kali自带的“office2john”工具。
office2john What\ kind\ of\ document\ is\ this_ > hash
输出的结果中,需要把前面的头部删除,最后只留下hash部分
原文件:
What kind of document is this_:$office$*2010*100000*128*16*265c4784621f00ddb85cc3a7227dade7*f0cc4179b2fcc2a2c5fa417566806249*b5ad5b66c0b84ba6e5d01f27ad8cffbdb409a4eddc4a87cd4dfbc46ad60160c9
只保留:
$office$*2010*100000*128*16*265c4784621f00ddb85cc3a7227dade7*f0cc4179b2fcc2a2c5fa417566806249*b5ad5b66c0b84ba6e5d01f27ad8cffbdb409a4eddc4a87cd4dfbc46ad60160c9
hashcat有很多种爆破模式,一般是通过字典爆破,这里先尝试4位数字。
hashcat -m 9500 hash -a 3 ?d?d?d?d -w 3 -O
最终爆破的结果是9919,就是密码。这里尝试打开XLS文件,发现文件错误,说明该文件不是XLS而是PPT,改成PPT后缀后就可以正常打开文件了。刚开始看都是空白的页面,在倒数第二页发现存在白色的字,改为其它颜色后flag就显示在上面。
类型 | 文件识别、密码爆破 |
---|---|
工具 | 随波逐流工具、office2john、hashcat |
Flag | flag{okYOUWIN} |
题目文件是个非常大的文件夹,其中包含多个大流量日志包。全部下载下来太费时间了,我这里只下载了第一个日志文件,先看看能否找到答案。
文件名:数据采集D_eth0_NS_20160809_164452.pcap
因为题目要求是找到攻击者的邮箱,所以尝试用wireshark打开该日志包然后查看IMF文件流。我们说到邮件一般先听到的是SMTP,这里SMTP一般指的是邮件的信封,而IMF是邮件的内容。在Wireshark的“导出对象”功能中,找到“IMF”选项并选择需要导出的数据包。可以发现有一个记录。
这个文件名就有点像是恶意文件,尝试一下,发现这个主机名邮箱就是答案。
类型 | 日志分析 |
---|---|
工具 | wireshark |
Flag | flag{xsser@live.cn} |
题目文件是个wav音频文件。通过Audacity打开文件。发现是一段有重复的PT224X信号,这种信号是一个常见的CTF音频类题目内容。关于常见的音频CTF题目改天我会专门写一篇文章。
这里的信号有长波和短波,总的来说,可以把细的看作0,粗的看作1。上面的音频数据可以进行转换。
音频数据:00111010010101010011000100011101001010101001100010
去掉重复部分:00111010010101010011000100
PT224X组成
钥匙信号(PT224X) = 同步引导码(8bit) + 地址位(20bit) + 数据位(4bit) + 停止码(1bit)
0 01110100101010100110 0010 0
这里的地址位就是答案。
类型 | 音频分析 |
---|---|
工具 | Audacity |
Flag | flag{01110100101010100110} |
下载题目文件,是个wav音频文件,放进Audacity没有发现什么线索。也不是LSB隐写。放进kali中尝试用steghide查看是否有隐写。默认无密码发现输出了一个文本文件。
文件内容:
https://share.weiyun.com/5wVTIN3
该链接能够下载一个png格式文件。但是该文件无法打开,放进随波逐流工具后发现是文件头不太正确。这里直接用随波逐流工具中自带的文件修复功能就可以修复成功了。
修复后的图片内容是一串Unicode编码,放进在线工具中解码得到一串数字。
\u0034\u0030\u0037\u0030\u000d\u000a\u0031\u0032\u0033\u0034\u000d\u000a
这两个数字并不是答案,这里想了半天没想出结果,看了一下别的师傅的wp发现结果就是加在一起,无语。。
类型 | 音频隐写、文件修复、字符编码 |
---|---|
工具 | steghide、随波逐流工具、在线转换工具 |
Flag | flag{5304} |
这又是一道音频题目,题目文件是个wav音频文件。题目的“spectogram”是个专有名词,翻译过来就是频谱图。那这道题就从频谱图入手。直接用Audacity打开这个音频文件,并通过左边的三个点转换为频谱图(不同版本的Audacity可能略有差异)。
通过这个频谱图,上面显然是有字的,但是这里的频谱太窄了看不清楚。这里直接用鼠标把频谱图手动拉长,就可以看到具体的字了。
类型 | 音频分析 |
---|---|
工具 | Audacity |
Flag | flag{sp3tr0gr4m0ph0n3} |
下载题目文件,是个pcap日志文件,用wireshark打开,发现大量的ICMP流量。
随便点击几个流量,发现所有的数据内容都是“$$START$$”开头,并且第一个ICMP数据流如下:
$$START$$-----BEGIN CERTIFICATE-----
有了这个开头,这里就合理猜测需要我们把所有的ICMP的数据都取出并拼在一起。这些数据都是由“$$START$$”开头。我们可以用tshark来导出所有字符并连接在一起,打开kali输入以下命令。
tshark -r out.pcap -Y "icmp.type==0" -T fields -e data.data | xxd -r -p | sed 's/^\$\$START\$\$//' | awk '!seen[$0]++' | tr -d '\n' > out.txt && echo "done"
结果就是前面提到的以“-----BEGIN CERTIFICATE-----”开头的字符串。把这个前缀去掉然后放进CyberChef中发现是个进行了base64编码的zip文件。这里进行解码并导出。
导出的压缩文件没有密码,其中包含了一个gif图片。
在电脑上查看的时候会明显感觉这个动态图片卡顿严重,一会慢一会快。但这个不是视频,gif的图片播放频率是初始化时设定好的,这里怀疑是通过频率隐写了什么东西,比如短间隔是0,长间隔是1。为了验证猜想,需要把每个图片之间的衔接间隔导出。用kali中的identify工具可以导出。
identify -format "%T " flag.gif && echo
虽然尾部有个6666但是先不管,把前面通过之前说的方式尝试转换为0和1。稍微改一下上面的语句就行。
identify -format "%T " input.gif | awk '{gsub(/66$/,""); gsub(/20/,"0"); gsub(/50/,"1"); print}' | tr -d ' ' && echo
输出的结果放进CyberChef中出现了下面的字符串。用在线工具把这个字符串改为md5加密形式就是答案。
类型 | 日志分析、字符编码、图片隐写、加密解密、 |
---|---|
工具 | wireshark、tshark、CyberChef、identify、在线MD5工具 |
Flag | flag{f0f1003afe4ae8ce4aa8e8487a8ab3b6} |
下载题目文件,是个pcap日志文件,用wireshark打开开始分析。由于数据量不小,先左上角通过导出对象查看不同协议下是否请求了特殊的文件,可以把每种类型都看看,这里也是发现FTP-DATA中有一个key文件。
这里可以下载这个key然后打开。这个开头有点像是TLS的密钥。
我们可以把这个密钥导入wireshark,看是否能够解密其它TCP流量。通过“编辑”-“首选项”-“Protocols”,然后找到TLS按照下面的方式增加RSA key。
确定并应用后发现果然多了很多HTTP数据,说明这个key就是TLS的私钥。这里我们就可以继续分析日志了。这里开始直接在数据流中搜索flag等关键词没有什么发现,就在过滤器中通过以下命令在 HTTP 协议的所有部分(包括请求头、响应头、请求体、响应体)中,搜索包含连续字符 “flag” 的数据包。
http contains "FLAG"
类型 | 日志分析 |
---|---|
工具 | wireshark |
Flag | flag{OkThatWasWay2Easy} |
抱歉各位,这段时间一直在外地出差,每天到酒店都凌晨了,今天终于回来了,后续更新进度会慢慢补充上的。
另外BUUCTF内的题目顺序是按照解题人数排的,部分顺序可能会随着人数的变动而变动,这次做的时候发现前面有些题目的顺序变了,大家认准题目名称就可以了。
前后大半个月没有做题,有点生疏了,看来还是要多练习。马上就国庆了,相对事情变少了,会把更多时间放在这上面,还有这半个多月缺漏的文章,近日会加快补齐。最后感谢大家支持。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。