当前位置: 首页 > news >正文

BUUCTF派大星的烦恼

解压得到一张图片没啥有用信息

根据下面题目提示,用010editor打开图片发现一段16进制字符串

派大星最近很苦恼,因为它的屁股上出现了一道疤痕!我们拍下了它屁股一张16位位图,0x22,0x44代表伤疤两种细胞,0xf0则是派大星的赘肉。还原伤疤,知道是谁打的派大星!(答案为32位的一串字符串) 注意:得到的 flag 请包上 flag{} 提交

在010editor直接CTRL+C CTRL+V 是Ascii,复制如下

"DD"DD""""D"DD""""""DD"""DD"DD""D""DDD""D"D"DD""""""DD""D""""DD"D"D"DD""""D"DD""D"""DD"""""DDD""""D"DD"""D"""DD"""D""DD"D"D"DD"""DD""DD"D"D""DD""DD"DD"""D"""DD""DD"DD""D"D""DD"D"D"DD"""D"""DD"""D"DD""DD"""DD"D"D""DD"""D"DD""DD""DD"""""DDD""DD""DD"""D""DD""

复制16进制字符串

22 44 44 22 44 44 22 22 22 22 44 22 44 44 22 22
22 22 22 22 44 44 22 22 22 44 44 22 44 44 22 22
44 22 22 44 44 44 22 22 44 22 44 22 44 44 22 22
22 22 22 22 44 44 22 22 44 22 22 22 22 44 44 22
44 22 44 22 44 44 22 22 22 22 44 22 44 44 22 22
44 22 22 22 44 44 22 22 22 22 22 44 44 44 22 22
22 22 44 22 44 44 22 22 22 44 22 22 22 44 44 22
22 22 44 22 22 44 44 22 44 22 44 22 44 44 22 22
22 44 44 22 22 44 44 22 44 22 44 22 22 44 44 22
22 44 44 22 44 44 22 22 22 44 22 22 22 44 44 22
22 44 44 22 44 44 22 22 44 22 44 22 22 44 44 22
44 22 44 22 44 44 22 22 22 44 22 22 22 44 44 22
22 22 44 22 44 44 22 22 44 44 22 22 22 44 44 22
44 22 44 22 22 44 44 22 22 22 44 22 44 44 22 22
44 44 22 22 44 44 22 22 22 22 22 44 44 44 22 22
44 44 22 22 44 44 22 22 22 44 22 22 44 44 22 22
 

根据提示这是伤疤,共256位字符,只有两种状态,假设0X44为1,0X22为0.

011011000010110000001100011011001001110010101100000011001000011010101100001011

0010001100000111000010110001000110001001101010110001100110101001100110110001000110011011001010011010101100010001100010110011000110101001100010110011001100000111001100110001001100

https://icyberchef.com/

乱码,去下面网站把二进制字符串逆序再解码,逆序后不乱码,去提交依然不正确

再逆序

6406950a54184bd5fe6b6e5b4ce43832

flag{6406950a54184bd5fe6b6e5b4ce43832}

提交答案正确

------------------------------------------------------------------------------------------------------------------------------

以下使用python实现:

把最初二进制字符串每8位二进制分割,256/8=32,满足提示要求,二进制字符(binary-str)-逆序-转字符ASCII-逆序      把最初二进制字符串每8位二进制分割,逆序先转整数int(10进制))再使用chr函数转ASCII再逆序。

python脚本实现

with open("派大星的烦恼.bmp", "rb") as fr:res = fr.read()[4000:4256]# 将字节值转换为 0 和 1 的列表binary_list = [0 if v == 34 else 1 for v in res]# 打印二进制列表print(binary_list)# 将列表中的每个元素转换为字符串并拼接成一个字符串binary_str = "".join(map(str, binary_list))print(binary_str)
flag=binary_str[::-1]
x=""
for i in range(len(flag)//8):x += chr(int(flag[8*i:(i+1)*8],2))
print(x[::-1])

又一个脚本:

with open("派大星的烦恼.bmp", "rb") as fr:res = fr.read()[4000:4256]# 将字节值转换为 0 和 1 的列表binary_list = [0 if v == 34 else 1 for v in res]# 打印二进制列表print(binary_list)# 将列表中的每个元素转换为字符串并拼接成一个字符串binary_str = "".join(map(str, binary_list))print(binary_str)  
str=binary_str[::-1]
flag=""
for i in range(len(str)//8):flag += chr(int(str[8*i:(i+1)*8],2))
print(f"len:{len(flag)}")
print(f"flag is :{flag[::-1]}")

二进制字符(binary-str)-逆序-转字符ASCII-逆序               等同于

二进制字符每八位(binary-str)逆序 -转字符ASCII

换思路脚本修改如下

with open("派大星的烦恼.bmp", "rb") as fr:res = fr.read()[4000:4256]# 将字节值转换为 0 和 1 的列表binary_list = [0 if v == 34 else 1 for v in res]# 打印二进制列表print(binary_list)# 将列表中的每个元素转换为字符串并拼接成一个字符串binary_str = "".join(map(str, binary_list))print(binary_str)# 将二进制字符串按每 8 个字符分割、反转并转换为整数列表integer_list = [int(binary_str[i:i + 8][::-1], 2) for i in range(0, len(binary_str), 8)]print(integer_list)# 将整数列表中的每个元素转换为十六进制字符串并拼接hex_str = "".join(map(lambda v: str(hex(v))[2:], integer_list))# 将十六进制字符串中的每个字符转换为对应的 ASCII 字符并拼接flag = "".join(chr(int(hex_str[i:i + 2], 16)) for i in range(0, len(hex_str), 2))print(f"字符长度:{len(hex_str)}")
print(f"转换结果:{hex_str}")
print(f"len:{len(flag)}")
print(f"flag is :{flag}")

运行结果如下:

0110110000101100000011000110110010011100101011000000110010000110101011000010110010001100000111000010110001000110001001101010110001100110101001100110110001000110011011001010011010101100010001100010110011000110101001100010110011001100000111001100110001001100
[54, 52, 48, 54, 57, 53, 48, 97, 53, 52, 49, 56, 52, 98, 100, 53, 102, 101, 54, 98, 54, 101, 53, 98, 52, 99, 101, 52, 51, 56, 51, 50]
字符长度:64
转换结果:3634303639353061353431383462643566653662366535623463653433383332
len:32
flag is :6406950a54184bd5fe6b6e5b4ce43832
 

满足32位要求

包裹flag{}提交:

flag{6406950a54184bd5fe6b6e5b4ce43832}

上面代码有多余步骤,优化一下,binary_str  to  integer_list  to hex_str to ASCII

多余了hex_str,改后binary_str  to  integer_list  to  ASCII

with open("派大星的烦恼.bmp", "rb") as fr:res = fr.read()[4000:4256]# 将字节值转换为 0 和 1 的列表binary_list = [0 if v == 34 else 1 for v in res]# 打印二进制列表print(binary_list)# 将列表中的每个元素转换为字符串并拼接成一个字符串binary_str = "".join(map(str, binary_list))print(binary_str)# 将二进制字符串按每 8 个字符分割、反转并转换为整数列表integer_list = [int(binary_str[i:i + 8][::-1], 2) for i in range(0, len(binary_str), 8)]print(integer_list)flag = "".join(chr(v) for v in integer_list)  # 以下是多余步骤,注释掉,将整数列表中的每个元素转换为十六进制字符串并拼接#hex_str = "".join(format(v, "02x") for v in integer_list)# 将十六进制字符串中的每个字符转换为对应的 ASCII 字符并拼接#flag = "".join(chr(int(hex_str[i:i + 2], 16)) for i in range(0, len(hex_str), 2))print(f"len:{len(flag)}")
print(f"flag is :{flag}")

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【 html+css 绚丽Loading 】 000029 三元化虚阵
  • Mamba:超越Transformer的新一代神经网络架构
  • 【算法】LRU置换算法
  • Linux——用户和权限
  • K8S CronJob
  • 【QNX+Android虚拟化方案】114 - QNX /dev/switch 节点创建 及 读写功能实现实例
  • OpenCPN Compiling on Windows
  • Python 数据分析笔记— Numpy 基本操作(上)
  • C++笔记---模板初阶
  • Elasticsearch7.14.2集群部署和elk部署
  • C#中通过TabControl控制MDI子窗体显示切换的实现过程
  • jmeter响应断言、json断言、断言持续时间、大小断言操作
  • pytest.mark简介
  • RabbitMQ中的死信交换机?(RabbitMQ延迟队列有了解过吗)
  • [Labview] 表格改值后单元格编辑功能,更改颜色、字体、颜色等
  • python3.6+scrapy+mysql 爬虫实战
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Java到底能干嘛?
  • Python进阶细节
  • vue.js框架原理浅析
  • Vue2 SSR 的优化之旅
  • 从零开始的无人驾驶 1
  • 记录一下第一次使用npm
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 项目实战-Api的解决方案
  • AI算硅基生命吗,为什么?
  • FaaS 的简单实践
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #stm32驱动外设模块总结w5500模块
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (4)Elastix图像配准:3D图像
  • (搬运以学习)flask 上下文的实现
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (回溯) LeetCode 77. 组合
  • (三)elasticsearch 源码之启动流程分析
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (自用)交互协议设计——protobuf序列化
  • ..回顾17,展望18
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET 解决重复提交问题
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • ??myeclipse+tomcat
  • @Responsebody与@RequestBody
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [<死锁专题>]
  • [100天算法】-实现 strStr()(day 52)
  • [AI StoryDiffusion] 创造神奇故事,AI漫画大乱斗!