bugku - 杂项(misc)部分 writeup

花了一些时间把bugku中的杂项题整理了一下,记录这些题目的解题思路,尤其是一般杂项中的一些套路

1.签到

扫码

2.这是一张单纯的图片 1.jpg

将图片下载到本地,使用winhex打开图片,在末尾有一组数据信息

key{you are right}

这里写图片描述

通过工具HTML解码,得到FLAG

这里写图片描述

3.隐写 2.rar

下载2.rar,解压得到一张图片,首先放在winhex里看看

这里写图片描述

89 50 4E 47PE头是png照片的,就是说没有可能照片中嵌入了Exif信息

在查看PNG文件格式时,IHDR后面的八个字节就是宽高的值

这里写图片描述
将图片放在Linux下,发现是打不开的,说明图片被截了

将图片的高改成和宽一样,即将A4改成F4,然后另存为

这里写图片描述

打开刚存的图片就可以得到FLAG了

4.telnet 1.zip

将1.zip下载解压得到一个流量包文件,放到Wireshark中走一遍,因为提示的是telnet,所以使用规则显示telnet的包,然后追踪tcp流

这里写图片描述

在tcp流中就能直接看到flag

这里写图片描述

5.眼见非实(ISCCCTF) zip

下载下来是一个文件的格式,放到winhex中,发现有50 4B 03 04这是压缩文件的头,还有.docx格式文件,应该压缩包里有一个文档,改文件后缀为.zip,解压得到文档

这里写图片描述
得到眼见非实.docx是打不开的,放到winhex中发现还是zip格式的文件

这里写图片描述

继续改后缀为.zip,然后解压得到一个文件夹

这里写图片描述

然后在word->document.xml中找到了flag

这里写图片描述

6.又一张图片,还单纯吗 2.jpg

拿到图片第一反应就是放到winhex中,但这次的图片果然不单纯,那就放到kali中使用binwalk看看吧

# binwalk -e 图片路径
root@kali:~/桌面# binwalk 2.jpg

这里写图片描述

# foremost 图片地址
root@kali:~/桌面# foremost 2.jpg
Processing: 2.jpg
|*|
root@kali:~/桌面# ls
2.jpg  output
root@kali:~/桌面# cd output/
root@kali:~/桌面/output# ls
audit.txt  jpg

这时会在当前目录生成output文件,打开文件就可以看到一张flag图片

这里写图片描述

7.猜 QQ20170221-132626.png

直接百度搜图或者Google搜图

这里写图片描述

8.宽带信息泄露 conf.bin

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

使用RouterPassView工具查看

这里写图片描述

下一步就是查找flag了,根据flag格式可以知道要找用户名,查找关键字username

这里写图片描述

9.隐写2 Welcome_.jpg

使用winhex打开

这里写图片描述

可以看到图片嵌入了Exif信息,但是看属性没看到什么有用的提示,老方法放到kali里找

使用binwalk提取

root@kali:~/桌面# binwalk Welcome_.jpg

这里写图片描述

使用foremost分离

root@kali:~/桌面# foremost Welcome_.jpg
Processing: Welcome_.jpg
|foundat=flag.rarPK
foundat=提示.jpg��wP�_>�F�!"�t��4
                                   E��������CTZ��(Ho
B�w�j"]@D�t��@^Ha������������wv��3&yߜ�9���<�ɛ����<蜑��>�ȑ# �t8�=r�����؎���N;�v�䉓'����9�O�:}���Ӝ�Os�a���g�8Ϝ���'�����b�Μ:y������;���Q��zlG$@G���q9�
*|

打开output文件,里面有一个zip文件

解压之后得到一个提示.jpg和一个flag.rar,根据提示和人名可以知道密码扑克牌中的KJQ有关,又是三个数字,根据键盘发现字母和数字之间的关系,k->8,J->7,Q->1,得到密码是871.使用ARCHRP软件暴力破解也可以,解压得到3.jpg,放到winhex中查看。

这里写图片描述

f1@g{eTB1IEFyZSBhIGhAY2tlciE=} 

base64解码,得到y0u Are a h@cker!

这里写图片描述

提交时将fl@g改为flag

10.多种方法解决 3.zip

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

使用winhex打开,发现是一个base64转图片,所以先将后缀改为.txt,然后将base64编码为图片

这里写图片描述

这里写图片描述

直接扫码就可以得到flag了

11.linux 1.tar.gz

放在linux下解压,然后得到一个flag二进制文件,使用linux命令查找关键字

[admin@localhost test]$ grep 'key' -a flag

这里写图片描述

12.中国菜刀 caidao.zip

解法一

解压得到一个数据包,放在wireshark中,既然是菜刀,那么就专门找http协议的

查看第一个http

这里写图片描述

将base64解码得到一段代码

@ini_set("display_errors","0");@set_time_limit(0);if(PHP_VERSION<'5.3.0'){@set_magic_quotes_runtime(0);};echo("X@Y");$D='C:\\wwwroot\\';$F=@opendir($D);if($F==NULL){echo("ERROR:// Path Not Found Or No Permission!");}else{$M=NULL;$L=NULL;while($N=@readdir($F)){$P=$D.'/'.$N;$T=@date("Y-m-d H:i:s",@filemtime($P));@$E=substr(base_convert(@fileperms($P),10,8),-4);$R="\t".$T."\t".@filesize($P)."\t".$E."\n";if(@is_dir($P))$M.=$N."/".$R;else $L.=$N.$R;}echo $M.$L;@closedir($F);};echo("X@Y");die();

发现好像没法用,继续往下找,在第四个http中发现了一句话

这里写图片描述

那么flag应该在连上菜刀之后,查找下一个http包

将base64字段的内容解密,得到代码,发现传输了一个flag.tar.gz文件

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

查看最后一个http数据,显示该包对应数据分组字节

这里写图片描述

把前后的“X@Y”删去,解码为压缩格式

这里写图片描述

得到flag

解法二

解压之后得到一个数据包caidao.pcapng,放到wireshark中然后追踪TCP流,发现flag.tar.gz

这里写图片描述

使用binwalk提取

root@kali:~/桌面# binwalk caidao.pcapng

这里写图片描述

然后打开_caidao.pcapng.extracted里面有一个压缩文件,解压得到flag.txt

这里写图片描述

13.这么多数据包 CTF.pcapng.zip

提示: 这么多数据包找找吧,先找到getshell的流

刚开始一点一点看包,发现没有什么太有用的信息,从104行开始发现大量404,每个端口还不一样,就是说在进行端口扫描,提示是先找到getshell流,猜想最后肯定是getshell了,从最后一条往前翻,然后追踪流,找到了一个txt文件

这里写图片描述

这里写图片描述

将base64解密就得到flag了

14.隐写3 58d54bd3e134e.zip

解压看到一个大白的图片,感觉下半身被截断了呀,然后把图片放到winhex中,发现了IHDR头,后面八个字节代表宽高,宽和高分别占4个byte,那就老套路,将高改成宽的值

这里写图片描述

另存为,然后得到flag

15.做个游戏(08067CTF) heiheihei.jar

放到jd-gui中得到java源码,审计代码,然后发现了flag,不过是base64加过密的

这里写图片描述

flag{RGFqaURhbGlfSmlud2FuQ2hpamk=}

然后自己解密即可

16.想蹭网先解开密码 wifi.cap

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

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

1391040**
Goodluck!!

首先放到wireshark查找,发现很多802.11协议,然后百度了一下802.11具体是啥,然后wifi认证的话重点是在WPA的四次握手,也就是eapol协议的包,使用规则过滤

这里写图片描述

使用python编写生成一个字典,然后将字典和流量包放到kali中

Python代码:

# w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写
# w+ 是读写内容,只要沾上w,肯定会清空原来的文件 
with open('wordlist.txt','w+') as f:
    for i in range(0,10):
        for j in range(0,10):
            for k in range(0,10):
                for h in range(0,10):
                    f.write('1391040'+str(i)+str(j)+str(k)+str(h)+'\n')

f.close

使用aircrack-ng跑一下

root@kali:~/桌面# ls
wifi.cap  wordlist.txt
root@kali:~/桌面# aircrack-ng wifi.cap -w wordlist.txt
Opening wifi.cap
Read 4257 packets.

   #  BSSID              ESSID                     Encryption

   1  3C:E5:A6:20:91:60  CATR                      No data - WEP or WPA
   2  3C:E5:A6:20:91:61  CATR-GUEST                None (10.2.28.31)
   3  BC:F6:85:9E:4E:A3  D-Link_DIR-600A           WPA (1 handshake)

Index number of target network ? 3

这里写图片描述

17.Linux2 brave.zip

给你点提示吧:key的格式是KEY{}

题目地址:链接: http://pan.baidu.com/s/1skJ6t7R 密码: s7jy

用Notepad++打开发现里面有很多文件一样的东西,改后缀为.zip然后使用7zip解压,在[SYS]文件夹中发现了Journal文件,使用Notepad++打开,有很多不同类型的文件,尝试提取没有成功

这里写图片描述

最后发现在解压文件中还有一个brave文件,使用txt打开,Ctrl+F关键字查找,得到flag

这里写图片描述

18.账号被盗了

访问链接,使用burpsuite抓包,修改Cookie,右键->Send to Repeater->go

这里写图片描述

将123.exe下载下来,打开是一个CF刷枪软件

这里写图片描述

使用wireshark抓包,账号密码随便填写

这里写图片描述

这里写图片描述

220 smtp.qq.com Esmtp QQ Mail Server
EHLO DESKTOP-V3FM06D
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
AUTH LOGIN
334 VXNlcm5hbWU6
YmtjdGZ0ZXN0QDE2My5jb20=
334 UGFzc3dvcmQ6
YTEyMzQ1Ng==
535 Error: ..........................: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
QUIT
221 By

账号: YmtjdGZ0ZXN0QDE2My5jb20=

密码:YTEyMzQ1Ng==

将base64解密得到163邮箱,将密码解密是a123456,登录邮箱就可得到flag,这道题出的很有意思。

这里写图片描述

19.细心的大象 1.jpg.zip

flag格式 flag{xxx_xxx_xxx}

解压得到1.jpg图片

查看属性,发现有一段base64加密内容

这里写图片描述

解密得到明文,这应该是密码之类的,先放着

这里写图片描述

MSDS456ASD123zz

将照片放到winhex中去,首先发现的是图片属性的信息

这里写图片描述

正常的.jpg图像文件的前12字节16进制数是

FF D8 FF E0 00 10 4A 46 49 46 00 01

但是这个没有,所以将图片改成zip后缀,放到kali中,使用binwalk提取,foremost分离

root@kali:~/桌面# binwalk 1.zip

这里写图片描述

在output文件中发现了一个rar文件,解压需要密码,之前查看属性的时候解压出来的信息派上用场了,没错,它就是解压密码,在Linux下解压没法显示图片,在Windows下解压图片可以正常显示,说明图片被截了,使用winhex打开,使用老套路将高的值改成宽的值

这里写图片描述

将A4改成F4,然后另存为,即可得到flag

这里写图片描述

20.爆照(08067CTF) 8.jpg

使用winhex打开,有很多8的信息,还不知道是啥

这里写图片描述

放到kali中使用binwalk看到内容挺多

这里写图片描述

使用foremost分离,真的是这么多文件。。。。gif图里的二维码没法扫

这里写图片描述

将这些文件一个一个binwalk,发现有三个文件是被修改的图片

这里写图片描述

88->(扫描)->bilibili

888->(右键属性)->(c2lsaXNpbGk=)base64解码->silisili

8888里面还有一个zip压缩包,修改后缀为zip,解压得到一个二维码->扫描->panama

而且flag的格式是flag{xxx_xxx_xxx},gif提示排序,那就按顺序排在一起,使用”_”隔开,得到flag

flag{bilibili_silisili_panama}

21.图穷匕见 paintpaintpaint.jpg

查看图片属性

这里写图片描述

放到010Editor中去,图穷flag见,就是说flag在图片的末尾,找到jpg的文件尾FF D9,发现后面还有很多数据

这里写图片描述

将FF D9和前面的数据删除,将剩余的另存为txt文件,使用Notepad++打开

这里写图片描述

数据按16进制->ASCII方式解码,步骤:插件->Converter->(HEX->ASCII),解码之后得到类似于坐标一样的信息

这里写图片描述

提示还说了会画图吗,把这些坐标绘成一张图,用gnuplot工具绘图,gnuplot能识别的格式 坐标x 坐标y

使用脚本将(),替换掉

with open('paintpaintpaint.txt','r') as file:
    fw = open('paintpaintpaint1.txt','w')
    while 1:
        lines = file.readlines()
        if not lines:
            break       
        for line in lines:
            fw.write(line.replace('(','').replace(')','').replace(',',' '))

file.close
fw.close

然后将paintpaintpaint1.txt放在kali中使用gnuplot工具绘图

root@kali:~/桌面# ls
paintpaintpaint1.txt
root@kali:~/桌面# gnuplot

    G N U P L O T
    Version 5.2 patchlevel 2    last modified 2017-11-01 

    Copyright (C) 1986-1993, 1998, 2004, 2007-2017
    Thomas Williams, Colin Kelley and many others

    gnuplot home:     http://www.gnuplot.info
    faq, bugs, etc:   type "help FAQ"
    immediate help:   type "help"  (plot window: hit 'h')

Terminal type is now 'qt'
gnuplot> plot "paintpaintpaint1.txt"

这里写图片描述

扫码得到flag

22.convert 1.txt

打开就是一片01,冷静一下之后想了想,convert是转换的意思,那就将二进制转一下,转成16进制

with open('1.txt','r') as file:
    erlist = file.readlines()
    fw = open('2.txt','w')
    fw.write(hex(int(str(erlist)[2:len(str(erlist))-2:],2)).replace('0x',''))

file.close
fw.close

将十六进制复制到winhex中(ASCII Hex),可以发现rar!,说明这是一个rar压缩文件

这里写图片描述

另存为1.rar,打开压缩包,里面有一张图片,但是并没有key

这里写图片描述

放到UE中,发现一段base64,复制下来解码就ok

这里写图片描述

ZmxhZ3swMWEyNWVhM2ZkNjM0OWM2ZTYzNWExZDAxOTZlNzVmYn0=

这里写图片描述

23.听首音乐 stego100.rar

使用audacity工具打开,发现是音频+摩斯密码

这里写图片描述

将摩斯电码记录下来(记录的时候一定要看仔细)

..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. ..-. ..... ..--- . -.... .---- --... -.. --... ----- ----. ..--- ----. .---- ----. .---- -.-.

摩斯解码,直接提交就ok

这里写图片描述

24.好多数值 1.txt

打开得到一个RGB值的txt文件,使用python的PIL库,生成图片得到flag

25.很普通的数独(ISCCCTF) zip

下载文件放到winhex中,发现PK头,将文件后缀改成.zip,得到25张图片,我还以为让我做数独题呢,使用5*5的格式查看这25张图片,这尼玛是一张二维码,而 1、5、21这三张图是二维码的三个角,通过工作室大佬的提醒,这三张顺序是有问题的

这里写图片描述

将位置掉换好了之后,把有数字的格式用0表示,没有数字的格式用1表示

这里写图片描述

变换之后,只想吐槽这题太坑了

000000010101010111010111110000001111010000000
011111010011000010101100010011100110110111110
010001010001100000101100000010111010110100010
010001010010011101110101111100001110010100010
010001011100011011110000010000000100010100010
011111010011011111100111011110001011110111110
000000010101010101010101010101010101010000000
111111111100110010110111001011001100011111111
001100011011011110000000011011010111111010000
010110110100000000010001010100001010010110011
011111000011011011111001110010110010101110101
110011101100101110101100111011111101001101111
101001010101110000001011100010110001010010000
011100111011100011000100010010011010010001110
110011001011111111101101111000011010010100101
010111110100101000001100100000010110001011100
001000001000100110010011101011110001111011111
001010111101010111100010010010001010010110011
101100000001110101000101110111100100010010011
100110100110101010011100001010110011110101101
101000000000010100000000010010010000000000011
100001110011111011110111010111011011011100001
000001010001100011000101001011001011010101101
001101110100010100010111000011111100011101111
010100000100011000010000000011110101000001101
001011100111000111011000010010000010111011101
000010000001110110111100101001110000001000001
100110101010111001101011101110111010010101110
100010001010010010011011110010010111000010110
001001110110010011101010010000001011010011001
111100011000111111111011110101010000011101101
000101101100001100010001101011110100000101101
010110011101000000001011111011110101010101011
111101100110110010001010110000011010000010010
111101000010001110010100111110111010001011001
100001100101011101011111100100111110001101111
011001011011110010000000010011010001000001100
111111110000001010010111010100011011011100101
000000011100000100100101010010001100010100001
011111010001010010010111000001101110011101110
010001010100011110000000010010110111000000100
010001011001000010010111110110010011100010010
011111010100110100000100110100111100101001111
000000010101010110000100000010010001111010010

后面就得写脚本了,这个晚点弄

26.好多压缩包 123.zip

下载下来有将近68个压缩包,而且每个压缩包都加了密,刚开始以为是zip伪加密来着,放到winhex中发现不是,也想过使用zip爆破,但是不知道密码长度和组成类型,爆破起来难度有点大,最后想到crc32爆破,写CRC32爆破脚本也是一头雾水,不过在网上看到了一个大牛的脚本(原文0x06 CRC32碰撞),所以用脚本试了试,因为我用的是python3,所以脚本做了一些改动,下面是我略微修改之后的脚本

import zipfile
import string
import binascii

def CrackCrc(crc):
    for i in dic: #迭代的不是值而是键(key)
        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

得到的是base64编码之后的字符,使用base64解码,将解码结果复制到记事本,使用全局替换\x

这里写图片描述

这里写图片描述

cf 90 73 00 00 0d 00 00 
00 00 00 00 00 aa 3e 7a 
00 80 23 00 49 00 00 00 
54 00 00 00 02 86 34 ab 
fe 6b 63 1d 49 1d 33 03 
00 01 00 00 00 43 4d 54 
09 15 14 cb dd 41 4f 95 
24 48 d3 e8 8f 98 45 11 
51 41 46 f7 9f 1d 20 42 
7c 6d 2b b8 69 ca 9f 28 
2c 33 28 fc 48 16 99 1f 
1b 18 1d 8f 38 2c 46 76 
e1 c5 ed 67 4d 72 de 4d 
4a d5 82 74 be 92 bd 1f 
0a 94 cd be ae f7 3f 22 
80 4a f7 74 20 90 2d 00 
1d 00 00 00 1d 00 00 00 
02 62 d1 e7 d5 4f 63 1d 
49 1d 30 08 00 20 00 00 
00 66 6c 61 67 2e 74 78 
74 00 b0 34 69 66 66 69 
78 20 74 68 65 20 66 69 
6c 65 20 61 6e 64 20 67 
65 74 20 74 68 65 20 66 
6c 61 67 c4 3d 7b 00 40 
07 00 

根据flag.txt可以知道这是个压缩包,而且需要我们修复文件才能得到flag,将base64解码之后的文件复制到winhex中,发现有rar文件的文件尾C4 3D 7B 00 40 07 00,还存在一个名为CMT的文件,即注释

这里写图片描述

先保存为rar文件,然后使用UE打开,插入十六进制,补上rar的文件头52 61 72 21 1A 07 00,然后保存,打开压缩包得到flag

这里写图片描述

这里写图片描述

27.一个普通的压缩包(xp0intCTF) zip.rar

解压提示错误,放到winhex中发现是zip的文件头pk,改后缀为zip,解压

这里写图片描述

得到两个文件flag.txt和flag.rar,不过flag.rar打开报错secret.png文件头损坏,使用WinRAR的修复功能没有修复成功

这里写图片描述

这里写图片描述

使用winhex打开,发现rar文件头和尾都是正常的,查看各个文件的文件头,然后进行修复

这里写图片描述

解压得到一个空白的png图片,放到winhex中,发现这是一张gif图片,另存为gif后缀

这里写图片描述

使用stegsolve工具打开,然后在 Gray bits找到二维码的下半截,只有半截也没法扫描呀,继续找上半截

这里写图片描述

使用gifsplitter工具发现这个gif是两帧,并将gif分离,使用stegsolve工具打开这两张图片

这里写图片描述

这里写图片描述

然后使用PS将两张图拼起来,再使用左下角的将上面两个角补齐,扫码得到flag

这里写图片描述

28.妹子的陌陌 momo.jpg

放到kali中使用binwalk提取,发现可能是一个rar压缩文件,改后缀解压

这里写图片描述

发现是需要密码的,密码就在图片上,解压之后得到

这里写图片描述

内容:http://c.bugku.com/U2FsdGVkX18tl8Yi7FaGiv6jK1SBxKD30eYb52onYe0=
      AES Key:@#@#¥%……¥¥%%……&¥

根据AES Key 可以知道这个AES加密,将U2FsdGVkX18tl8Yi7FaGiv6jK1SBxKD30eYb52onYe0=解密

这里写图片描述

http://c.bugku.com/momoj2j.png

下载下来使用stegsolve工具进行反色,得到flag

这里写图片描述

29.就五层你能解开吗 Challengs%EF%BC%9ACryptography+500.7z

提示:第一层:CRC32 碰撞

第二层:维吉尼亚密码

第三层:sha1 碰撞

第四层:md5 相同文件不同

第五层:RSA

这题先留着,后面更新

  • 17
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值