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+"}")
    

    在这里插入图片描述

  • 相关阅读:
    做了点数论的题
    2016日报总结
    2016在H3C
    2017春节小目标
    2016项目小总结
    明明的随机数
    计算字符个数
    字符串最后一个单词的长度
    字符串分隔
    考研回忆
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273652.html
Copyright © 2011-2022 走看看