jjzjj

[XCTF]适合作为桌面(难度1)

Mr_Fmnwon 2023-08-30 原文

这真的只有难度1吗?作为萌新,难死我了QAQ

目录

前言

一、题目:适合作为桌面

二、解题思路

1.属性?

2.图片图层?

3.图片通道LSB

4.二维码扫描

5.对照ASCII

6.反编译pyc文件

总结


前言

给了一张图片(png),什么提示没有,怎么进行思考获得flag?

事实上,真实的场景自然也不会给出任何提示。这就考察了图片隐写的几个角度,即,给你一张图片,你一般可以按照什么顺序,检查图片的哪些方面。

作为萌新,其实对解题的固定顺序步骤以及思考方式是很看重的。本题看了好多wp,但是连其中的一个知识点、工具都不明白,所以又大量查阅了各种博客、下载了各种软件,力求掌握。 


希望能细无巨细地讲述清楚做题地整个过程,以适用于其他题目。

一、题目:适合作为桌面

 确实,很适合作为桌面,很有感觉~

but——给我一个图片,我该怎么找??

二、解题思路

这里是某个大佬的CTF 图片隐写的几个角度。

1.属性?

别想了,哪有这么简单

 确实啥信息没有。

2.图片图层?

这也是跟别的博客学的,据说用PS打开,可能会有隐藏图层覆盖地情况。

【在线PS】PS软件网页版,ps在线图片处理工具photopea-稿定设计PS

这个网站是在线的PS,也能够提供图层查看,本题自然是毫无发现

3.图片通道LSB

查了资料,发现一个叫stegsolve的好东西——图片隐写解析器,Java写的一个程序。

一些功能:

File Format:文件格式

Data Extract:数据提取

Steregram Solve:立体试图 可以左右控制偏移

Frame Browser:帧浏览器

Image Combiner:拼图,图片拼接

此外,点击图片下方的<>就能切换图片查看模式(我是不会说我因为图片太大,<>溢出屏幕而想尽办法想改变图片模式的) 

本题呢,突破点也是在这里。 

发现了一个二维码!!

4.二维码扫描

QR Research是一个提供了解析二维码条形码等信息的软件,下载地址网上一搜就有哦~

得到一长串16进制字符串。

5.对照ASCII

010 Editor是一款功能强大的代码编辑器,使用可帮助用户轻松编辑任何文件、驱动器或进程的文本和十六进制代码。旨在快速轻松地编辑计算机上任何文件的内容。该软件可以编辑文本文件,包括Unicode文件,批处理文件等等。

于是兴高采烈地我就下载了。确实强大~据说等到功力深厚了,还要借此软件查看头字段、修改字段等等来进行解密。

于是就将上述16进制字符串输给010editor,可是!!!怎么赋值进去只能当作字符串来识别呢?! 

 

 在光标位置粘贴,却解析为字符串QAQ(谁能告诉我为什么、怎么做,求大神留言!!)

好吧好吧那就用winhex——另一个代码编辑器。于是又下载了winhex。

ASCII码中有.pyt与.py的样式。

6.反编译pyc文件

什么是pyc文件?

pyc是一种二进制文件,是由py文件经过编译后,生成的文件

既然这样,我们把上述文件,转为16进制文件保存,反编译。

(关于怎么保存,当时摸索了好一会儿~)

 保存为.pyc格式文件就好啦。接下来进行反编译。

在线pyc反编译网站点这里

得到一个python文件,略加修改并运行输出flag()就好啦~~

 


总结

用到了很多知识,下载了很多软件,浏览了很多加解密网站,收获颇丰。

只是(难度1?)

有关[XCTF]适合作为桌面(难度1)的更多相关文章

  1. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  2. ruby - 字符串文字中的转义状态作为 `String#tr` 的参数 - 2

    对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一

  3. ruby-on-rails - 应用程序的名称是否可以作为变量使用? - 2

    当我创建一个Rails应用程序时,控制台:railsnewfoo我的代码可以使用字符串“foo”吗?puts"Yourapp'snameis"+app_name_bar 最佳答案 Rails.application.class将为您提供应用程序的全名(例如YourAppName::Application)。从那里您可以使用Rails.application.class.parent获取模块名称。 关于ruby-on-rails-应用程序的名称是否可以作为变量使用?,我们在StackOve

  4. ruby-on-rails - 使用作为方法的值在 ruby​​ 中搜索哈希 - 2

    我在搜索我的值是方法的散列时遇到问题。我只是不想运行plan_type与键匹配的方法。defmethod(plan_type,plan,user){foo:plan_is_foo(plan,user),bar:plan_is_bar(plan,user),waa:plan_is_waa(plan,user),har:plan_is_har(user)}[plan_type]end目前如果我传入“bar”作为plan_type,所有方法都会运行,我怎么能只运行plan_is_bar方法呢? 最佳答案 这个变体怎么样?defmethod

  5. ruby - 无法在 Ruby 中将 ffmpeg 作为子进程运行 - 2

    我正在尝试使用以下代码通过将ffmpeg实用程序作为子进程运行并获取其输出并解析它来确定视频分辨率:IO.popen'ffmpeg-i'+path_to_filedo|ffmpegIO|#myparsegoeshereend...但是ffmpeg输出仍然连接到标准输出并且ffmepgIO.readlines是空的。ffmpeg实用程序是否需要一些特殊处理?或者还有其他方法可以获得ffmpeg输出吗?我在WinXP和FedoraLinux下测试了这段代码-结果是一样的。 最佳答案 要跟进mouviciel的评论,您需要使用类似pope

  6. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  7. ruby-on-rails - 为什么 Rails 可以使用 `if` 作为哈希键但在 Ruby 中不能 - 2

    在纯Rubyirb中,不能输入{if:1}。该语句不会终止,因为irb认为if不是符号,而是if语句的开始。那么为什么Rails可以有before_filter接受if作为参数?该指南的代码如下:classOrderunless也会发生同样的事情。 最佳答案 这是一个irb问题,而不是Ruby。bash=>ruby-e"puts({if:1})"bash=#{:if=>1}您可以改用pry。它将正确读取输入。https://github.com/pry/pry 关于ruby-on-rai

  8. ruby 变量作为同一对象(指针?) - 2

    >>a=5=>5>>b=a=>5>>b=4=>4>>a=>5如何将“b”设置为实际的“a”,以便在示例中,变量a也将变为4。谢谢。 最佳答案 classRefdefinitializeval@val=valendattr_accessor:valdefto_s@val.to_sendenda=Ref.new(4)b=aputsa#=>4putsb#=>4a.val=5putsa#=>5putsb#=>5当您执行b=a时,b指向与a相同的对象(它们具有相同的object_id).当你执行a=some_other_thing时,a将指向

  9. ruby-on-rails - 将 Rails 路由助手作为类方法添加到类中 - 2

    我如何将像“root_path”这样的Rails路由助手作为类方法添加到像my_model.rb这样的类中?所以我的课是这样的:ClassMyModeldefself.fooreturnself.root_pathendendMyModel.foo以上不起作用,因为ClassMyModel不响应root_path这是我所知道的:我可以使用includeRails.application.routes.url_helpers,但这只会将模块的方法添加为实例方法我试过扩展Rails.application.routes.url_helpers但它没用请随时给我上课:)

  10. ruby - 在 ruby​​ 中将函数作为参数传递 - 2

    我正在努力研究ruby​​中的函数式编程,但似乎没有太多好的文档。本质上,我正在尝试编写一个具有Haskell类型签名的组合函数:[a]->[a]->(a->a->a)->[a]所以combine([1,2,3],[2,3,4],plus_func)=>[3,5,7]combine([1,2,3],[2,3,4],multiply_func)=>[2,6,12]等等我发现了一些关于使用zip和map的东西,但使用起来感觉真的很难看。什么是最“ruby”的实现方式? 最佳答案 嗯,您说过您了解zip和map,所以这可能没有帮助。但我会

随机推荐