BUUCTF派大星的烦恼

2024-09-01 13:44
文章标签 buuctf 烦恼 派大星

本文主要是介绍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}")

这篇关于BUUCTF派大星的烦恼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127103

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

别为大文件烦恼!mp4文件太大怎么变小?3个管用方法

你是否曾经遇到过mp4视频文件过大的困扰?每当想要分享或存储mp4文件时,巨大的文件就成了阻碍。明明感觉感觉没占用多少空间,但是设备却常常出现空间过满警告。 没多少空间的设备真是让人大为恼火,没人想多花一份钱买设备。那么只能选择把文件变小,节省空间了。mp4文件太大怎么变小?在这篇文章中,我们将分享三种有效的方法,帮助你轻松解决mp4文件过大的问题。 还等什么呢?请屏幕外的读者和我们一起按步骤

BUUCTF PWN wp--bjdctf_2020_babystack

第一步   checksec一下,该题是64位的,该题目大概率是一道栈溢出(因为题目里面提到了stack) 分析一下这个二进制保护机制: Arch: amd64-64-little 这表示二进制文件是为64位AMD处理器设计的,使用的是小端序(little-endian)格式。RELRO: Partial RELRO RELRO(Relocation Read-Only)是一种安全特性,旨

uniapp树洞烦恼分享系统 微信小程序设计与实现 80igt

目录 博主介绍技术栈系统设计🌟文末获取源码+数据库🌟具体实现截图后端前端java类核心代码部分展示可行性论证个人心得系统测试操作可行性源码获取详细视频演示 博主介绍 👇🏻 博主介绍:👇🏻 专注于Vue Java、python nodejs php小程序技术领域和毕业项目实战✌全网粉丝50W+,博客专家、CSDN特邀作者、CSDN新星计划导师、全栈领域优质创作者,cs

BUUCTF—[网鼎杯 2020 朱雀组]phpweb

题解 打开题目是这样子的。 啥也不管抓个包看看,从它返回的信息判断出func后面的是要调用的函数,p后面的是要执行的内容。 那我们直接执行个系统命令看看,可以看到返回了hack,估计是做了过滤。 func=system&p=ls 直接读取源码看看咯,可以看到过滤了好多函数,反正我认识的可以进行命令执行的函数都给禁了。 func=file_get_contents&p=ind

告别文档处理烦恼,PDF Guru Anki一键搞定所有

前言 知识就像烛光,能照亮一个人,也能照亮无数人,科技之光更是如此;这一理念深刻地影响了我们如何看待和应用新技术。正是在这样的背景下,一款集PDF处理与高效学习工具于一体的软件——PDF Guru Anki应运而生,它不仅代表了技术创新的力量,更是开发者对提升用户工作学习效率的深刻洞察与不懈追求。 开发团队由一群热爱技术、勇于创新的专业人士组成。他们深知在信息化时代,处理PDF文档和学习管理已

分贝通助力云天励飞“甩掉”每月报销烦恼

技术创新和应用落地两手抓,已经是每一家人工智能企业突破瓶颈、快速发展的共同选择。可在组织的日常运营中,如何提升创新效率,保证项目建设又快又好完成,人效是关键。作为国内领先的人工智能企业,云天励飞率先选择从费用支出的角度寻找人效升级突破。 企业介绍 云天励飞成立于2014年8月,是拥有算法、芯片和大数据全栈式能力的人工智能企业。凭借“算法芯片化”的核心能力和“端云协同”的技术路线,云天励飞在智慧

【CTF Web】BUUCTF Upload-Labs-Linux Pass-04 Writeup(文件上传+PHP+.htaccess绕过)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路