BUUCTF 梅花香之苦寒来 1

BUUCTF:https://buuoj.cn/challenges
在这里插入图片描述

题目描述:
注意:得到的 flag 请包上 flag{} 提交

密文:
下载附件,解压得到一张.jpg图片。
在这里插入图片描述


解题思路:
1、用010 Editor看了一下,刚开始以为是修改宽高的题,没有想到这个方向。(想到也不会做)
在010 Editor中看到,在图片数据的后面附加了很多的无关数据。(“FF D9”为jpg文件结尾)

在这里插入图片描述

2、将这些数据转换一下,看看是什么文件的数据。将全部的灰色数据复制下来,新建一个txt文本,粘贴进去保存。

在这里插入图片描述

在010 Editor中,使用“文件”选项卡的“导入16进制文件”选项,导入刚才新建的txt文件。

在这里插入图片描述

得到一堆坐标数据,接下来尝试将数据转换为图像。

在这里插入图片描述

(这一步其实就是将16进制的数据转换为ASCII字符,使用任意转换工具都可以,这里提供一个python脚本)

在这里插入图片描述

with open('hex.txt', 'r') as h:     # hex.txt为要转换的文本文件
    val = h.read()
    h.close()

with open('result.txt', 'w') as re: # 转换完成后写入result.txt
    tem = ''
    for i in range(0, len(val), 2):
        tem = '0x' + val[i] + val[i+1]
        tem = int(tem, base=16)
        print(chr(tem), end="")
        re.write(chr(tem))
    re.close()

3、使用gnuplot来进行绘制图像(gnuplot下载地址,提取码:wel5),安装好gnuplot之后,需要去环境变量(查看高级系统设置)里添加变量,然后就可以在命令行里运行gnuplot了。

在这里插入图片描述

4、使用gnuplot之前需要先将坐标数据格式转换成gnuplot可以识别的格式,下面是Python脚本:

with open('result.txt', 'r') as res:  # 坐标格式文件比如(7,7)
    re = res.read()
    res.close()

with open('gnuplotTxt.txt', 'w') as gnup:  # 将转换后的坐标写入gnuplotTxt.txt
    re = re.split()
    tem = ''
    for i in range(0, len(re)):
        tem = re[i]
        tem = tem.lstrip('(')
        tem = tem.rstrip(')')
        for j in range(0, len(tem)):
            if tem[j] == ',':
                tem = tem[:j] + ' ' + tem[j + 1:]
        gnup.write(tem + '\n')
    gnup.close()

转换之后是这样的数据格式。

在这里插入图片描述

5、将gnuplotTxt.txt放到gnuplot.exe的文件夹下,启动gnuplot,在命令行使用如下命令即可绘图。

plot "gnuplotTxt.txt"

在这里插入图片描述

得到一张二维码图片,扫描二维码得到flag。

在这里插入图片描述

在这里插入图片描述

(原来一开始图片属性就有提示)

在这里插入图片描述

flag:

flag{40fc0a979f759c8892f4dc045e28b820}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玥轩_521

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值