zoukankan      html  css  js  c++  java
  • [BUUCTF]REVERSE——[ACTF新生赛2020]easyre

    [ACTF新生赛2020]easyre

    附件

    步骤

    1. 查壳,32位程序,upx壳儿
      在这里插入图片描述

    2. 脱完壳儿,扔进ida
      在这里插入图片描述

    3. 分析
      一开始给我们定义了一个数组,
      v4=[42,70,39,34,78,44,34,40,73, 63, 43, 64]
      之后让我们输入一个字符串,根据43行的if判断可以知道我们输入的字符串的开头是ACT{},就是flag
      根据48行的if判断可知。ACT{}括号里的值长度为12,v4=byte_402000[输入的数组的每一位值-1]
      在ida里可以看到byte_402000数组的值
      在这里插入图片描述
      根据这个算法逆向一下就能得到我们输入的字符串,也就是flag

    v4 = [42,70,39,34,78,44,34,40,73,63,43,64]
    string = chr(0x7E)+"}|{zyxwvutsrqponmlkjihgfedcba`_^][ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(" + chr(0x27) + '&%$# !"'
    flag=""
    
    for i in v4:
        for j in range(1,len(string)):
            if i == ord(string[j]):
                flag+=chr(j+1)
    
    print ("flag{"+flag+"}")
    

    在这里插入图片描述

  • 相关阅读:
    Rocket
    Rocket
    Rocket
    Rocket
    POJ 1849 树的直径 Two
    SGU 495 Kids and Prizes
    HDU 4336 概率DP 状压
    HDU 4089 && UVa 1498 Activation 带环的概率DP
    SGU 149 树形DP Computer Network
    暑假集训刷题记录
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273652.html
Copyright © 2011-2022 走看看