buu re部分wp (五) (未完待续)

开学了所以这两天做的题比较水。。。

  1. [ACTF 2020] Oruga
  2. 简单注册器
  3. [ACTF 2020] easyre
  4. findit

一、 [ACTF 2020] Oruga

这是我目前做过最麻烦的迷宫题了
关键函数是sub_78A,迷宫在byte_201020处,‘ !’ 是终点
在这里插入图片描述
这一段的意思。。大致可以理解为,除了0的地方都为障碍emmmmm
在这里插入图片描述
先写个脚本把迷宫打印出来(方便好看。。。
而且这个迷宫是真的强。。它的设定是遇到零一直走,遇到障碍才变换方向
在这里插入图片描述

这道题不看大佬们的wp我真的不太能琢磨出来。。。我。。废物实锤。。

二、简单注册器

是一道基础安卓逆向叭。。用jeb打开,找到关键函数
在这里插入图片描述
主要就是下面这部分啦,逻辑简单,复制粘贴跑一下flag就拿到了
在这里插入图片描述

#include<iostream>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;

int main()
{
    
    
    char v5[] = "dd2940c04462b4dd7c450528835cca15";
    v5[2] = ((char)(v5[2] + v5[3] - 50));
    v5[4] = ((char)(v5[2] + v5[5] - 48));
    v5[30] = ((char)(v5[31] + v5[9] - 48));
    v5[14] = ((char)(v5[27] + v5[28] - 97));
    int v4;
    for (v4 = 0; v4 < 16; ++v4) 
    {
    
    
        char v0 = v5[31 - v4];
        v5[31 - v4] = v5[v4];
        v5[v4] = v0;
    }
    printf("%s", v5);
}  
//flag 为 59acc538825054c7de4b26440c0999dd

三、[ACTF 2020] easyre

先脱一层upx的壳
if 那一行得出 flag 格式是 ACT{},且可知中间有十二个字符
在这里插入图片描述
shift e 提取出data里的数据
在这里插入图片描述
脚本也简简单单。。。我果然只会做签到题

#include<iostream>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;

int main()
{
    
    
    int v4[12] = {
    
     42, 70, 39, 34,78, 44, 34,40, 73, 63,43,64 };
    int v16[12] = {
    
    };

    int data[100] = {
    
     0x7E, 0x7D, 0x7C, 0x7B, 0x7A, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74,
  0x73, 0x72, 0x71, 0x70, 0x6F, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A,
  0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60,
  0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x56,
  0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4F, 0x4E, 0x4D, 0x4C,
  0x4B, 0x4A, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42,
  0x41, 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38,
  0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2F, 0x2E,
  0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24,
  0x23, 0x20, 0x21, 0x22, 0x00 };
    
    int v19 = 65; int v20 = 84; 
    int v21 = 70; int v22 = 123; int v26 = 125;
   // v16 = v23;
   // v17 = v24;
   // v18 = v25;
    for (int i = 0; i <= 11; ++i)
    {
    
    
        for (int j = 0; j < 100; j++)
        {
    
    
            if (data[j] == v4[i])
                v16[i] = j + 1;  
        }
    }
    for (int i = 0; i <= 11; i++)
    {
    
    
        printf("%c", v16[i]);
    }
   
    return 0;
}

四、 findit

水题。。。APKIDE打开,得到字符串
在这里插入图片描述
从前几位应该为flag 判断凯撒后移10位
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_51357657/article/details/114417890