[BUUCTF]喵喵喵

打印 上一主题 下一主题

主题 845|帖子 845|积分 2535

[BUUCTF]喵喵喵

分析

题目是一张图片,打开属性,放入010editor,无果;于是想到LSB隐写
解题

发现一张PNG,但开头不太对劲

将其生存txt文件,发现放入010editor并不可以修改开头

在某位大佬博客中学到一个方法,如下:
首先,在notepad中打开txt文件

Alt按列选择左侧复制,放入Cyberchef

两者交换

下载图片,得到一个二维码

大概率宽高被修改了,在010中进行修改,得到一个完整二维码

扫码得到网址:https://pan.baidu.com/s/1pLT2J4f

接着,得到一个flag.rar,用winrar打开,得到flag.txt

太过分了! 在大佬的wp得知,这是NTFS文件隐写
NTFS文件隐写_ntfs隐写-CSDN博客
txt文件隐蔽的信息思绪

1.观察txt文件的属性说不定会有线索
2.txt文件里面是一堆空行可能存在snow隐写
3.存在NTFS隐写
而且在利用该工具时,下载的压缩包用WinRAR解压才可以提取到隐蔽的文件
流隐写得用WinRAR解压
随后得到一个反编译文件python pyc文件 - 知乎

利用在线反编译工具在线Python pyc文件编译与反编译,得到如下代码
  1. # Visit https://www.lddgo.net/string/pyc-compile-decompile for more information
  2. # Version : Python 2.7
  3. import base64
  4. def encode():
  5.     flag = '*************'
  6.     ciphertext = []#初始化一个空列表ciphertext,用于存储加密后的字符
  7.     for i in range(len(flag)):#使用一个for循环遍历flag字符串中的每个字符。
  8.         s = chr(i ^ ord(flag[i]))#对于每个字符,使用它的索引i和字符的ASCII值进行异或操作,然后使用chr函数将结果转换为一个字符。
  9.         if i % 2 == 0:
  10.             s = ord(s) + 10#如果是偶数,将字符s的ASCII值增加10。
  11.         else:
  12.             s = ord(s) - 10#如果是奇数,将字符s的ASCII值减少10
  13.         ciphertext.append(str(s))#将处理后的字符s转换为字符串,并添加到ciphertext列表中
  14.    
  15.     return ciphertext[::-1]#函数返回ciphertext列表的逆序。
  16. ciphertext = [
  17.     '96',
  18.     '65',
  19.     '93',
  20.     '123',
  21.     '91',
  22.     '97',
  23.     '22',
  24.     '93',
  25.     '70',
  26.     '102',
  27.     '94',
  28.     '132',
  29.     '46',
  30.     '112',
  31.     '64',
  32.     '97',
  33.     '88',
  34.     '80',
  35.     '82',
  36.     '137',
  37.     '90',
  38.     '109',
  39.     '99',
  40.     '112']#定义了一个ciphertext列表,包含了加密后的字符的ASCII值的字符串表示,这个列表是按照加密函数的逻辑生成的
复制代码
这段代码是一个加密步伐,据此,可有写一个脚本将flag解出来,由于本领有限,借鉴一下网上大佬
  1. def decode(ciphertext):
  2.     # 反转密文列表
  3.     ciphertext = ciphertext[::-1]
  4.     flag = []
  5.    
  6.     for i in range(len(ciphertext)):
  7.         s = int(ciphertext[i])
  8.         
  9.         # 根据索引的奇偶性进行逆操作
  10.         if i % 2 == 0:
  11.             s -= 10
  12.         else:
  13.             s += 10
  14.         
  15.         # 进行逆向的按位异或操作
  16.         original_char = chr(i ^ s)
  17.         flag.append(original_char)
  18.    
  19.     # 将列表中的字符拼接成字符串
  20.     return ''.join(flag)
  21. ciphertext = [
  22.     '96', '65', '93', '123', '91', '97', '22', '93', '70', '102',
  23.     '94', '132', '46', '112', '64', '97', '88', '80', '82', '137',
  24.     '90', '109', '99', '112'
  25. ]
  26. # 解密得到的flag
  27. flag = decode(ciphertext)
  28. print("解密后的flag是:", flag)
复制代码
解密后的flag是: flag{Y@e_Cl3veR_C1Ever!}
参考:【CTF入门】BUUCTF Misc刷题(连续更新) - Super_Snow_Sword - 博客园
知识点:图片隐写,Lsb,txt隐写,宽高,NTFS隐写,py反编译

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表