vim+xxd编辑十六进制的一个大坑:自动添加0x0a

news/2024/7/21 13:52:23 标签: vim, 编辑器, linux

问题描述

今天在做一个ctf题,它给了一个elf文件,我要做的事情是修复这个elf文件,最后执行它,这个可执行文件会计算它自身的md5作为这道题的flag。我把所有需要修复的地方都修复了,程序也能成功运行,但是flag始终就是不对

操作环境

Linux kali 5.10.0-kali7-amd64 #1 SMP Debian 5.10.28-1kali1 (2021-04-12) x86_64 GNU/Linux
vim版本信息如下
在这里插入图片描述

问题排查

出于困惑,我查看了网上的答案,发现他们修改的地方和我一模一样,但是他们的md5和我的不一样。更进一步的,我尝试了在windows下使用ue修改那个elf文件,得到的md5和他们是一样的
至此,可以初步得出结论:linux下使用vim+xxd修改的结果是有问题的
我分别使用wc -c指令查看了正确的和错误的elf文件的大小
在这里插入图片描述
发现错误的文件比正确的多一个字节,至此真相已经明了,vim+xxd编辑在xxd -r的时候会偷偷在文件末尾多加一个字节
后面通过实验验证,如果这个二进制文件的最后一个字节不是0x0a,那么在xxd -r之后,它会在文件末尾加上一个0x0a

这个大坑属事实把我给坑麻了,排查了大半天,很难想象是编辑器出了问题

解决办法

在windows下可以就用ue进行十六进制编辑
linux下可以用ghex来进行编辑

一点感悟

在日常做ctf题的过程中,要尽可能多地去探索不同工具的作用,用法以及局限性。所幸这次是在练习中被坑了,也算是涨经验了,如果是在比赛中遇到这种问题,最后也许可以想到是编辑器的问题,但这无疑会很花时间


http://www.niftyadmin.cn/n/5216012.html

相关文章

2023-11-26 事业-代号s-顶级资产管理公司-记录

摘要: 2023-11-26 事业-代号s-顶级资产管理公司-记录 顶级资产管理公司: 1、贝莱德(BlackRock) 美国 80529亿美元 总部位于美国纽约的贝莱德是于1988年成立,且以资产管理为主要业务的上市投资管理企业,公司规模庞大,实力雄厚,发…

从Qt源码的角度分析Qt对象树与内存管理模式

作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 一、Qt对象树(Object Tree)和父子关系二、源码角度:QObject的内存管理构造函数析构函数addChild() 和 removeChild()三、C++模拟实现Qt的对象树内存管理模式Qt框架提供了一…

【Linux 操作系统配置 SFTP】

Linux 操作系统配置 SFTP sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务,不像ftp还需要额外的进行安装基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管…

多维代码特征提取技术浅析

最近我把《代码审计 C/C实践》一书中关于描述SCA工具的技术点之一——多维代码特征提取技术重新阅读了一下,理解一下多维代码特征提取技术以及在SCA工具中的运用。 SCA工具需要对知识库(或称为源库我认为更合适)中的软件代码提取特征值&…

C语言基础介绍

1. C语言基础知识 C语言是一种计算机编程语言,是一门用于编写系统软件和应用软件的高级语言。C语言的基础知识包括: 数据类型:C语言中的数据类型包括整型、浮点型、字符型等。 变量:C语言中使用变量来存储数据,变量必…

SUM()用法,C# ??用法,强制转换为Int类型错误

错误写法: 报错:到值类型“System.Int32”的强制转换失败&#xff0c;因为具体化值为 null。 int a mesPend.Where(p > p.PendStartTime.Month a && p.PendStartTime.Day < d). Select(p > DbFunctions.DiffSeconds(p.PendStartTime, p.PendEndTime.Value…

2018年4月26日 Go生态洞察:Go新品牌形象及标识发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

网络篇---第一篇

系列文章目录 文章目录 系列文章目录前言一、HTTP 响应码有哪些?分别代表什么含义?二、Forward 和 Redirect 的区别?三、Get 和 Post 请求有哪些区别?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…