bugku题解记录

Flask_FileUpload

看题目的意思,大概是文件上传攻击。
题目页面也只有上传文件查询
那么查看源代码
发现只能上传png或jpg,注释里说如果你上传之后,将会用python执行查询
所以编辑文本文档,写代码

import os#提供了与操作系统交互的各种函数,我们可以通过这些函数调用计算机底层操作系统的部分功能来快速、高效地管理文件和目录
os.system('ls /')#显示根目录下文件

改为png格式,上传,查看源代码,获得根目录下文件
有一个flag文件
修改文本文档

import os
os.system('cat /flag')#一次显示整个文件:cat filename

修改为png,上传,获得flag

easy_nbt

nbt文件是mc的数据格式,通常以.dat文件的形式存在于游戏存档文件夹中,可以通过第三方工具(如NBTExplorer)对其进行编辑和修改。
如果用kali的binwalk查看就会知道,这个文件夹下的level.dat文件是gzip格式的,用binwalk提取一下就可以获得压缩前的内容,获得flag
如果没有binwalk也可以压缩完再解压,用记事本打开,搜索也能找到flag

留言板

题目提示了xss平台,不过我这里收不到,所以用了评论区里的另一种方法:
dirsearch扫网站目录,找到一个admin.php
至于密码嘛……评论区给的,我也没扫到数据库文件
接着登录管理员账号,控制台输入alert.(document.cookie),获得cookie
flag%7Bfd2d84454f7b49f9308d202a467409a4%7D
转义一下花括号
(我的xss能力还得精进一下啊)

抄错的字符

根据题干,2可能抄错为Z,5可能抄错为S,6可能抄错为B,9可能抄错为G
不过解出来也不是“一段话”
根据有字母有数字的规律,联想到base64
在字符串后面加‘=’,替换里面的字母大小写或数字
经过base64编码后的字符串长度一定会被4整除(包括后缀等号)
每四个字符一组解码,可以试出答案
Aman_very_cool
当然写个代码直接转换更快……

这是一张单纯的图片

一看这个标题就知道这张图片不单纯哈
文件里只有一张图片
那想必是隐写术了
winhex查看文件头尾,发现神秘代码
key{you are right}ÙÙ
一看就是unicode哈
转换为ASCII就是:
key{you are right}
评论区还有更邪的办法,改扩展名为html,直接就能看到答案哈哈哈,直接给unicode编码转换了。属于未卜先知了

隐写

图片题

  1. 看文件属性,没啥线索
  2. 010 editor/winhex看文件头尾,搜索flag,正常
  3. 看CRC是否被篡改

评论区大佬表示:

使用winhex或者010editor打开图片,查看文件头、文件尾是否有问题,没有的话再看长宽是否需要修改(本题需要将长宽修改成一致,0x1f4,高度改更大点也没事任意),以及crc是否被篡改。以上都尝试一遍基本可以解决图片格式上的问题。

这里我们可以运行一下010 editor官网的PNG模板,看看有没有什么报错
官网模板链接
果然有:
*ERROR: CRC Mismatch @ chunk[0]; in data: cbd6df8a; expected: c758d77d
这里可能的两个原因:

  1. CRC错误,可以按照建议修改CRC大小
  2. 图片长宽错误
    修改CRC大小无果,我们需要修改图片长宽
    根据CRC大小获得图片长宽脚本:
import os
import binascii
import struct

crcbp = open("2.png", "rb").read()    #打开图片
for i in range(2000):
    for j in range(2000):
        data = crcbp[12:16] + \
            struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if(crc32 == 0xcbd6df8a):    #图片当前CRC
            print(i, j)
            print('hex:', hex(i), hex(j))

根据脚本运行结果,将高改为F4
果然图片下方出现了结果

原理见这个博客

我们可以发现计算出来的CRC校验值为:C758D77D。和图片里本身的CRC校验值“CBD6DF8A “不否。那么问题则出现在IHDR数据库这一部分。那么这么多位的值我们怎么去判定到底是哪一位出了问题呢?此时可以根据物理像素尺寸数据块数据来查看,即pHYs。我们看如下图所示:第一处标红的”00 00 00 09“为物理像素尺寸数据块的长度。第二处标红的”70 48 59 73“为数据块类型标志,对应的ASCII码值等于pHYs。接下来蓝色的部分表示x轴上每米像素数量00001274和y轴上每米像素数量00001274(解题关键点)。绿色的”01“表示meter=1,单位定义为”每米“的意思,后面的绿色标识为CRC值。
我们发现x轴和y轴的像素应该是一样的,换句话说,这个图片的比例应该是正方形。此时我们把上述的高420像素值改为500。即”A4“改为”F4“,再次查看图片,找到flag。

眼见非实

如果打开一个文档文件(如.docx、.xlsx、.pptx等)时出现了以"PK"开头的内容,那么很可能是因为该文件实际上是一个压缩包(ZIP格式),而不是一个常规的文档文件。这是因为Microsoft Office文件使用了Open XML格式存储,这种格式本质上是一个XML文件和一些资源文件的打包。 该压缩包中包含了文档的各个组成部分,例如文本、图片、图表、样式等。如果你将该文件改名为.zip后缀然后解压缩,你将能够看到这些文件和文件夹。 这种设计使得Office文件更加灵活和可扩展,允许用户以压缩包的方式对文件进行管理和修改。但这也导致了某些情况下以"PK"开头的内容的出现。

因此打开眼见非实.docx文件后,发现开头有PK
将文件改为zip格式
挨个文件搜索flag
虽然在document.xml中搜索到了

Flag</w:t></w:r><w:r><w:t>在这里呦!

但结合题目描述可知,答案是flag{}形式的,再搜索下一个,获得flag:flag{F1@g}

同时,用010 editor看眼见非实.docx的文件头,可以发现是zip的文件头:50 4B 03 04
也可以用binwalk对文件进行拆分,一样的

当打开文件后的内容与常规不一样后,可以尝试往文件拆分的思路走。判断文件是否被合并过可以使用kali中的file命令

同时把文件夹整个放在vscode里就可以在整个文件夹的文件里搜索flag了,不用一个一个翻

telnet

下载的是一个pcap格式的文件
使用wireshark打开,既然题目叫telnet就一条一条查telnet呗
直到翻到内容为flag{d316759c281bf925d600be698a4973d5}的telnet

啊哒

图片题

  1. 第一步看属性,有一个相机型号73646E6973635F32303138,挺奇怪哈
  2. 然后再010 editor看看文件头尾,还运行了一下jpg模板,没输出什么错误。接着搜索了一下flag,嗯?搜到了一个flag.txt
    好小子还有别的文件是吧
  3. binwalk提取文件,看看是不是真的有,果然啊,有一个flag.txt
  4. 用foremost提取,或者直接把文件后缀改成.zip,解压得到flag.txt
  5. 打开flag.txt,有密码。试试属性里那串相机型号。嗯……不对……这串密码还得经过什么变换呢?
  6. 看起来像十六进制字符串哈,那转换一下ascii试试。嘿,转换出来是sdnisc_2018
    成了,打开flag.txt,得到flag

图片题常规思路,逐个试:1.右键属性看一遍 2.binwalk看一遍 3.foremost分离 4.winhex看下十六进制起始和结尾 5.stegsolve查看 6.校验crc值,修改图片高度

/.-

看题目就知道是摩斯密码
直接搜一个摩斯密码转换器转换即可
我是得到了转换密码flag----.–d3fcbf17f9399504-----.- ,不通过后,直接把----.–、-----.-替换为{}试了试,直接成功了
评论区给出了更详细的解题思路

首先利用摩斯密码进行解码,将/全部替换成空格,得到密码后,发现有%u7d,%u代表16进制,7b对应十进制下的123,ascii值为123的符号是{,后边相同,即可得到flag,注意将字母全部小写

聪明的小羊

一看就是栅栏密码
fa{fe13f590lg6d46d0d0}
fa{fe13f590
lg6d46d0d0}
flag{6fde4163df05d900}

ok

打开全都是Ook
搜Ook的时候联想词出现了一个ook密码
嘿,看一看

BrainFuck和Ook主要是对程序源代码进行加密,是将源码中的指令替换成替他符号,这种密码我们只需了解,认出即可

有一个专门的解密网站可以用ook解密
哇,直接得到了答案
评论区说Ook! 是一种用猩猩声音表示代码的编程语言,哈哈哈好好玩

[±<>]

刚才查Ook的时候看到了,Brainfuck使用<>±.,[]这八种符号来替换c语言的语法和命令
在线解密链接
直接获得答案

ping

下载后得到一个pcap文件,用wireshark打开
全是icmp包,打开第一个看看
怎么除了一个f之外,都是00啊
打开下一个看看,除了l都是00
这下知道了,一个包里一个flag的字符
然后……一个一个抄下来(好笨的办法

把猪困在猪圈里

在末尾有=,并且有大小写字母和数字,可能是base64编码
直接解码——是乱码
看形式也不太像普通的base64转换ascii,同时题目提示看起来像猪圈密码,说不定转换结果是图片嘞
查资料发现base64是可以与图片互换的
那就找一个转化器base64图片转换
得到了猪圈密码
猪圈密码在线转换
转换一下,得到flag

你喜欢下棋吗

下载获得一个加密的flag.txt和一个解压密码提示
根据题目,确定这个是棋盘密码
棋盘密码加解密
获得flag.txt解压密码
打开后,提示flag是一种5bit的编码
搜索后找到一个baudot code博多密码
博多密码在线转换

小山丘的秘密

提示是hill能有什么秘密呢
希尔密码哦
打开下载文件,有一个flag文件和一张图片。flag图片提示A=1开始的,希尔密码需要密钥,那么就得从图片文件中看出
那么一个图片上,一个棋子代表a,两个棋子代表b,三个棋子代表c,没有棋子代表z,四个棋子代表d,五个棋子代表f,六个棋子代表g
密钥为
abc
zad
fgz
希尔密码在线转换
得到flag

en气泡

题目提示了,是bubble编码
同时bubble编码的特征是x开始,x结尾

bubble编码:一种将二进制信息表示为由元音和辅音交替组成的伪单词的编码方法

加解码工具
第一次解码,得到的还是x开头x结尾元辅音交替的编码,再解码
第二次也是
解码三次,获得明文

贝斯手

一张图片,一个加密的flag.txt,一个介绍文档
介绍文档里说的啥没懂,看看图片吧
属性没啥,图片更改高度后也没啥,图片也没有隐藏其他文件
搜了一下wp,给我气歪来,原来介绍文件最下面是提示……又长又白又细,指的是文件是吧
下次用vscode打开会好很多
根据提示搜索获得flag文件解压密码1992
得到了:
5+58==327a6c4304ad5938eaf0efb6cc3e53dcCFmZknmK3SDEcMEue1wrsJdqqkt7dXLuS
前面是没有大写字母的,后面是有大写字母的
嘶 看wp是md5+base58
搜了一下base58

Base58是用于比特币(Bitcoin)中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。
相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+“和”/"符号。

base58加解密

分别对前32位md5解码,后32位base58解码,获得flag
flag{this_is_md5_and_base58}

当然,遇到压缩包也可以直接爆破
参考这个博客

你以为是md5吗

提示说md5的构成
查查
md5中的字符都是a-f、0-9构成的,所以把不符合的删咯
md5解码
获得flag
评论区有更完整的思路

打开文件放到notpad++发现是一串35字节的字符(常见并没有这个长度的加密),通过题目提示”md5的构成“,想起来md5由”0-9和a-f“构成,再细致一点去查看文件信息,除去三个不在范围内的字符得到32位md5加密值,解密即可得到flag

看字符串长度这个想法好啊

blind_injection

盲注

SQL盲注的流量题,这种题目一般有两种解法,一种是手工,另一种是利用脚本跑出flag

wireshark打开pcap文件,里面有http流量,也有tcp流量,盲注是基于http的,只需要看http流量就行
文件-导出对象-HTTP
前面在试有多少位数,盲注语句

id=1' and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))=67

一共67位
后面在爆破表名

id=1' and substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1)='a'

爆破第一位的语句如上,从a爆破到e,然后去爆破第二位了,所以认为e时返回了不一样的结果
返回主页,在上方输入http,过滤http流,看看第一位爆破e时的响应包
a-d时,响应763,e时,响应764
那看来是764相应包时盲注成功
盲注爆破数据流,哪个字符是成功的呢?

一般都是响应包字节不同或者是同一序号中的最后一个才是正确的字符

67位呢,一个一个记不合适,用脚本吧
脚本来自这个大佬

#文件流过滤目标类型:
#?id=1'%20and%20substr((select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()),52,1)='f'%20--+ HTTP/1.1

import re
 
#用列表存放过滤出来的http请求
text=[]
 
with open(r"cap.pcap","rb") as f:
    for i in f.readlines():
        if b"?id=1'%20and%20substr((select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database())" in i:
            text.append(i.strip())
f.close()
 
#利用字典配合正则提取正确盲注的字符
flag={}
for i in text:
    try :
        num = int(re.search(br"database\(\)\),(\d+),1\)",i).group(1).decode())      #匹配序号
        str = re.search(br"1\)='(.|\n)'%20--\+ HTTP/1.1",i).group(1).decode()       #匹配字符
        flag[num] = str                                                             #过滤错误的字符
    except:
        pass
 
#输出
for i in flag.values():
    print(i,end="")

但是这个题好像有点问题,flag第三位应该是3,答案里是2,想不通。

filestoragedat

下载下来是一个名为kali.dat的文件
dat文件没什么统一的结构,就是数据文件,取决于使用这个文件的软件的数据读取规则
010 editor打开文件,搜了一下,能搜到flag,但binwalk分不开
卡了
看标题,filestorage……很眼熟
查了查,这不就是微信存储数据的文件夹吗!
查了下别人的wp

wp

FileStorage是微信存储数据的一个文件夹,该文件夹下存放的是经过加密后微信里发送、接受的图片而形成的文件后缀为dat的文件。就是微信dat文件。想要做出此题,就得先弄懂微信dat文件形成的原因
微信的dat文件,将微信图片的各字节通过异或运算后,保存为dat后缀名存储方式。

所以文件前两个字节是17CE,那么原图片的文件头和17CE异或得到的两个字节应该相等
拿各种图片的文件头与17CE异或,最后发现png图片的文件头和17CE异或之后得到9E9E,说明原图是和9E异或得到的dat文件
只要把dat文件所有的自己和9E异或,就可以得到原图
新知识,学到了
脚本跑不起来……最后用了大佬写的工具
github下载然后bin\debug\WpfApp1.exe
下载解压即可
这两个都能用,第一个速度快一点

where if flag番外篇

这题脑洞真的大……服了……
下载下来是一个压缩包,里面两个压缩包,出师表.rar里是一个加密图片,那就去看另一个key.rar找解压密码
key.rar里都是txt文件,里面是出师表的原文,分成了n多个文件,原文后面还有字母AAAAAAAA这种的
看字母没看出什么,对比原文也没看出什么
搜wp才知道,是压缩包里各个文件的 原始大小减去 压缩后大小,拼接成 ASCII 码
所以说那些神秘字母是为了凑大小
这谁想得到啊!!!
353-278=75
284-183=101
315-194=121
238-180=58
331-241=90
351-247=104
316-199=117
247-176=71
246-170=76
283-219=64
283-219=64
123-77=46
125-77=48
这些数字的结果都在ascii范围里,所以解码
得到出师表.rar解压密码Key:ZhuGL@@.0
接下来就是图片题了
用010editor打开图片,显示crc错误,直接修改crc却显示crc超出范围
改图片长宽也无果
直接搜索flag,倒是搜到了
flag in here {LjFWBuxFNTzEWv6t2NfxjNFSH1sQEwBt5wTTLD1fJ}
直接提交是错误的
那就得再解码
有大小写和数字,先试试base64
解不出来
那再试试base58
解出来了!

Math&English

问我会不会数学和英语
然后文件打开都是数学题
那我都算一遍呗
算完了,最开始以为结果是英文字母对应的序号,结果有33,54这种的
那和26求余呢?解出来的也没什么意义,也不通过
看wp才知道还有一种元音密码

【加密原理】
在英语的26个字母中有5个元音,分别是:A、E、I、O、U。把这5个元音按顺序编号,A 对应1,E对应2,I对应3,O对应4,U对应5。
A到E中间有B、C、D三个辅音,就分别对应为11、12、13。E和I之间有F、G、H三个辅音,因为E对应的是2,F、G、H就分别对应为21、22、23,以此类推。

确实解出来的数字都是一位或两位数,而且每一位都是1-5之间的数字
对照密码表算一下,得到flag
在这里插入图片描述

再也没有纯白的灵魂

题目是周杰伦的一首歌,歌词就是

自人类堕落为半兽人 我开始使用第一人称 记录眼前所有的发生 嗜血森林醒来的早晨 任何侵略都成为可能 我用古老的咒语重温 吟唱灵魂序曲寻根

so 下载文件,获得一串~嗷呜……(省略n个BUGK)……啊
看了评论区才知道原来还有一个兽音密码

兽音密码加解密
兽音密码只有呜嗷啊和~四个字符,结合文件里的BUGK,可以猜测是把呜嗷啊~替换成了BUGK
因此需要知道BUKG和呜嗷啊~的对应关系
答案应该以flag开头(或者bugku),而且给出的字符串就有~嗷呜,所以试试加密flag
获得flag的兽音密文

~呜嗷嗷嗷嗷呜啊嗷啊呜呜嗷呜呜~嗷嗷~啊嗷啊呜嗷嗷~嗷~嗷~呜呜嗷呜啊啊

bugku兽音密文

~呜嗷嗷嗷嗷呜啊嗷呜呜呜嗷呜呜~呜~嗷啊嗷啊呜嗷嗷嗷啊~嗷~呜呜嗷啊啊嗷嗷嗷呜啊呜啊嗷啊

开头是一样的啊
那就好办了,一一对应就好了
嗷-B 呜-U
然后bugku前面的那串里只有嗷呜,和下载字符串不符,下载的里面有G和K
但是缺一个啊,剩下的基本相符
暂且认为是flag开头的,那么啊=G,~=K
在响应的位置补个啊
把字母全部替换,得到兽音密文
解密得到flag

easy_hash

下载下来是两个文件,一个python脚本,代码是把flag文件转换成md5输出
第二个就是输出的md5文件
python脚本:

import hashlib
from multiprocessing import Pool#进程池

def compute_md5(char):
    md5_flag = hashlib.md5(char.encode())
    return md5_flag.hexdigest()

if __name__ == '__main__':
    with open('flag', 'r') as flag_file:
        content = flag_file.read()
        chars = list(content)
        
        with Pool() as pool:
            md5_results = pool.map(compute_md5, chars)#map函数会把第二个参数一个一个出啊到第一个参数里,第一个参数是进程需要引用的函数
        
        with open('output', 'w') as output_file:
            for result in md5_results:
                output_file.write(result + '\n')

所以……一个一个拿去解密
要是能写脚本就好了

import hashlib
import string

md5_list = {}
for c in string.printable:
    m = hashlib.md5(c.encode())
    md5_list[str(m.hexdigest())] = c

with open('output', 'r') as file :
    for line in file:
        line = line.split('\n')[0]
        if line in md5_list:
            print(md5_list[line], end='')

百度识图-刘亦菲,直接得到答案

宽带信息泄露

下载下来是一个conf压缩包,里面是conf.bin文件,也就是配置文件
搜索宽带 bin文件,结果都是如何查看路由器备份出来的bin文件
然后答案里推荐了一个工具
查看路由器配置文件

这个工具是一个路由器宽带密码查看恢复软件,它能够帮助你找出路由器里保存的宽带拨号帐号密码(PPPoe拨号)、路由器的管理密码、WiFi连接密码等等

用工具打开conf.bin文件,果然得到了文件内容
提示说flag是宽带用户名
搜索username,获得flag

多种方法解决

下载下来是一个exe文件,但不能运行
放进010editor中试试
文件开头是

data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAAIUAAACFCAYAAAB12js8AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAArZSURBVHhe7ZKBitxIFgTv……

描述里说会得到一个二维码图片
那就是base64转图片
可以用这个工具
base64转图片
也可以用前面猪圈密码的那个在线转换

come_game

说是游戏通关就可以拿到flag,但是太难了打不过!
看看能不能修改文件吧
打开游戏之后就多了一个deathtime文件和一个save1文件
应该是死亡次数和存档
删存档重新玩,看看会有什么变化
发现save1在打第一关的时候有个1,打第二关的时候有个2
尝试给改成3
再进游戏果然就是不一样的关卡了
那就接着往下改
一直改到第五关,flag就出来了
评论区还有大佬给了个游戏反编译工具
游戏反编译工具

白哥的鸽子

下载下来是一个图片,打开之后也没看出什么
看属性没看出什么
用010editor看看
文件头没啥
文件尾……嘿看起来是flag欸

fg2ivyo}l{2s3_o@aw__rcl@

栅栏密码吧
fla
g{w
22_
is_
v3r
y_c
ool
}@@
得到flag

linux

提示是linux基础问题
文件下载下来是一个gz压缩文件
那就放linux里看看呗
解压得到一个flag文件
用file flag看一下是什么类型的文件

Linux rev 1.0 ext3 filesystem data

第三代Linux文件扩展系统文件
用cat flag显示一下flag的文件内容
很多哈
提示里说答案是key{}
嗯……那……再用strings | grep命令搜一下文件里有没有key吧
strings flag | grep key
真的搜到了
strings | grep命令
当然,直接010editor里读也行
不过做题还是要按照考点做

easy_crypto

下载下来是01串
想不到什么思路
看别人的wp

一般对于二进制密码,考虑异或、转进制、转编码等

不过,这一串01串里,长短不一,还只有0和1两个编码
能联想到的只有摩斯密码了
摩斯密码加解密
可以直接输入这段01串转换,得到flag

富强民主

还有这种加密方式啊 第一次知道
社会主义核心价值观加解密

split_all

下载是一个png图片
看属性没啥信息
打开,图裂了
拖进010editor里,运行png.bt报错
嗯……
文件头是png的,看看文件尾,不是png

JPEG (jpg)文件头:FFD8FF;文件尾:FF D9
PNG (png)文件头:89504E47;文件尾:AE 42 60 82
GIF (gif) 文件头:474946383961;文件尾:00 3B
TIFF (tif)文件头:49492A00
XML (xml)文件头:3C3F786D6C
HTML (html)文件头:68746D6C3E
Adobe Acrobat (pdf)文件头:255044462D312E
ZIP Archive (zip)文件头:504B0304;文件尾:504B
TAR (tar.gz)文件头:1F8B0800
RAR Archive (rar)文件头:526172211A0700 C43D7B00400700
Wave (wav)文件头:57415645
AVI (avi),文件头:41564920
MS Word/Excel (xls.or.doc)文件头:D0CF11E0
Adobe Photoshop (psd)文件头:38425053 Windows Bitmap (bmp) 文件头:424D

看了一下,是GIF的文件尾
题目是分离所有的 所以是分离帧?
那就把gif头补全吧
看到了GIF文件头的后半部分 38 39 61
那就把前面PNG的部分删掉,补成GIF的
并且把文件名修改成gif格式
改完之后打开一看,这啥玩意啊
but还是先分离一下看看吧
发现了一个在线分离gif的网站
在线分离gif帧
这个好
然后把帧分解出来后,真的显示了flag
但是太难看清了,文字识别一下
在线图片转文字

闪的好快

下载文件是一个gif,打开之后是好多个二维码闪来闪去
随便扫一个
嘿,扫出来是一个字符
结合题目,那就不让它闪了,都给我分离!
用上一题的那个在线分离gif的网站,把所有帧分离出来
18张二维码啊……
修改了一下其他wp的脚本

from pyzbar.pyzbar import decode
from PIL import Image#导入相关库
import os

img = Image.open('masterGO.gif')#打开gif图片
i=0
try:
    while True:
        img.seek(i)#读取gif图片每一帧
        img.save('./'+str(i)+'.png')#png为后缀保存gif在当前目录
        i=i+1
except:
    pass

dir=os.listdir('./')#读取当前目录下的所有文件
#dir.remove('qr2.py')#当前目录下应该是有自己的python脚本和gif动图的,把他们从列表中删除
dir.remove('masterGO.gif')
#dir.sort(key=lambda x:int(x.split('.')[0]))#这里使用sort函数和Lambda表达式做到从小到大读取png
file_format="png"
for num in range(0,i):
    decocdeQR = decode(Image.open("{}.{}".format(num,file_format)))#扫描每张png中的二维码
    print(decocdeQR[0].data.decode('ascii'),end="")

可以直接拼接得到扫码结果

放松一下吧

下载下来是两个包,一个需要密码才能解压,另一个叫放松一下获得password吧
行,那就先看这个
是一个iwanna游戏
难死了不会玩,放松不了一点,看看能不能改游戏存档
第一关貌似不行啊,打开save文件啥都没有
手残,根本跳不上去
好不容易过了第一关
存档数据发生了变化,多了一个2
把关卡改成3
然后按r回到存档点就会得到解压密码happy_i_wanna

然后解压得到一个图片和一个txt文件,文件中说

password:🐭🐭🐭🐭🐭🐭🐭🐭
贝斯的老大也可以解这个问题
键盘上什么可以刷新呢

贝斯的老大-base有16、32、58、64、85、91、100
那老大就是base100呗
base家族
解码得到password:66666666

010editor打开那个图片,开头就是

AJPEG Encoder Copyright 1998, James R. Weeks and BioElectroMech.

搜了一下

早期F5算法总插入 “JPEG Encoder Copyright 1998,James R.Weeks and BioElectroMech”, 而普通图像编辑器几乎不会插入这条信息

正好结合上提示的最后一句:键盘上什么能刷新呢——f5
f5隐写工具
用该语句提取即可

java Extract 你需要刷新\你需要刷新.jpg -p 66666666

会输出一个output.txt里面就是flag

逆向入门

逆向入门,但是misc
下载下来是exe,但不能执行
010editor看一手
欸 base64编码的图片
转出来是二维码
怎么和【多种方法解决】一样啊……

simple MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议 上,由IBM在1999年发布。

用wireshark打开包
搜索flag
中间一直在寻找flag,最后的包显示找到flag了

/game/flag/find_flagth1s_1s_rar_p@ssw0rd

这不是在说这是rar的密码吗
那rar在哪?
联想到之前的找flag的过程中间,有两个包的值为

526172211a0701003392b5e50a01050600050101808000597b62d05d02033cb00004a6002073a10fe780030010666c61675f69735f686572652e747874300100030f17f69e4634a29347a81d0d9d379bec15d4c6c6c0dc85da4401b6192e03c639bae9ae8c2120ef8b93160855850a0302aa1f181e4ad8d70197fa95c70fd8084ee40579c7f99a91074ef0a9639880df0411126ed5c146bc11b1984e922c547be3a2fe07ac071651281d77565103050400

rar的文件头就是52 61 72 21
那我们用这个十六进制串构建rar文件
在010editor里新建文件 ctrl+shift+v把十六进制串复制进去
保存为rar
真的打开了
要密码,把前面那个密码输进去
得到了flag

请攻击这个压缩包

zip已知明文攻击
参考了这个博客
针对zip已知明文攻击,需要

至少已知明文的12个字节及偏移,其中至少8字节需要连续。
明文对应的文件加密方式为ZipCrypto Store

使用工具bkcrack
bkcrack
bkcrack安装教程

  1. 下载bkcrack
git clone https://github.com/kimci86/bkcrack.git
  1. 安装cmake
pip install cmake
  1. 在bkcrack路径下
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=install
cmake --build build --config Release
cmake --build build --config Release --target install

至此,bkcrack安装成功
bkcrack的参数主要有:

-c 提取的密文部分
-p 提取的明文部分
-x 压缩包内目标文件的偏移地址 部分已知明文值
-C 加密压缩包
-o offset -p参数指定的明文在压缩包内目标文件的偏移量

好,开始做题
题目下载下来的压缩包里面是png文件
按照上面的博客的教程,我们只要提供png文件头作为明文即可
进入install路径下,并把压缩文件放在该路径下
创建png的文件头为png_header

echo 89504E470D0A1A0A0000000D49484452 | xxd -r -ps > png_header

执行zip已知明文攻击

 time ./bkcrack -C flag.zip -c flag.png -p png_header -o 0 >1.log&

把爆破进度存到1.log文件里
查看爆破进度

tail -f 1.log

六分多钟,获得了压缩包密码

Keys
92802c24 9955f8d6 65c652b8

用压缩包密码解密

./bkcrack -C flag.zip -c flag.png -k 92802c24 9955f8d6 65c652b8 -d flag.png

得到flag.png

密室逃脱

挺好玩的

  • 第一关是摩斯密码
    直接网页转换
    xjpc
  • 第二关图片。可以看到横向错位了
    修改一下jpg图片的宽度
    010editor可以通过运行JPG.bt模板,然后右键跳转到模板变量
    点开struct SOFx
    里面的WORD Y_image是高
    WORD X_image是宽
    这里我们先修改一下宽
    获得wifi密码
  • 第三关
    给了一个百度网盘,用第二关得到的密码前4位当作密码,获得指示
    其实有010editor的不用下载文件夹里提供的010editor(大概
    然后按照指示,再次修改图片的宽高
    获得解压密码
  • 第四关
    里面又一个压缩文件和一个文档
    打开文档,提示更换字体颜色
    找到压缩文件的密码
    解压,得到福尔摩斯小人密码对照表
  • 第五关
    根据提示,拿旗子的小人是大写,获得最后三位密码
    好漫长的题……

这是个盲兔子,竟然在唱歌!

被题目名字吸引进来的
下载之后发现是盲文
盲文加解密
获得一串不明字符

U2FsdGVkX1/j97ClyTDacvadvPYI2RZERoFI3b1Un/jnSSTpQv9LK09Wi7VwWuJa
aya2nAC1zRYzjzek0e2YAND2Fk8Iwga31vmMJXi+51PwYuHaWaH5vX+SXaRm1ojO
+OeDkQ0d92Ds30OI4JpEzmZXkVfkWQZ8B/mde5tn/2Ey5YVLxDYx/nVYvkDNxqqg
INvRIPxsk6qfKyQKc6qLG3k5E8mr9stPPQbqsq5NX6h7tqB5f+cTseJsmkC0Rbi2
AyKbXtbbxAWM6yGI+z/UlCF6J92rkUcmD6Mo5OKHJ6w28LTe28T5+1woWxgBzH9K
AKU=

看起来是定长的密文,结合题目,兔子——rabbit加密?

Rabbit加密技术,又称作兔子加密,是一种基于对称密钥的加密算法。其核心思想是将明文或密文转化为一个固定长度的比特串,通过加密密钥对比特串进行加密,实现信息的安全传输。

rabbit加解密
获得一串音乐字符

♬♯♩¶♬♫¶♭♩¶♫♪‖♯♬♭♩♬‖♫‖∮‖♩♬§‖♪¶‖♬♩♬§‖♩¶∮♬♬‖♪¶♭¶♯♫♯♩♫‖‖♬§‖♫♬♯♬§♫‖♩♩♫∮♬♩♫‖‖♪¶∮♫‖♫♫♯=

搜搜音乐符号加密
音乐符号加解密
真是什么加解密都有啊
解密得到flag

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值