本文记录一下BugkuCTF上Misc部分的前二十个题目。其他BugkuCTF的题目参见文末的链接。
$[timeformat('2019-03-13T11:55:44+08:00')]
#CTF#Misc

签到题

关注微信公众号:Bugku

关注即可。

这是一张单纯的图片

1.jpg

FLAG在哪里??

WinHex打开发现最后有HTML编码

解码即得

隐写

2.rar

下载pngcheck,使用以下命令检测crc校验:

pngcheck.exe -v 2.png

显示crc错误

先说一下PNG文件格式:

8字节:文件头,固定89 50 4E 47 0D 0A 1A 0A
4字节:数据块长度13,固定00 00 00 0D
4字节:图片实际宽度
4字节:图片实际高度
5字节:未知
4字节:crc校验

假设图片高度错误,使用脚本暴破:

import binascii
import struct

#\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xA4\x08\x06\x00\x00\x00

crc32key = 0xCBD6DF8A
for i in range(0, 65535):
  height = struct.pack('>i', i)
  #CRC: CBD6DF8A
  data = '\x49\x48\x44\x52\x00\x00\x01\xF4' + height + '\x08\x06\x00\x00\x00'

  crc32result = binascii.crc32(data) & 0xffffffff

  if crc32result == crc32key:
    print ''.join(map(lambda c: "%02X" % ord(c), height))

输出000001F4,即将图片的高度由000001A4改为000001F4:

telnet

http://123.206.87.240:8002/misc/telnet/1.zip

下载下来看到pcap后缀,抓包的格式,果断放到Wireshark里打开,找到其中一个telnet协议的数据帧,右键追踪TCP流,即可看到flag。

眼见非实(ISCCCTF)

https://ctf.bugku.com/files/919ee4ea1658c3e3ef8b59b67f298470/zip

下载下来用解压软件解压,得到"眼见非实.docx",但用Word并打不开。拿到Winhex下打开,看到文件头是“504B”,还是zip格式。

于是解压:

unzip 眼见非实.zip

看到很多文件,使用vscode打开全部文件搜索flag或者使用下面grep搜索:

grep -r "flag" ./眼见非实

啊哒

有趣的表情包
来源:第七届山东省大学生网络安全技能大赛

https://ctf.bugku.com/files/37b57dc545752a92fa6b2d571b88667a/1cdf3a75-21ed-4b91-8d49-1b348d44dcf.zip

解压zip文件,得到一个图片,打开并无异样,注意到文件属性-详细信息里一串可疑字符串:

看着像字符串转16进制,先hex解码一下得到:

sdnisc_2018

使用linux下的binwalk工具查看图片:

可以看到图片后还有一个zip文件,里面有一个flag.txt文件。使用foremost工具分离:

foremost ada.jpg

解压zip文件:

unzip 00000427.zip

提示输入密码,想到应该是刚才解码得到的sdnisc_2018,输入,得到flag.txt。

又一张图片,还单纯吗

http://123.206.87.240:8002/misc/2.jpg

好像和上一个有点不一样

直接使用foremost工具分离:

foremost 2.jpg

得到两张图片,第二张:

http://123.206.87.240:8002/misc/cai/QQ20170221-132626.png

flag格式key{某人名字全拼}

最简单的方法就是拿到百度/谷歌识图。

宽带信息泄露

flag格式:
flag{宽带用户名}

https://ctf.bugku.com/files/5986768ca8b96cead45aec16a88431b5/conf.bin

路由器配置文件使用文本编辑器无法打开,可以借助Windows下的RouterPassView软件。

隐写2

https://ctf.bugku.com/files/af49803469dfdabb80acf562f9381335/Welcome_.jpg

图片属性中有提示,但没明白什么意思:

直接在kali下使用foremost分离。

分离出一个无密码的zip压缩包。

其中图片打开是一段话依旧没看懂。

那就直接暴破吧,反正只有三位数字。

先是使用ARPR提示格式不是rar文件,使用file命令查看发现是zip文件。

file flag.rar 
flag.rar: Zip archive data, at least v2.0 to extract

那就使用ziperello,秒破,密码是871。

一通尝试之后使用winhex查看到flag。

后来经大佬提示,KJQ在键盘上对应上排的数字就是871...

多种方法解决

在做题过程中你会得到一个二维码图片

http://123.206.87.240:8002/misc/3.zip

解压得到一个exe,放到winhex下查看发现是一张base64编码的图片。

找个base64转图片的在线网站转换得到一个二维码,扫码即得。

闪的好快

这是二维码吗?嗯。。。是二维码了,我靠,闪的好快。。。

题目来源:第七季极客大挑战

https://ctf.bugku.com/files/6dcac03199e58749725cbcd9cc958a9b/masterGO.gif

windows可以正常打开,mac打开只有上半部分,用winhex打开可以看到二维码的高度值错误。

其中47 49 46 38 39 61是文件头,18 01和64 00分别是宽度和高度,单位是像素,把高度改成和宽度一样的值即可。

修改之后mac下可以直接看到18张二维码,windows下可以使用stegsolve里的framebrowser功能也可以逐帧查看/保存。

之后可以手动扫码,也可以利用 python批量扫码:

from PIL import Image
from pyzbar import pyzbar
import os
import sys

path = r'/Users/joe/Desktop/masterGO'

def decode_qrcode(image_path):
    if not os.path.exists(image_path):
        raise FileExistsError(image_path)

    return pyzbar.decode(Image.open(image_path), symbols=[pyzbar.ZBarSymbol.QRCODE])

def main():
    flag = ''
    filelists = (os.listdir(path))
    filelists.sort(key=lambda x:int(x[5:-4]))
    for i in filelists:
        image_path = path + r'/' + i
        s = decode_qrcode(image_path)
        f = s[0].data.decode("utf-8")
        flag += f
    print(flag)

if __name__ == "__main__":
    main()

这里注意如果不是windows,需要额外安装zbar的共享库:

#Mac OS X:
brew install zbar
#Linux:
sudo apt-get install libzbar0

come_game

听说游戏通关就有flag
题目来源:第七季极客大挑战

https://ctf.bugku.com/files/1c617f3d9fc3d909766e813ec28ca8c6/game_1.zip

解压得到一个exe的游戏,玩一次游戏生成两个文件,分别是save1和DeathTime,经尝试发现save1里的5-6字节代表目前关卡数,改为32即十进制的2,进入游戏载入存档即进入第二关,逐个尝试发现改为35即可得到flag。

但是被GAMEOVER挡住了,需要按一下r再截屏查看。

白哥的鸽子

咕咕咕

https://ctf.bugku.com/files/57c79d5b04e18a4bf8995d2721d76d5c/jpg

用winhex打开发现最下面有点像flag,但字符顺序不对,应该是被加密了。

通过看提示“咕咕咕”,应该是使用密钥为3的栅栏密码。

linux

http://123.206.87.240:8002/misc/1.tar.gz

linux基础问题

使用winhex打开看到文件里填充了很多空字符,猜想flag应该就在里面,需要查找出来。可以使用winhex里的功能,也可以使用linux命令:

grep '***' -a flag

搜了一下“flag”,没找到什么,又搜了一下“key”,发现flag:

隐写3

https://ctf.bugku.com/files/642a45bae2ceb406812acdd5ec327ce9/58d54bd3e134e.zip

解压得到一张图片,linux下无法打开,说明文件内字符错误,一般是宽高错误。

其中00 00 02 A7是宽度,00 00 01 00是高度。把高度改大一点,就看到了flag。

做个游戏(08067CTF)

坚持60秒

https://ctf.bugku.com/files/465585c655e201384823f64342cfd554/heiheihei.jar

使用java逆向工具打开,找到PlaneGameFrame.class文件,打开即可看到当坚持60秒时,出现flag。

想蹭网先解开密码

flag格式:flag{你破解的WiFi密码}

tips:密码为手机号,为了不为难你,大佬特地让我悄悄地把前七位告诉你
1391040**
Goodluck!!

https://ctf.bugku.com/files/77decd384a172b9a2294e6c6acfd48cc/wifi.cap

密码是11位纯数字,还给了前7位,那就用aircrack跑一下吧。先写个 python生成字典:

p = '1391040'
with open('pass.txt', 'w')as f:
    for i in range(10):
        for j in range(10):
            for k in range(10):
                for l in range(10):
                    f.write(p + str(i) + str(j) + str(k) + str(l) + '\n')

打开kali暴破:

Linux2

给你点提示吧:key的格式是KEY{}
题目地址:链接: http://pan.baidu.com/s/1skJ6t7R 密码: s7jy

解压后得到一个文件,使用file查看文件类型:

file brave

直接使用string命令搜索可打印的字符串里有没有KEY...

strings brave |grep KEY

账号被盗了

http://123.206.87.240:9001/

使用burp抓包找到有个cookie字段isadmin,将其值修改为true。

返回一个exe的链接。

下载并打开,是个cf刷枪精灵。开启wireshark,随便填写账号密码,并提交。

抓到一些tcp包,追踪流,得到如下信息:

将其中两段base64编码的字符串解码,可以得到一组账号密码:

YmtjdGZ0ZXN0QDE2My5jb20=
//bkctftest@163.com
YTEyMzQ1Ng==
//a123456

可以看到这是一个163邮箱账号,登录后看到满邮箱都是假flag...

所有BugkuCTF的题目:

BugkuCTF-Misc-1

BugkuCTF-Misc-2

BugkuCTF-Misc-3

BugkuCTF-Web-1

BugkuCTF-Web-2

BugkuCTF-Web-3


评论