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

还刷刷刷刷刷

ctfshow

Misc17

这题因为提示falg在图片数据里,用binwalk分离无结果

然后尝试使用kali zsteg工具的zsteg -e extradata:0 misc17.png > 1.txt命令提权

因为注册表,重装了kali

只能重装zsteg工具

先使用sudo su命令进入root用户(其具有最高权限

sudo su 命令执行后会让输入密码,(这里是kali的密码)注意,密码是可能不会显示的,不能输错,输完回车即进入root用户

先装zstage工具,命令

sudo apt update

查看可升级的安装包

 

然后使用命令进行更新和安装

sudo apt install -y ruby ruby-dev ruby-bundler zlib1g-dev libpng-dev build-essential

 执行

以上是确保系统更新安装必要的依赖库

接下来通过RubyGems安装zsteg

命令

bashsudo gem install zsteg

结果发现安装不了,问了deepseek一会儿让我换源一会儿让我通过GiHtub源码直接装,又或者直接命令apt装,还检查了Ruby版本是否兼容,(虽然这些我都不懂,但还是照做了)但发现并没有什么作用

最后在执行 sudo apt update sudo apt install zsteg 时显示警告,域名解析错误,然后判断应该是网络连接有问题,(真fou了,昨天还能用)这里检查了网络连接

ping 8.8.8.8

执行后发现它说网络不可达,所以尝试检查网络接口状态

检查网卡是否启用

bash
ip a

发现还是一大堆我看不懂的(忘了截图)

但如果网卡显示DOWN,则手动启用:

bashsudo ip link set eth0 up #有线网
sudo ip link set wlan0 up #无线网

然后尝试重新获取ip

bashsudo dhclient eth0 #有线网
sudo dhclient wlan0 #无线网

然后就发现可用了

那就继续用RubyGems安装zsteg

bashsudo gem install zsteg

检查是否成功

bashzsteg --version #输出示例

啥玩意儿?又没成功?

我。。今天全再这装工具了,中午也是为了重装pycharm出了点问题搞了一中午 ,。

算了,继续

既然这样那就应该检查zsteg是否真正安装

bashwhich zsteg

这里注意是which,不是where

得到路径

那就说明zsteg已安装,但版本信息丢失

那就尝试命令

bash#进入 zsteg 所在目录
cd /user/local/bin  #替换为自己的真实路径
./zsteg --help      #直接运行,看是否能正常使用

(注意第二行和第三行是分两次执行的)

虽然看不懂,但貌似是能正常执行的

那就说明是非正式安装(手动编译或者源码运行我这应该属于后者)

因为刚我是通过gem安装的,那就先验证版本信息

bashgem list zsteg

得到版本后重新安装强制更新

bashsudo apt purge zsteg  #卸载现有版本
sudo apt install zsteg  #重新安装

其实第一行bash命令可执行也可不执行,毕竟刚已经进入了

 分两步执行

最后的最后,再来

zsteg --version

我就不信还安装不成功!!!

裂开了,真的,

装这个工具花了不下三小时

但还是尝试使用命令分离一下,竟然发现可用

so?明明可用为什么检测命令zsteg --version显示unknow version??

这个问题从网上找了很多方法还是没解决,既然能用就好,暂时先放一下

因为zsteg检测到misc17.png有隐藏的信息

那么接下来就用zsteg 把misc.png中的隐藏信息“extradata:0”提取到指定文件“s”

zsteg -E 'extradata:0' 图片名 >s #单引号里的即为隐藏信息

然后binwalk分离文件s

binwalk -e 图片名 --run-as=root

然后打开kali下的_s.extracted文件

打开1F1获得flag

misc的题工具很重要,但有时候知识学到的没有多少,装工具却浪费了很多时间

Misc23

题目提示答案在时间里,用notepad++打开没有发现什么

使用kali exiftool 命令

然后就发现了可疑字符串

看到第一行,ctfshow{}典型flag的格式,然后注意到UnixTimestamp这个东东, 上网查了一下,这是官方给的定义

还有背景

什么时间戳不戳的,哎呀看他说那么高端 我理解的所谓溢出就是当32位整数的值超出其表示的范围(就是无法表示了)

如32位整数的表示范围是-2,147,483,648(逗号隔开好看一点)到2,147,483,647,当超出2,147,483,647时就无法表示了,这个就叫溢出

举个例子就是当在32位整数表示范围-2,147,483,648到2,147,483,647的最大值2,147,483,647加1,结果就会相当于“绕回最小值-2,147,483,648。但在这好像没有什么大用途。

接着看DECtoHEX,别的不用管,只用记住它是将十进制数转换为十六进制数函数

然后看到getflag

注意到get flag下面这一行

没错,这个了解一下,没提供什么有用的消息hh

这里是关键:

所以上面的这个提示   ctfshow{}, UnixTimestamp, DECtoHEX, getflag 

解释起来就是用ctfshow{}包裹   先 UnixTimestamp(转换为时间戳)再 DECtoHEX (转换为十六进制结果 就能get flag  有意思有意思

对于时间戳 ,它是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数(不考虑闰秒),用于表示一个时间点。然而,这种格式对于人类阅读并不友好,因此需要转换成可读的日期和时间格式。时间戳转换工具能够将时间戳快速转换为人类可读的日期时间格式,同时也支持反向转换,即将日期时间转换为时间戳

注意到这四个时间戳

所以这里应该将可读日期转换为时间戳

 就是这个工具 Unix时间戳(Unix timestamp)转换工具 - 站长工具

(这里在找在线转换网站的时候我还发现了另一个转换时间戳的网址,有很多比如Javascript、php、html工具,条形码生成、甚至元素周期表等涉及各学科不仅仅是网络知识的有用工具,放这了在线工具 - 你的工具箱)

那么接下来开始转换时间戳  (这里转换之前不要忘了把年月分隔符:换为 - 刚开始我就忘了,还奇怪怎么转不出来 后面的时间倒不用换,就用:即可)

第一个时间:

第二个时间:

第三个:

最后一个:

所以将四个换成的时间戳就是

874865822 2699237688 2156662245 460377706 #全部转为16进制

然后转十六进制

还是一个个转

1:

2:

3:

4:

最后连起来

3425649ea0e31938808c0de51b70ce6a #转16进制结果

最后包裹ctfshow{3425649ea0e31938808c0de51b70ce6a}

提交正确


http://www.mrgr.cn/news/96218.html

相关文章:

  • VSCode Java 单元测试没有运行按钮
  • QTcpSocket(客户端实现)多线程连接慢问题
  • 基于MCP协议的多模态模型优化在医疗3D打印精密人工关节制造中的研究
  • office_word中使用宏以及DeepSeek
  • 第十六届蓝桥杯模拟二(串口通信)
  • ubuntu 22.04 一键安装 lxd
  • Linux——线程安全
  • YOLO历代发展 图像增强方式 架构
  • K8S学习之基础五十九:部署gitlab服务
  • 《Python实战进阶》No34:卷积神经网络(CNN)图像分类实战
  • LangChain4j与DashScope深度集成实战:一站式开发指南
  • Vue 中使用 ECharts
  • 【C++游戏引擎开发】第1周《线性代数》(2):矩阵加减法与SIMD集成
  • github使用
  • JavaScript时间戳的使用
  • FFmpeg —— 实时绘制音频波形图(附源码)
  • OpenCV正确安装及环境变量配置
  • python并发爬虫
  • 元能力的养成
  • java同时使用两个不同版本的jar包,基于maven-shade-plugin,非自定义类加载器方法