文章目录

  • 前言
  • 题目
  • 解题过程

前言

一个多月没有碰CTF了,今天群里有群友发了一题Misc,随手看看题。

题目

是一个pyc文件

解题过程

先反编译一下,丢到python反编译在线网站
得到如下代码

from hashlib import sha256__version__ = '1.0.3'
alphabet = b'123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
if bytes == str:iseq = lambda s: map(ord, s)bseq = lambda s: ''.join(map(chr, s))buffer = lambda s: s
else:iseq = lambda s: sbseq = bytesbuffer = lambda s: s.bufferdef scrub_input(v):if isinstance(v, str) and not isinstance(v, bytes):v = v.encode('ascii')if not isinstance(v, bytes):raise TypeError("a bytes-like object is required (also str), not '%s'" % type(v).__name__)def b58encode_int(i, default_one=(True,)):'''Encode an integer using Base58'''if not i and default_one:return alphabet[0:1]string = Nonewhile i:(i, idx) = divmod(i, 58)string = alphabet[idx:idx + 1] + stringreturn stringdef b58encode(v):'''Encode a string using Base58'''v = scrub_input(v)nPad = len(v)v = v.lstrip(b'\x00')nPad -= len(v)(p, acc) = (1, 0)for c in iseq(reversed(v)):acc += p * cp = p << 8result = b58encode_int(acc, False, **('default_one',))return alphabet[0:1] * nPad + resultdef b58decode_int(v):'''Decode a Base58 encoded string as an integer'''v = v.rstrip()v = scrub_input(v)decimal = 0for char in v:decimal = decimal * 58 + alphabet.index(char)return decimaldef b58decode(v):'''Decode a Base58 encoded string'''v = v.rstrip()v = scrub_input(v)origlen = len(v)v = v.lstrip(alphabet[0:1])newlen = len(v)acc = b58decode_int(v)result = []while acc > 0:(acc, mod) = divmod(acc, 256)result.append(mod)return b'\x00' * (origlen - newlen) + bseq(reversed(result))def b58encode_check(v):'''Encode a string using Base58 with a 4 character checksum'''digest = sha256(sha256(v).digest()).digest()return b58encode(v + digest[:4])def b58decode_check(v):'''Decode and verify the checksum of a Base58 encoded string'''result = b58decode(v)result = result[:-4]check = result[-4:]digest = sha256(sha256(result).digest()).digest()if check != digest[:4]:raise ValueError('Invalid checksum')if __name__ == '__main__':if b58encode(input()) == b'3sLBBYq91BUxPzp7tRuYNKvUNQ2hedyw6ydjzNbf9rJbYq9Ue6xzr9aL6rEDwUQZRGnZPGGgwM2PspAeVcCCjyrNQqDV5PhvaZpwj5ZMaXaFuGjiXK1gf72U325dx6n1RFKiBF3C9dYRTj86aqxZ5HN53KLaW7oBoXwJjbsNFdci8A2kQM':print('flag is coming...')else:print('There is no problem that your input is wrong.')

应该是一段base58编码和解码的代码
将main()中的base58编码后的字符串取出进行解码

解密后的明文给了一个hint:flag在pyc文件中
去年在长安战疫中刚好碰到过一题是pyc文件隐写,可以使用stegosaurus工具获得pyc文件中的隐藏信息

stegosaurus工具项目地址

https://github.com/AngelKitty/stegosaurus

后面就很简单了,找一个3.6以上的环境跑一下工具即可

flag{217a5bcecea1be5eeca5028b06427b84}

【施恩宜由淡转浓,由浓转淡反成仇。刑罚宜由严转宽,先宽后严怨其酷。】

CTF pyc之stegosaurus隐写相关推荐

  1. 河南省网络安全高校战队联盟CTF训练营- misc04-音频隐写

    河南省网络安全高校战队联盟CTF训练营- misc04-音频隐写 文章目录 河南省网络安全高校战队联盟CTF训练营- misc04-音频隐写 个人简介 例题下载 音频隐写 个人简介 ID:七堇年,CT ...

  2. CTF Stegano练习之隐写初探

    今天要介绍的是CTF练习中的Stegano隐写题型.做隐写题的时候,工具是很重要的,接下来介绍一些工具. 1.TrID TrID是一款根据文件二进制数据特征进行判断的文件类型识别工具.虽然也有类似的文 ...

  3. CTF——word、ppt隐写

    目录 1.前言: 2.word: (1)文件本质: 1.原理: 2.方法: 3.还原: (2)文字颜色和文字隐藏: 1.原理: 2.方法: 3.PPT: (1)文件本质: 1.原理: 2.方法: 3. ...

  4. data:image/png;base64,, CTF杂项base64图片隐写-河南省第二届金盾信安杯

    下载后得到这个东西 ** data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAASbUlEQVR4nO2bQbJrO ...

  5. CTF之misc-音视频隐写

    注释:音视频隐写主要是针对一些特定的音乐,在听或者查看的过程中会存在比较明显的特征,认真查看就能得到flag (1) MP3stego 当你拿到一个MP3文件时不要手足无措,先试试MP3stego 用 ...

  6. 2021-11-28 Misc 杂项略览 一 图片隐写1 直接隐写【T.O.CTF】

    引语 Misc,杂项,一般指无法以CTF五大方向分类的题目类型,而在安全从业方面又需要用到的知识,是一项安全题目大杂烩. Misc题目一般分为这几种类型: 1.签到题,一般在比赛第一题出现,属于体验类 ...

  7. CTF-MISC文件隐写总结(图片,音频,视频,压缩包等文件)

    前置知识 file 命令根据文件头,识别文件类型,如果文件头前边有数据就识别不出来了 strings 输出文件中的可打印字符 可以发现一些提示信息或者特殊编码的信息 可以配合-o参数获取所有的ASCI ...

  8. CTF 音频隐写 大总结

    赛题概览 Nuit du Hack CTF Qualifications: Here, kitty kitty! 环境 Windows 考察点 WAV音频文件隐写术 Python基础 密码学 工具 A ...

  9. ctf 文件头crc错误_[CTF隐写]png中CRC检验错误的分析

    [CTF隐写]png中CRC检验错误的分析 最近接连碰到了3道关于png中CRC检验错误的隐写题,查阅了相关资料后学到了不少姿势,在这里做一个总结 题目来源: bugku-MISC-隐写2 bugku ...

最新文章

  1. Android数据存储之SD卡
  2. jQuery的Tooltip插件
  3. 无法对 null 引用执行运行时绑定_你真的懂this吗?聊聊默认绑定,隐式绑定,显示绑定,new绑定...
  4. IBM AIX服务器分区之间迁移IO设备以迁移HBA卡为例
  5. react-router的使用(二)——NavLink的使用、Switch的作用、Redirect
  6. ReportViewer教程(6)-将报表浏览器与报表联系
  7. 147. Insertion Sort List
  8. 彻底理解数字图像处理中的卷积-以Sobel算子为例
  9. Android 代码中的常见的问题总结
  10. DVWA系列之11 Brute Force中的密码绕过
  11. php中vc14是什么意思,VC9、VC11、VC14、VC15是啥?
  12. vsual studio 如何关闭禁止mscorsvw.exe (转)
  13. java实现仓储选址_邮局选址问题 (Java代码)并不难
  14. C#实现图形的平移和缩放
  15. 【计算机网络】利用WireShark分析TCP/UDP协议
  16. 编写程序,实现判断用户输入的数是正书还是负数的功能。
  17. 计算机仿真技术生物,基于计算机仿真技术的人体生理特性和病理机制研究
  18. FPGA串口回环实验
  19. matlab之strel函数与形态学处理
  20. 增值税合理税筹,享受政策税收奖励返还,高达85%!

热门文章

  1. Sorry, you have been blocked !vultr 又被 openai 屏蔽了,只能换个 vps 了
  2. 在数据库创建时创建OMF(Oracle Managed Files,Oracle管理的文件)
  3. uni-app的三种生命周期函数整理
  4. 手把手推导APM的 sqrt_controller控制器
  5. 勇敢做自己,女神节快乐!
  6. 只需要一招,改变你的网易云皮肤(仅限于PC端)
  7. php用户权限分配方法,php – 在Laravel 5中使用Entrust为用户分配权限,而不是角色...
  8. Wine-Staging 5.6 修补游戏补丁
  9. 最近很火!一名移动互联网员工写给老婆的信
  10. 回收站清空几天可找回?回收站清空的文件怎么恢复?2个方案