Bugku Misc 1 (1-20)
1. 签到
扫码关注微信公众号Bugku,回复flag 得到flag
flag{BugKu-Sec-pwn!}
2.社工-进阶收集
先留着
3. 1和0的故事
下载附件得到一个txt文本文件,观察内容发现是一个25X25的01矩阵。可以联想到为一个25X25规格的二维码,0表示黑色方块,1表示白色方块。编写脚本转换:
from PIL import Image
x = 25
y = 25
im = Image.new('RGB', (x, y))
white = (255, 255, 255)
black = (0, 0, 0)
with open('1和0的故事.txt') as f:
for i in range(x):
ff = f.readline()
for j in range(y):
if ff[j] == '1':
im.putpixel((i, j), black)
else:
im.putpixel((i, j), white)
im.resize((500,500)).show()
im.save("1.jpg")
运行到得到的是个缺角的二维码
做到这一步解决方法有很多,可以手动找一个定位角PS上去,也可也将缺角处的01对换,也可也完善脚本直接添加定位角,脚本贴上:
from PIL import Image
with open("1和0的故事.txt", "r") as f:
data = [list(i.strip()) for i in f.readlines()]
# 7*7的定位标志
flag = [
[1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 1, 1, 0, 1],
[1, 0, 1, 1, 1, 0, 1],
[1, 0, 1, 1, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1]
]
img = Image.new("1", (25, 25))
for i in range(len(data)):
for j in range(len(data[1])):
# 左上角定位标志
if i < 7 and j < 7:
img.putpixel((i, j), flag[i][j] ^ 1)
# 左下角定位标志
elif i > 17 and j < 7:
img.putpixel((i, j), flag[i-18][j] ^ 1)
# 右上角定位标志
elif i < 7 and j > 17:
img.putpixel((i, j), flag[i][j-18] ^ 1)
else:
img.putpixel((i, j), int(data[i][j]) ^ 1)
img.resize((500, 500)).show()
扫描二维码得到flag
flag{QR_c0de_1s_1nterest1n9}
4. easy_nbt
下载得到nbt文件,搜索得到为我的世界游戏的存档文件,下载对应的nbt explorer 搜索flag字段可以得到。
我的做法是将level.dat改为压缩包文件,在解压得到level,再用16进制编辑器打开,搜索字段就可以得到flag
flag: flag{Do_u_kN0w_nbt?}
5.这是一张单纯的图片
下载附件得到file.jpg文件,用16进制编辑器打开,发现尾部有可疑字符串
key{you are right}
Html Entity转码 得到flag
key{you are ritht}
6.隐写
下载附件得到2.png
打开显示不正常,用16进制编辑器打开,显示CRC32报错,猜测宽高被修改过。
用脚本爆出正确宽高
import zlib
import struct
filename = '2.png'
with open(filename, 'rb') as f:
all_b = f.read()
crc32key = int(all_b[29:33].hex(),16)
data = bytearray(all_b[12:29])
n = 4095 #理论上0xffffffff,但考虑到屏幕实际/cpu,0x0fff就差不多了
for w in range(n): #高和宽一起爆破
width = bytearray(struct.pack('>i', w)) #q为8字节,i为4字节,h为2字节
for h in range(n):
height = bytearray(struct.pack('>i', h))
for x in range(4):
data[x+4] = width[x]
data[x+8] = height[x]
crc32result = zlib.crc32(data)
if crc32result == crc32key:
print("宽为:",end="")
print(width)
print("高为:",end="")
print(height)
exit(0)
爆出正确宽高
宽为:bytearray(b'x00x00x01xf4')
高为:bytearray(b'x00x00x01xf4')
修改正确宽高 得到
flag: BUGKU{a1e5aSA}
7.telnet
下载附件 得到一个pacpl流量包,用Wireshark打开,根据题目telnet,在搜索框过滤出telnet的流量,追踪该流
发现Telnet的连接密码就是flag
flag : flag{d316759c281bf925d600be698a4973d5}
8.眼见非实
下载得到一个docx格式文件,打开报错
将docx文件后缀改为zip,作为压缩包打开。
解压发现
里面还是一层文件夹“眼见为实”,docx文档格式虽然实际是zip,但是解压缩后的xml文件应该在压缩包的第一层,而这里真正的word文件还在第二层的文件夹里,说明这个第二层文件才是真的word文件,解题方法有两种。
1.将这层真正的文件夹压缩回zip,然后在更改为docx格式,可以得到一个word文档。
显示隐藏字符:
-
也可以直接在真的word文档那层文件夹里搜索关键字符串“flag” 或者“{”
显示在document.xml文件存在flag字符,
flag: flag{F1@g}
9.啊哒
下载附件得到一张jpg文件,用exiftool 查看了一下文件属性信息,发现相机信息栏有一段16进制字符串
73646E6973635F32303138
转为字符串为
sdnisc_2018
应该是一个密码,还没用到,继续分析。
binwalk 分析,发现图标隐藏一个zip文件
binwalk -e 分离出压缩包,发现有密码。
用刚刚找到的字符串解码,可以打开 得到flag.txt
flag: flag{3XiF_iNf0rM@ti0n}
10. ping
下载附件得到ping.pacp 流量包 ,用wireshark打开 发现全是ICMP 请求包,点开包查看数据,发现数据部分只有第一个字节有内容,其他都是0,连续点开几条,合起来看,就发现了flag字段
逐条提取 就可以得到flag,不嫌累的话,可以手动,这里贴一下提取脚本
# coding = utf-8
# --author:valecalida--
from os import system as get_hex
# 调用tshark时需要将tshark加入环境变量,且脚本需要与流量包在一个路径下
get_hex("tshark -r ping.pcap -Y "icmp && icmp.type==8" -T fields -e data > flag.txt")
f = open('flag.txt', 'r')
flag = ''
for line in f.readlines():
flag += chr(int(line[0:2], 16)) #line[0:2] 这个是从data部分开始算
print(flag)
f.close()
flag: flag{dc76a1eee6e3822877ed627e0a04ab4a}
11. Snowfall
不会 先留坑
https://blog.csdn.net/weixin_45696568/article/details/111413521
12.赛博朋克
下载附件 得到一个zip压缩包,但是解压提示要密码,用010Editor打开i看一下是不是存在伪加密
改为00 提示没密码,解药得到 txt文档,打开乱码
用010editor 打开,看见很明显的PNG头
修改伪png 格式后,图片显示正常。
用Stegsolve 打开 看是否存在lsb 隐写,RGB 0通道发现隐写
这里也可也使用zsteg 工具 一把梭
flag: flag{Hel1o_Wor1e}
13.贝斯手
下载附件 解压得到
flag.zip有密码,打开介绍.txt 在末尾找打提示
女生剧照为古力娜扎 ,百度得到出生年份为1992 与提示 申侯,闰年也对上了。
解压可以打开flag.zip,得到flag.txt,里面内容为
5+58==327a6c4304ad5938eaf0efb6cc3e53dcCFmZknmK3SDEcMEue1wrsJdqqkt7dXLuS
根据题目贝斯手,以及5+58 猜测58 为base58编码,前面的5 为MD5编码,分别解码
md5:327a6c4304ad5938eaf0efb6cc3e53dc ——> flag
base58:CFmZknmK3SDEcMEue1wrsJdqqkt7dXLuS ——> {this_is_md5_and_base58}
得到flag 为
flag: flag{this_is_md5_and_base58}
14.blind_injection
下载附件得到cap.pacp包,题目为blind_injection,题目提示盲注,注入一般为http,导出http对象,再按大小拍下,注入末尾发现flag字段。
提取出e6d3da86fe34a83bbfbdb9d3177a641,提交发现不对。在评论区中发现中间缺少一个15,1 序列。
19,az 猜测 得到 为2,正确flag为
flag: flag{e62d3da86fe34a83bbfbdb9d3177a641}
15.可爱的故事
low题 没玩过原神,也不知道这个叫提瓦特文。
贴一个字母对比图,按 hint.txt 里面说flag为大兔子说的一句带bugku的话,找bugku对应的文字就行了。
没意义的题。flag 直接抄吧
flag: bugku{iamlearningteyvatinbugku}
16.FileStoragedat
复现:
参考思路:https://blog.csdn.net/fi0stBlooder/article/details/118530327
下载附件得到一个dat后缀格式的文件,搜索得到这个是微信存储数据的一个文件夹,该文件加下存放的是经过加密后微信中发送、接受的图片而形成的文件后缀为dat的文件。
搜索找到以为大佬写的解密工具:https://github.com/PiaoZhenJia/WeChatDatFileDecoder
使用工具,解密得到
flag: bugku{WeChatwithSteg0}
17.where is flag 番外篇
复现:
思路来源:https://blog.csdn.net/fi0stBlooder/article/details/118632099
下载附件解压得到key.rar 和出师表.rar。其中,出师表rar是加密的压缩包,里面有一张PNG图片
key.rar里面有12个txt文档,猜测是通过这个12个txt文档获取key来解压另外一个压缩包。
解压得到12个txt文档,大小都是1kb。连续打开几个文档,发现内容为出师表,但是尾部都有填充字符。
一开始的做法是把尾部填充的字符都摘取出来,看一下有什么规律,但是后面看了思路才知道,这个只是为了凑字数补充文档大小的。看思路得到是观察比较压缩前和压缩后的大小
计算差值得到:75 101 121 58 90 104 117 71 76 64 64 46 48
看着很像ascii码,尝试解码:Key:ZhuGL@@.0
解压得到
用16进制编辑器打开 搜索flag 得到 flag in here {LjFWBuxFNTzEWv6t2NfxjNFSH1sQEwBt5wTTLD1fJ}
这里还编码了,看着很像base家族的编码,逐个尝试,发现是base58编码。
编码得到flag
flag: bugku{th1s_1s_chu_Sh1_B1A0!!@}
18.又一张图片,还单纯吗
下载附件得到jpg文件,显示正常,binwalk 分析有多张jpg文件,但是binwalk 分离不出来。
尝试用foremost 分离出两张图片
其中一张为flag
得到flag 为
flag{NSCTF_e6532a34928a3d1dadd0b049d5a3cc57}
19.猜
下载图片得到一张png图片,图片显示正常,但看起来头部上半部分被裁剪了。
根据题目描述,flag为人物名字全拼
直接百度识图 得到
flag: key{liuyifei}
20.宽带信息泄露
下载附件得到一个bin文件,题目描述 flag为宽带用户名,猜测文件网络或者路由器配置文件,尝试用binwalk 分离该文件,无果。搜索找到RouterPassView这款软件。
用软件打开View文件,全局查找关键字Username
拿到用户名,得到flag。
flag: flag{053700357621}