攻防世界misc——Reverse-it

下载附件,得到未知格式文件0da9641b7aad4efb8f7eb45f47eaebb2,进kali,用file看一下,单纯是数据
在这里插入图片描述010打开,一眼看见9D FF,最底下有8D FF,熟悉的jpg文件标识符,只不过反过来了
在这里插入图片描述在这里插入图片描述前后颠倒一下,恢复正常的FF D8和FF D9顺序,另存为jpg文件,文件打不开
在这里插入图片描述考虑整个16进制字符排列全反了,将16进制复制走,用java反转一下

import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * 将文件的16进制复制进txt,读取txt,反转字符串,导出另一个txt,复制走,010粘贴为16进制
 *
 * @Author: Jack Jparrow
 * @Date: 2021-10-05 13:30:12
 * @Last Modified by: Jack Jparrow
 * @Last Modified time: 2021-10-05 13:54:28
 */

public class reverse {

    public static void main(String[] args) {
        reverse.reverseFileInStringFromHex();
    }

    /**
     * 打工人开始打工
     */
    static void reverseFileInStringFromHex() {
        try {

            FileInputStream in = new FileInputStream("D:\\Desktop\\a.txt");// 读入数据

            byte[] b = new byte[1024];// 设置byte数组接受文件的内容
            int len = 0;// 数据长度

            String str = null;

            // 有一个返回值返回读取数据的长度,读取到最后一个数据则继续向后读一个,此时返回-1
            // 即:当返回-1,则表示文件读完
            while ((len = in.read(b)) != -1) {

                // b: 缓冲byte数组
                // 0: 从数组哪一位读起
                // len: 具体读了多少数据
                str += new String(b, 0, len);// 文件内容写入字符串

            }

            String str_r = (new StringBuilder(str)).reverse().toString();// 使用reverse()方法反转字符串

            FileOutputStream out = new FileOutputStream("D:\\Desktop\\2.txt");// 指定输出位置

            out.write(str_r.getBytes());// 把数据写入内存
            out.flush();// 把内存中数据写到硬盘
            out.close();// 关闭

            in.close();// 流在使用完一定要关闭

        } catch (Exception e) {

            e.printStackTrace();
        }
    }
}

复制出来的16进制字符串(部分)
在这里插入图片描述反转后的字符串(部分)
在这里插入图片描述虽然细枝末节上跟想象中不太一样,但整体上想要的结果出来了,也不影响结果,复制全文,010新建文件以16进制粘贴
在这里插入图片描述另存为jpg格式,成功打开,但是内容是反的
在这里插入图片描述Windows自带的画图翻转一下,得到flag
在这里插入图片描述

网上的wp,好多都是python做的,代码少,效率还挺高,可惜我不会,只能上java,代码实现不难,细节上bug一堆,浪费不少时间

总结:

  1. 多积攒常见文件16进制标识符,能很快确定文件类型,也能很快从杂乱无章的数据中发现解题思路
  2. 掌握至少一门编程语言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Captain杰派罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值