zoukankan      html  css  js  c++  java
  • [2019红帽杯]childRE

    太久没有写re题了,今天来re看了看

    首先简单的看一看代码整体结构

    很容易就可以知道,这里是个按表与下标来验证的,一个取余一个除数,不就是除数*商+余数等于原数,所以我们要求的就是原数

     写出一下脚本

    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
        string s1 = "(_@4620!08!6_0*0442!@186%%0@3=66!!974*3234=&0^3&1@=&0908!6_0*&";
        string s2 = "55565653255552225565565555243466334653663544426565555525555222";
        string s3 = "1234567890-=!@#$%^&*()_+qwertyuiop[]QWERTYUIOP{}asdfghjkl;'ASDFGHJKL:"ZXCVBNM<>?zxcvbnm,./";
        string s4 = "";
        for (int j = 0; j < 62; j++)
        {
            int idx1 = -1, idx2 = -1;
            for (int i = 0; i < s3.size(); i++)
            {
                if (s3[i] == s2[j])
                {
                    idx1 = i;
                }
                if (s3[i] == s1[j])
                {
                    idx2 = i;
                }
            }
            s4 = s4+(char)(idx1*23 + idx2);
        }
        cout << s4;
    
    }

     接下来看了看UnDecorateSymbolName函数,百度了一下,让函数容易识别,也就是C++在编译函数的时候,会把一下关键字用些特殊的符号代替,这里我就直接去嫖了下别人师傅的wp

     得到的原函数是:?My_Aut0_PWN@R0Pxx@@AAEPADPAE@Z

    接着网上看,v14是我们输入的,进入了v4,然后经过了一些奇怪的加密,不过这个name其实就是我们上面求出来的函数名

     在我点进去这个函数的时候,发现是个递归函数,然后一个一个的赋值,所以可以知道只是简单的换位而已

     并且通过动调,可以进一步得到验证

     

     接下来输入A-Z再然后0-4输入进去,查看其交换的顺序即可

    这里接着用下43v3rY0unG师傅的博客,差点忘了,上面那个递归函数是个二叉树,没有仔细逆(用不惯ida的调试(没想到我的ida终于可以调试了,以前一调试直接卡死),周末有时间,拿x64dbg调试一下试试)

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        char name[32] = "?My_Aut0_PWN@R0Pxx@@AAEPADPAE@Z";
        int biao[] = { 0x50, 0x51, 0x48, 0x52, 0x53, 0x49, 0x44, 0x54, 0x55, 0x4a, 0x56, 0x57, 0x4b, 0x45, 0x42, 0x58, 0x59, 0x4c, 0x5a, 0x5b, 0x4d, 0x46, 0x5c, 0x5d, 0x4e, 0x5e, 0x5f, 0x4f, 0x47, 0x43, 65 };
        char input[32] = { 0 };
        int i;
        for (i = 0; i < strlen(name); i++)
            input[biao[i] - 65] = name[i];
        puts(input);
        return 0;
    }

    在md5加密得到

    可惜这种题目现在都是签到题了,都不会出了,毕竟数据结构起步才是个签到题,不过最近补了写3环和0环知识,感觉又可以接着往下刷了

  • 相关阅读:
    Vue-cli / webpack 加载静态js文件的方法
    shell curl 下载图片并另存为(重命名)
    sublime 技巧与快捷键篇
    es5 温故而知新 创建私有成员、私有变量、特权变量的方法
    es5 温故而知新 简单继承示例
    js 万恶之源 是否滚动到底部?
    ES6 基础知识
    jquery操作select(取值,设置选中)
    WebApi深入学习--特性路由
    Asp.net 代码设置兼容性视图
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/14253954.html
Copyright © 2011-2022 走看看