花了一些时间把bugku中的杂项题整理了一下,记录这些题目的解题思路,尤其是一般杂项中的一些套路
扫码
将图片下载到本地,使用winhex打开图片,在末尾有一组数据信息
key{you are right}
通过工具HTML解码,得到FLAG
下载2.rar,解压得到一张图片,首先放在winhex里看看
89 50 4E 47
PE头是png照片的,就是说没有可能照片中嵌入了Exif信息
在查看PNG文件格式时,IHDR后面的八个字节就是宽高的值
将图片的高改成和宽一样,即将A4改成F4,然后另存为
打开刚存的图片就可以得到FLAG了
将1.zip下载解压得到一个流量包文件,放到Wireshark中走一遍,因为提示的是telnet,所以使用规则显示telnet的包,然后追踪tcp流
在tcp流中就能直接看到flag
下载下来是一个文件的格式,放到winhex中,发现有50 4B 03 04
这是压缩文件的头,还有.docx
格式文件,应该压缩包里有一个文档,改文件后缀为.zip
,解压得到文档
得到眼见非实.docx
是打不开的,放到winhex中发现还是zip格式的文件
继续改后缀为.zip,然后解压得到一个文件夹
然后在word->document.xml
中找到了flag
拿到图片第一反应就是放到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图片
直接百度搜图或者Google搜图
flag格式:
flag{宽带用户名}
使用RouterPassView工具查看
下一步就是查找flag了,根据flag格式可以知道要找用户名,查找关键字username
使用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
提示:在做题过程中你会得到一个二维码图片
使用winhex打开,发现是一个base64转图片,所以先将后缀改为.txt,然后将base64编码为图片
直接扫码就可以得到flag了
放在linux下解压,然后得到一个flag二进制文件,使用linux命令查找关键字
[admin@localhost test]$ grep 'key' -a flag
解压得到一个数据包,放在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
提示: 这么多数据包找找吧,先找到getshell的流
刚开始一点一点看包,发现没有什么太有用的信息,从104行开始发现大量404,每个端口还不一样,就是说在进行端口扫描,提示是先找到getshell流,猜想最后肯定是getshell了,从最后一条往前翻,然后追踪流,找到了一个txt文件
将base64解密就得到flag了
解压看到一个大白的图片,感觉下半身被截断了呀,然后把图片放到winhex中,发现了IHDR头,后面八个字节代表宽高,宽和高分别占4个byte,那就老套路,将高改成宽的值
另存为,然后得到flag
放到jd-gui中得到java源码,审计代码,然后发现了flag,不过是base64加过密的
flag{RGFqaURhbGlfSmlud2FuQ2hpamk=}
然后自己解密即可
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
给你点提示吧:key的格式是KEY{}
题目地址:链接: http://pan.baidu.com/s/1skJ6t7R 密码: s7jy
用Notepad++打开发现里面有很多文件一样的东西,改后缀为.zip
然后使用7zip解压,在[SYS]文件夹中发现了Journal文件,使用Notepad++打开,有很多不同类型的文件,尝试提取没有成功
最后发现在解压文件中还有一个brave文件,使用txt打开,Ctrl+F关键字查找,得到flag
访问链接,使用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,这道题出的很有意思。
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
使用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}
查看图片属性
放到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
打开就是一片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=
使用audacity工具打开,发现是音频+摩斯密码
将摩斯电码记录下来(记录的时候一定要看仔细)
..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. ..-. ..... ..--- . -.... .---- --... -.. --... ----- ----. ..--- ----. .---- ----. .---- -.-.
摩斯解码,直接提交就ok
打开得到一个RGB值的txt文件,使用python的PIL库,生成图片得到flag
下载文件放到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
后面就得写脚本了,这个晚点弄
下载下来有将近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
解压提示错误,放到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
放到kali中使用binwalk提取,发现可能是一个rar压缩文件,改后缀解压
发现是需要密码的,密码就在图片上,解压之后得到
内容:http://c.bugku.com/U2FsdGVkX18tl8Yi7FaGiv6jK1SBxKD30eYb52onYe0=
AES Key:@#@#¥%……¥¥%%……&¥
根据AES Key 可以知道这个AES加密,将U2FsdGVkX18tl8Yi7FaGiv6jK1SBxKD30eYb52onYe0=
解密
http://c.bugku.com/momoj2j.png
下载下来使用stegsolve工具进行反色,得到flag
提示:第一层:CRC32 碰撞
第二层:维吉尼亚密码
第三层:sha1 碰撞
第四层:md5 相同文件不同
第五层:RSA
这题先留着,后面更新