Bugku杂项题目writeup

这里先放个连接:ctf.bugku.com

签到题

略……

这是一张单纯的图片


用文本编辑器打开发现 UTF-8编码

在线解码https://utf8.supfree.net/得到答案

隐写

下载后发现是个压缩包,

解压后得到一张图片,发现无法查看

猜测是修改了图片高度,用WinHex打开图片,将第二行6列“01”改为“11”

用画图打开发现flag

telnet

下载是个压缩包,里面是个流量包

用wireshark打开,追踪tcp流


拿到flag

眼见非实(ISCCCTF)

下载得到一个名称为zip且没有后缀的文件,加上zip后缀后发现里面有个docx文档

解压出来发现打不开,将后缀docx改为zip解压

打开word里面的document.xml

拿到flag

flag{F1@g}

啊哒

图片包含一个加密的压缩包,密码在文件属性详细信息的照相机型号里,需16进制转成字符。

又一张图片,还单纯吗

下载是又一张图片

拿进kali用binwalk扫描一下

接下来输入命令
dd if=2.jpg of=2-1.jpg skip=158792 bs=1

得到另一张图片,拿到flag

flag格式key{某人名字全拼}
下载得到一张图片

好像毫无头绪,反正我脸盲,不过偷偷告诉你百度有百度识图功能

Get flag

宽带信息泄露

flag格式:
flag{宽带用户名}
下载得到bin文件,用RouterPassView打开(RouterPassView是啥?自己百度)

搜索username

拿到flag

隐写2

下载得到一张图片

将后缀改为rar,解压出来flag.rar和 提示.jpg

flag.rar被加密查看提示,提示密码为三个数

这里可以用暴力破解

也可以解开谜题,三个国王分别指KJQ,在键盘上从左向右数序号分别为871
得到图片

emmmmm。。。好吧,不过感觉应该没错,离答案不远了
此时用文本编辑器打开图片,在最后发现类似flag

内容已被base64加密,解码得到flag
提交发现不对,修改下格式:flag{}

多种方法解决

在做题过程中你会得到一个二维码图片
下载得到一个zip文件,解压出来是个exe文件

用编辑器打开exe

发现是用DATA URL将图片生成了数据流形式
用在线的base64图片编码得到图片 http://www.atool.org/img2base64.php

在线二维码识别得到flag http://www.atool.org/qrcode-scan.php

闪的好快

分解gif,逐针扫二维码,一共18张,在线分解gif链接

come_game

玩一下,多了save1文件,用winhex打开,000132->000135,直接过关得到flag。

白色的鸽子

使用strings命令提取图片中的字符串,发现类似flag的字符串,可以看出应该是栅栏密码

重新排列得到flag

1
2
3
4
5
fg2ivyo}l{2s3_o@aw__rcl@

fg2ivyo}
l{2s3_o@
aw__rcl@

linux

linux基础问题
下载的到一个压缩包,解压出来一个flag的文件

用WinHex打开flag,搜索key找到flag

其他方法

将flag放到kali中,输入命令strings flag

拿到flag

中国菜刀

国产神器

下载得到一个压缩包,解压出来是流量包
用wireshark打开,因为是菜刀,猜测是http

追踪http流

将中间base64解码

1
QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7JEY9IkM6XFx3d3dyb290XFxmbGFnLnRhci5neiI7JGZwPUBmb3BlbigkRiwncicpO2lmKEBmZ2V0YygkZnApKXtAZmNsb3NlKCRmcCk7QHJlYWRmaWxlKCRGKTt9ZWxzZXtlY2hvKCdFUlJPUjovLyBDYW4gTm90IFJlYWQnKTt9O2VjaG8oIlhAWSIpO2RpZSgpOw%3D%3D

得到代码

1
2
@ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");$F="C:\\wwwroot\\flag.tar.gz";$fp=@fopen($F,'r');if(@fgetc($fp)){@fclose($fp);@readfile($F);}else{echo('ERROR:// Can Not Read');};echo("X@Y");die();
Ü

从代码里可以看出传输文件flag.tar.gz,前后还有字符“X@Y”,正是刚才追踪到的传输的数据:

最后一个http包,显示分组字节

解码为 压缩,显示为ASCII,开始于3,得到flag

其他方法

将流量包用binwalk分离

得到压缩包,解压得到flag文件夹里的flag.txt
得到flag

这么多数据包

这么多数据包找找吧,先找到getshell的流
下载文件后解压,用wireshark打开CTF.pcapng,发现有很多包,快速浏览后发现前面都是攻击机(192.168.116.138)在向目标机(192.168.116.159)进行端口扫描,再往后看到5542已经getshell,追踪TCP数据流,发现txt文件

对base64编码进行解密得到flag

隐写3

解压的到一张图片,发现无法打开
用WinHex打开,将第二行第6列改为11

用画图打开得到flag

做个游戏(08067CTF)

坚持60秒

下载jar,运行是个小游戏,

好吧,有点难度,我们还是来做题吧。。。
解压缩jar,

随便浏览了下,然后发现了flag


解码后得到flag

想蹭网先解开密码

flag格式:flag{你破解的WiFi密码}
tips:密码为手机号,为了不为难你,大佬特地让我悄悄地把前七位告诉你
1391040****
Goodluck!!

下载是个流量包,先用wireshark打开查看一下

WIFI连接认证的重点在WPA的四次握手包,也就是eapol协议的包,过滤一下。。。

刚好是四个包,
提示密码是手机号码,而且前7位已经给出
可以使用kali的crunch工具生成字典

1
Usage: crunch <min> <max> [options]

输入命令:

1
crunch 11 11 -t 1391040%%%% >>wifipass.txt


vi查看

接下来破解WiFi密码,这个时候需要用到kaili上的aircrack-ng这个工具
输入命令:

1
aircrack-ng -w wifipass.txt wifi.cap


选择3

拿到flag

Linux2

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

下载的到一个压缩包,解压得到一个文件,解法应该和Linux1一样,将文件放到linux下,
输入命令:

1
strings brave


发现这次内容非常多,而且key并不在最后,
此时可以将输出的内容生成txt文件
输入命令:

1
strings brave >>brave.txt


记事本打开查找key

拿到flag

账号被盗了

http://120.24.86.145:9001/
flag格式flag{QB充值卡密}
充值地址http://pay.qq.com/
一血有qb拿

打开网址

点击“Get flag”

此时使用burpsuite代理

得到下载地址

得到一个123.exe,点击打开

居然是个CF刷枪工具,仔细一想应该是个盗号程序。
随便填,然后准备提交,同时打开wireshark抓取流量

发现有邮件传输的流量,追踪一下tcp流

发现两个明显的base64编码,解码一下

是个163的邮箱以及密码
登陆后找到flag

细心的大象

下载是个zip文件,解压出来是一张大象的图片
先用binwalk扫一下

发现有东西,那么用参数e尝试分离,出来一个压缩包,不过需要密码

再次查看题目,并没有提示需要爆破,“细心”猜测密码需要自己去找
最终在图片的属性中找到base64编码

解码后输入密码成功解压,又是一张图片

和之前的一道题有点类似,所以用winhex修改高度,拿到flag

爆照(08067CTF)

flag格式 flag{xxx_xxx_xxx}
下载是一张动漫少女图片
拿进kali用binwalk扫一下先

这么多压缩包。。。
接下来用dd提取出来


88看到有张二维码
再次用binwalk扫描后发现,88、888、8888都有改动

将88图中的二维码扫描得到 bilibili
888在备注里看到base64编码

解码得到 silisili
8888里提取出图片

扫码得到 panama
根据提示 flag格式 flag{xxx_xxx_xxx}
得到flag

图穷匕见

图片下载后,先右键查看属性,有如下发现:

用16进制编辑器(如010editor)打开图片,找到jpg的文件尾FF D9,发现其后还有大量的数据

将之后的数据保存到txt中

将数据按16进制->ASCII方式解码,思路就很明显了,下图中使用的是notepad++中的插件Converter进行解码

解码结果如下,很明显是坐标的形式

这时候再结合会画图吗的提示,将这些坐标做成一张图即可,用gnuplot这个工具比较方便,因此将坐标转为gnuplot能识别的格式 坐标1 坐标2

在Linux中使用

1
2
gunplot
plot "文件名"


得到二维码

扫描后得到flag

convert

进制转换 8位的bit
写个py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import binascii
file1=open('1.txt')
s=file1.read()
file2=open('3.rar','wb')
s1=''

for i in range(0,len(s),8):
#print (type(int(s[i:i+8],2)))
if ((int(s[i:i+8],2))<= 15):
print(hex(int(s[i:i+8],2)))
s1=s1+'0'+hex(int(s[i:i+8],2)).replace('0x','')
print (s1)
else:
s1+=hex(int(s[i:i+8],2)).replace('0x','')

print (s1)
file2.write(binascii.a2b_hex(s1))

打开rar是个图片,用WinHex打开发现base64

解码得到flag

听首音乐

听首音乐放松放松吧~
下载地址:链接: http://pan.baidu.com/s/1gfvezBl 密码: y6gh
下载后试听了下发现只有右声道,用音频软件(GoldWave)打开发现摩斯电码

1
...../-.../-.-./----./..---/...../-..../....-/----./-.-./-.../-----/.----/---../---../..-./...../..---/./-..../.----/--.../-../--.../-----/----./..---/----./.----/----./.----/-.-.

解密后得到flag

好多数值

下载一看是一堆RGB数值,应该是要转成图片
去网上找了下Python RGB转图片的脚本,结果直接搜到原题了。
https://www.cnblogs.com/webFuckeeeer/p/4536776.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from PIL import Image

x = 503 #x坐标 通过对txt里的行数进行整数分解
y = 122 #y坐标 x*y = 行数

im = Image.new("RGB",(x,y))#创建图片
file = open('1.txt') #打开rbg值文件

#通过一个个rgb点生成图片
for i in range(0,x):
for j in range(0,y):
line = file.readline()#获取一行
rgb = line.split(",")#分离rgb
im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))#rgb转化为像素
im.show()

flag{youc@n'tseeme}

很普通的数独(ISCCCTF)

下载解压后一堆数独图片,把所有带数字的方框改成黑色

应该是是一张二维码,刚好是25张,5X5组合起来。

样子好像有点不对,这里需要把第1张、第5张和第21张互换位置,扫码得到base64值。

Base64多次解码得到flag

好多压缩包

打开一看里面一堆压缩包,都有加密过,这题需要用到CRC碰撞
找了网上大神写的Python2脚本,时间蛮长的。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import zipfile
import string
import binascii


def CrackCrc(crc):
for i in dic:
for j in dic:
for p in dic:
for q in dic:
s = i + j + p + q
if crc == (binascii.crc32(s) & 0xffffffff):
f.write(s)
return

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

dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt', 'w')
CrackZip()
f.close()

输出base64值

1
z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA==

解码后保存文本,用winhex查看

发现存在rar的文件尾C43D7B00400700,但缺少文件头,于是补上rar的文件头526172211A0700

在注释里发现flag

妹子的陌陌

下载是一张小姐姐的图片,先用Winhex打开看看

查找到rar文件头,可以看到下面还有个txt文件,这里直接修改文件后缀名,首先尝试改为rar无法打开,改成zip后即可打开。

然后提示输入密码,题目没有提示要爆破密码,想到之前的图片

momo.txt内容

摩斯电码解出来是个网站地址HTTP://ENCODE.CHAHUO.COM/
接下来是AES解密

网址http://c.bugku.com/momoj2j.png下下来一张黑白颠倒的二维码,解码得到flag

流量分析(cnss)

追踪http流,可以看到有个网址

访问发现用户昵称下有base64

两次解码得到flag,格式cnss{}

猫片(安恒)

原安恒2018年1月月赛题:喵喵喵 扫一扫
hint: LSB BGR NTFS
StegSolve打开,直接翻页是不行的,用Analyse下的Data Extract
保存为新的png文件
删除文件头FFFE,同时将008c改为0118
如图所示
QR Research扫码
下载是个flag.rar文件,此时用到最后一个提示NTFS
这是一种流隐写,需要用到工具ntfstreamseditor
将文件解压出来,注意必须用winrar解压才行,会有报错提示,没有关系。
用ntfstreamseditor工具扫描文件所在文件夹
得到pyc文件,在线python反编译地址:tool.lu/pyc/
得到脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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']

解码脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def decode():
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']
flag = ''
ciphertext.reverse()
for i in range(len(ciphertext)):
if i % 2 == 0:
s = int(ciphertext[i]) - 10
else:
s = int(ciphertext[i]) + 10
s = chr(i ^ s)
flag += s
return flag

a = decode()
print(a)

flag{Y@e_Cl3veR_C1Ever!}

2B

下载是一张图片,用binwalk分理处一张B2的图片,咋一看两张图完全一样,仔细看发现B2里有条纹状的水印,这是应该一种盲水印
工具下载地址:https://github.com/linyacool/blind-watermark(记得点☆哦)
使用工具需要Python2的opencv库
pip安装:pip install opencv-python
反变换解水印:decode.py --original B2.png --image 2B.png --result extract.png

多彩

先是LSB,里面有个压缩包,需要密码解开。
LSB低位隐写
其他通道有YSL的标记,而YSL是口红的一种牌子,所以密码和色号有关(出题人真是变态)小声)
通过取色器的对比,找到色号

1
1,27 ,59 ,11 ,23 ,7 ,57,1 ,1 ,76 ,222 ,1,1,50 ,214 ,6 ,77 ,50,53,214 ,6

紧接着将色号转为二进制数值,再转成字符串,得到解压密码

1
2
3
4
5
6
7
8
9
10
#coding:utf-8
#!/usr/bin/python
import libnum
a = [1,27 ,59 ,11 ,23 ,7 ,57,1 ,1 ,76 ,222 ,1,1,50 ,214 ,6 ,77 ,50,53,214 ,6]
aa =''
for i in a:
aa +=bin(i)[2:]
print aa
b = str(aa)
print libnum.b2s(b)

参考:
出题思路:Nu1LCTF/n1ctf-2018/Lipstick解题思路
libnum库安装及使用教程

旋转跳跃

先用音频文件打开没发现什么异常,试听的时候真是吓到我了。。。
再看一遍题目,发现提示key:syclovergeek,猜测可能是音频隐写,这个时候需要用到Mp3Stego工具。

payload
1
.\MP3StegoDecode.exe -X .\sycgeek-mp3.mp3 -P syclovergeek

普通的二维码

文件最后有一段数字,八进制转字符

1
2
3
4
5
6
7
8
9
10
f="146154141147173110141166145137171060125137120171137163143162151160164137117164143137124157137124145156137101163143151151041175"
flag=""
a=0

for i in range(42):
s=f[a]+f[a+1]+f[a+2]
flag+=chr(int(s,8))
a+=3

print(flag)

乌云邀请码

lsb隐写,三原色的零位左上角有点东西