title: 攻防世界 Guess-the-Number
date: 2021年8月9日 09点54分
tags: 攻防世界
categories: 攻防世界
这是一道后缀名为class的文件,之前学过一点java,知道这是.java,是源程序,而.class是.java编译之后的产物,又叫字节码文件。
第一次反编译java的,之前没有工具,百度一波之后,下载了反编译工具 jd—gui。
然后看题。
猜个数字?
1、PE查看
2、jd gui打开guess.class
(1)分析
分析代码,发现XOR是一个方法(函数),将_str_one 和 _str_two用这个方法(函数),通过一定的算法得到answer,我们可以看到下面有一句输出,your flag is: ,我们可以推测,这个answer就是我们的flag。通过代码,写一个java脚本。
(2)写java脚本
首先把不必要的信息剔除,先将这个方法(函数),原封不动的写出来,然后在主main函数中,写出两个字符串,在用answer接受结果,调用XOR,把两个参数传进去,然后输出answer,便是得到了flag。
your flag is: a7b08c546302cc1fd2a4d48bf2bf2ddb
(3)还有一个文件
可以看到,还有一个文件是MANIFEST.MF
百度一手,如下
可以通过记事本或者Editplus等文本编辑器打开,就可以分析里面的内容了。
MANIFEST.MF:这个 manifest 文件定义了与扩展和包相关的数据。
通过notepad++打开。
(4)总结
这个题,难度不是很大,代码分析也是很简单,主要是知道class文件的反编译方法和工具。下次再次遇见class文件,能明白一些。