【PwnTheBox逆向 asong】

本文记录了一道PwnTheBox逆向题——re-asong,主要涉及代码分析和解密过程。首先,通过IDA分析发现函数逻辑复杂,尤其是词频统计部分,通过动态调试明确了统计原理。接着,详细解释了flag的格式验证和加密输出,特别是对数组的打乱顺序操作。最后,引用官方WP作为参考,强调冷静分析的重要性。
摘要由CSDN通过智能技术生成

前言

记录一道PwnTheBox逆向题,原题是2018QCTF-re-asong

一、代码分析

题目一共给了3个附件,IDA打开函数后发现函数不多,但是总体逻辑并不那么简单,还是有些很绕的地方:
在这里插入图片描述一开始非常绕的地方是那个词频统计的地方,这里看到v4的生成与输入无关,就想着动态调试看看v4是什么,猜测v4是个列表,因为后面看到了对v4取列表元素的操作,但是又没理解这个怎么样的列表,后面看了WP,明白了词频统计的过程:
在这里插入图片描述这里我们可以看到按字节读取文件中的内容,经过sub_400936,算出一个数v2,然后a2[v2]++,那么这个v2是什么呢:
在这里插入图片描述在这里插入图片描述不同的字符对应a2中不同的索引位置,一旦读取的是某个字符,就在其对应的位置上加1,其中索引0-9对应数字0-9,10-35对应大小写字母,这里统计不区分大小写,后面是些特殊字符,到这里就明白了为什么是词频统计了。
在这里插入图片描述这里是对flag的一个格式验证
在这里插入图片描述这里是加密输出部分,相对来说逻辑还是能看懂的,复杂一点的地方就是打乱顺序的部分:
在这里插入图片描述这里是按照dword_6020a0中的内容,对a1进行重新排列,可以建立一个字典关系,逆起来就清晰了
在这里插入图片描述

二、代码示例

看来看去还是官方WP写的最有灵性:

#!/usr/bin/python3
# -*- coding:utf-8 -*-
s = [22, 0, 6, 2, 30, 24, 9, 1, 21, 7, 18, 10,</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值