BUUCTF 吹着贝斯扫二维码

吹着贝斯扫二维码

1.题目概述

image-20220128222106705

image-20220128222213170

2.解题过程

打开flag.zip看看

是个加密的zip,在注释里有一串貌似是base32的编码,可能是密码

image-20220128222401747

去解解看

image-20220128222900300

不过好像解不出来,那先放一放,回去看看那些不明文件,

010打开一个看看

头是jpg,尾巴多了一点东西

image-20220128223111011

image-20220128223200575

改后缀

那就改改后缀看看能不能打开

image-20220128223320888

可以顺利打开,很明显这是一张二维码的一小部分,可以猜想,把全部的文件后缀都改成jpg,然后再把他们拼起来,不就是一张完整的二维码嘛,说干就干,不过也要借助一下脚本,python真是个好东西

import os

path = 'D://CTF//attachment//1' #文件具体路径,这个1是那堆文件所在的文件夹,不成功时可以改个路径
for i in os.listdir('D://CTF//attachment//1'): #路径最好用绝对路径,不会出错
	#if i == '修改后缀.py':
	#	continue

	#else:
		oldname = os.path.join(path,i)
		newname = os.path.join(path,i+'.jpg')
		os.rename(oldname,newname)

image-20220409092251449

运行完后,该怎么把这36张图片拼到一起呢?这是个问题(你也不知道顺序)

确认顺序

其实,在之前的图010看的时候,在文件尾后面还有一个数字,

image-20220128231200132

猜测这就是顺序,可以验证一下,

找一个3个角的特殊位置的图片,猜测数字可能是1,6,或31(根据图片数量确定位置)

image-20220128231414805

不放心可以再看看另外两个角

image-20220128231736560

image-20220128231904555

这下可以百分百确定了,这个数字就是拼图顺序

命名文件

可以利用python脚本根据这个顺序命名文件

import os
from PIL import Image

#目录路径
dir_name = r"./"
#获取目录下文件名列表
dir_list = os.listdir('./')
#print(dir_list)

#从列表中依次读取文件
for file in dir_list:
    if '.jpg' in file:
        f=open(file ,'rb')
        n1 = str(f.read())
        n2 = n1[-3:]	
        #经过测试发现这里要读取最后3个字节,因为最后还有一个多余的字节,不知道是不是转字符串的原因导致在末尾多了一个字符
        #print(file) #输出文件内容
        #print(n2)
        f.close()	#先关闭文件才能重命名,否则会报`文件被占用`错误
        os.rename(file,n2+'.jpg')	#重命名文件

image-20220409092456526

这些90多的,其实是1-9,代码写的不够好,出了点问题,改一下吧

利用ps拼图

拼图步骤如下:

1.新建,调整高度和宽度,我调整为24X24

image-20220409094125527

2.文件->置入嵌入对象,选择图片

image-20220409094229049

3.操作

注意有些地方可能会有一点点重合,

嘿,拼的还不错

image-20220409095429448

扫一下

image-20220409095510486

确认解码顺序

image-20220128225515420

解码

哦,这个应该就是那串编码的解码顺序了!难怪解不出来

base32→16进制→13→85→85→64→85(根据那串编码的格式判断顺序)

这个13不是base家族的,查了一下,是rot13编码

GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY
base32解码:3A715D3E574E36326F733C5E625D213B2C62652E3D6E3B7640392F3137274038624148
base16解码::q]>WN62os<^b]!;,be.=n;v@9/17’@8bAH
rot13解码::d]>JA62bf<^o]!;,or.=a;i@9/17’@8oNU
base85解码:PCtvdWU4VFJnQUByYy4mK1lraTA=
base64解码:<+oue8TRgA@rc.&+Yki0
base85解码:ThisIsSecret!233
解压密码就是ThisIsSecret!233

image-20220128234122574

3.flag

flag{Qr_Is_MeAn1nGfuL}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值