• [BUUCTF]REVERSE——[2019红帽杯]easyRE


    [2019红帽杯]easyRE

    附件

    步骤:

    1. ida载入,没有main函数,就先检索了程序里的字符串
      在这里插入图片描述
      发现了base64加密的特征字符串,双击you found me跟进,找到了调用它的函数,函数很长,我们分开看
    2. 首先我们输入的数据与它下表异或后等于数组a
      在这里插入图片描述
      数组a里的值,一开始ida分析出来是v17这种的参数,我改了一部分,太多了没有全部修改完,它这边定义了一个长度为36的数组,数值看图
      在这里插入图片描述
      先写个异或脚本,看一下我们输入的字符串是什么
    a = [73,111,100,108,62,81,110,98,40,111,99,121,127,
         121,46,105,127,100,96,51,119,125,119,101,107,
         57,123,105,121,61,126,121,76,64,69,67]
    
    flag=""
    
    for i in range(36):
        flag+=chr(a[i]^i)
    
    print (flag)
    

    在这里插入图片描述
    看模样都知道不是flag,继续往下看
    在这里插入图片描述

    利用在线解密工具将得到的字符串base64解密10次即可得到我们第二次输入的数据
    base64加密10次后的密文
    在这里插入图片描述
    自己python3的base64库出了点问题,就用的在线工具解密
    在这里插入图片描述
    https://bbs.pediy.com/thread-254172.htm
    得到了一个网站,进去就是一个看雪的帖子,看网页源码也没找到flag
    程序都结束了,还没找到flag,看了其他师傅的wp后才知道,在我们base64加密结束后,下面有调用一个sub_400D35的函数
    在这里插入图片描述
    在这里插入图片描述
    24行,v5开始的数组和我们已知的一个数组抑或后能得到‘flag’的字样,我们可以反向异或得到v5,之后进行28行的异或操作,得到v2,看看v2是啥

    我们以知的数组
    在这里插入图片描述

    v5 = ''
    enc1 = 'flag'
    v2 = ''
    enc = [0x40,0x35,0x20,0x56,0x5D,0x18,0x22,0x45,0x17,0x2F,0x24,0x6E,0x62,0x3C,0x27,0x54,0x48,0x6C,0x24,0x6E,0x72,0x3C,0x32,0x45,0x5B]
    for i in range(4):
        v5 += chr(enc[i] ^ ord(enc1[i]))
    print (v5)
    
    for i in range(len(enc)):
        v2 += chr(enc[i] ^ ord(v5[i%4]))
    print(v2)
    

    在这里插入图片描述
    flag{Act1ve_Defen5e_Test}

  • 相关阅读:
    BackupPC备份
    H5日常使用
    无互联网环境安装docker
    docker 部署zabbix
    docker: error pulling image configuration:
    java web开发入门六(spring mvc)基于intellig idea
    java web开发入门七(mybatis)基于intellig idea
    java web开发入门九(Maven使用&idea创建maven项目)基于intellig idea
    Intellij IDEA使用一 创建javaweb项目并配置tomcat
    java web开发入门四(spring)基于intellig idea
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273658.html
Copyright © 2020-2023  润新知