Bugku Misc 1 (1-20)

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")

运行到得到的是个缺角的二维码

image-20211002160259565

做到这一步解决方法有很多,可以手动找一个定位角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()

image-20211002160839369

扫描二维码得到flag

flag{QR_c0de_1s_1nterest1n9}

4. easy_nbt

下载得到nbt文件,搜索得到为我的世界游戏的存档文件,下载对应的nbt explorer 搜索flag字段可以得到。

我的做法是将level.dat改为压缩包文件,在解压得到level,再用16进制编辑器打开,搜索字段就可以得到flag

image-20211005161541063

flag: flag{Do_u_kN0w_nbt?}

5.这是一张单纯的图片

下载附件得到file.jpg文件,用16进制编辑器打开,发现尾部有可疑字符串

image-20211002162546923

&#107;&#101;&#121;&#123;&#121;&#111;&#117;&#32;&#97;&#114;&#101;&#32;&#114;&#105;&#103;&#104;&#116;&#125;

Html Entity转码 得到flag

key{you are ritht}

6.隐写

下载附件得到2.png

image-20211002162914706

打开显示不正常,用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')

修改正确宽高 得到

image-20211004093254876

flag: BUGKU{a1e5aSA}

7.telnet

下载附件 得到一个pacpl流量包,用Wireshark打开,根据题目telnet,在搜索框过滤出telnet的流量,追踪该流

image-20211004094217110

发现Telnet的连接密码就是flag

flag : flag{d316759c281bf925d600be698a4973d5}

8.眼见非实

下载得到一个docx格式文件,打开报错

image-20211004094835717

将docx文件后缀改为zip,作为压缩包打开。

解压发现

image-20211004095749537

里面还是一层文件夹“眼见为实”,docx文档格式虽然实际是zip,但是解压缩后的xml文件应该在压缩包的第一层,而这里真正的word文件还在第二层的文件夹里,说明这个第二层文件才是真的word文件,解题方法有两种。

1.将这层真正的文件夹压缩回zip,然后在更改为docx格式,可以得到一个word文档。

显示隐藏字符:

image-20211004100241051

  1. 也可以直接在真的word文档那层文件夹里搜索关键字符串“flag” 或者“{”

    image-20211004100403011

显示在document.xml文件存在flag字符,

image-20211004100520074

flag: flag{F1@g}

9.啊哒

下载附件得到一张jpg文件,用exiftool 查看了一下文件属性信息,发现相机信息栏有一段16进制字符串image-20211004101827075

 73646E6973635F32303138

转为字符串为

sdnisc_2018

应该是一个密码,还没用到,继续分析。

binwalk 分析,发现图标隐藏一个zip文件

image-20211004102053196

binwalk -e 分离出压缩包,发现有密码。

image-20211004102206717

用刚刚找到的字符串解码,可以打开 得到flag.txt

image-20211004102229229

flag: flag{3XiF_iNf0rM@ti0n}

10. ping

下载附件得到ping.pacp 流量包 ,用wireshark打开 发现全是ICMP 请求包,点开包查看数据,发现数据部分只有第一个字节有内容,其他都是0,连续点开几条,合起来看,就发现了flag字段

image-20211004125859778

逐条提取 就可以得到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看一下是不是存在伪加密

image-20211004151209698

改为00 提示没密码,解药得到 txt文档,打开乱码

image-20211004151304101

用010editor 打开,看见很明显的PNG头

image-20211004151402349

修改伪png 格式后,图片显示正常。

image-20211004151509368

用Stegsolve 打开 看是否存在lsb 隐写,RGB 0通道发现隐写

image-20211004151740740

这里也可也使用zsteg 工具 一把梭

image-20211004151943212

flag: flag{Hel1o_Wor1e}

13.贝斯手

下载附件 解压得到

image-20211004152815566

flag.zip有密码,打开介绍.txt 在末尾找打提示

image-20211004152909351

女生剧照为古力娜扎 ,百度得到出生年份为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字段。

image-20211004165933617

提取出e6d3da86fe34a83bbfbdb9d3177a641,提交发现不对。在评论区中发现中间缺少一个15,1 序列。

image-20211004170105789

19,az 猜测 得到 为2,正确flag为

flag: flag{e62d3da86fe34a83bbfbdb9d3177a641}

15.可爱的故事

low题 没玩过原神,也不知道这个叫提瓦特文。

贴一个字母对比图,按 hint.txt 里面说flag为大兔子说的一句带bugku的话,找bugku对应的文字就行了。

image-20211004172133314

没意义的题。flag 直接抄吧

flag: bugku{iamlearningteyvatinbugku}

16.FileStoragedat

复现:

参考思路:https://blog.csdn.net/fi0stBlooder/article/details/118530327

下载附件得到一个dat后缀格式的文件,搜索得到这个是微信存储数据的一个文件夹,该文件加下存放的是经过加密后微信中发送、接受的图片而形成的文件后缀为dat的文件。

搜索找到以为大佬写的解密工具:https://github.com/PiaoZhenJia/WeChatDatFileDecoder

image-20211005160030084

使用工具,解密得到

image-20211005160110692

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。连续打开几个文档,发现内容为出师表,但是尾部都有填充字符。

image-20211005153338766

一开始的做法是把尾部填充的字符都摘取出来,看一下有什么规律,但是后面看了思路才知道,这个只是为了凑字数补充文档大小的。看思路得到是观察比较压缩前和压缩后的大小

image-20211005153945607

计算差值得到:75 101 121 58 90 104 117 71 76 64 64 46 48

看着很像ascii码,尝试解码:Key:ZhuGL@@.0

解压得到

image-20211005155151430

用16进制编辑器打开 搜索flag 得到 flag in here {LjFWBuxFNTzEWv6t2NfxjNFSH1sQEwBt5wTTLD1fJ}

这里还编码了,看着很像base家族的编码,逐个尝试,发现是base58编码。

编码得到flag

flag: bugku{th1s_1s_chu_Sh1_B1A0!!@}

18.又一张图片,还单纯吗

下载附件得到jpg文件,显示正常,binwalk 分析有多张jpg文件,但是binwalk 分离不出来。

image-20211005105432118

尝试用foremost 分离出两张图片

image-20211005105555161

其中一张为flag

image-20211005105620804

得到flag 为

flag{NSCTF_e6532a34928a3d1dadd0b049d5a3cc57}

19.猜

下载图片得到一张png图片,图片显示正常,但看起来头部上半部分被裁剪了。

file

根据题目描述,flag为人物名字全拼image-20211005110409433

直接百度识图 得到

image-20211005110522416

flag:  key{liuyifei}

20.宽带信息泄露

下载附件得到一个bin文件,题目描述 flag为宽带用户名,猜测文件网络或者路由器配置文件,尝试用binwalk 分离该文件,无果。搜索找到RouterPassView这款软件。

用软件打开View文件,全局查找关键字Username

image-20211005142907015

拿到用户名,得到flag。

flag: flag{053700357621}
原文地址:https://www.cnblogs.com/JhonnyLee/p/15368870.html