• BUUCTF-RE-[GUET-CTF2019]re


    查壳

    image-20200804223814427

    用的是脱壳工具

    UPX Shell 它通过命令行调用upx主程序,支持EXE、COM、DLL、SYS、OCX等多种文件格式的压缩

    下载地址:http://ct.ghpym.com/dir/7369060-37024569-ee3032

    找关键函数

    搜索字符串,查交叉引用处,就能找到

    image-20200811231219947

    有一个数组 里面是这样子的

    _BOOL8 __fastcall sub_4009AE(char *a1)
    {
      if ( 1629056 * *a1 != 166163712 )
        return 0LL;
      if ( 6771600 * a1[1] != 731332800 )
        return 0LL;
      if ( 3682944 * a1[2] != 357245568 )
        return 0LL;
      if ( 10431000 * a1[3] != 1074393000 )
        return 0LL;
      if ( 3977328 * a1[4] != 489211344 )
        return 0LL;
      if ( 5138336 * a1[5] != 518971936 )
        return 0LL;
      if ( 7532250 * a1[7] != 406741500 )
        return 0LL;
      if ( 5551632 * a1[8] != 294236496 )
        return 0LL;
      if ( 3409728 * a1[9] != 177305856 )
        return 0LL;
      if ( 13013670 * a1[10] != 650683500 )
        return 0LL;
      if ( 6088797 * a1[11] != 298351053 )
        return 0LL;
      if ( 7884663 * a1[12] != 386348487 )
        return 0LL;
      if ( 8944053 * a1[13] != 438258597 )
        return 0LL;
      if ( 5198490 * a1[14] != 249527520 )
        return 0LL;
      if ( 4544518 * a1[15] != 445362764 )
        return 0LL;
      if ( 3645600 * a1[17] != 174988800 )
        return 0LL;
      if ( 10115280 * a1[16] != 981182160 )
        return 0LL;
      if ( 9667504 * a1[18] != 493042704 )
        return 0LL;
      if ( 5364450 * a1[19] != 257493600 )
        return 0LL;
      if ( 13464540 * a1[20] != 767478780 )
        return 0LL;
      if ( 5488432 * a1[21] != 312840624 )
        return 0LL;
      if ( 14479500 * a1[22] != 1404511500 )
        return 0LL;
      if ( 6451830 * a1[23] != 316139670 )
        return 0LL;
      if ( 6252576 * a1[24] != 619005024 )
        return 0LL;
      if ( 7763364 * a1[25] != 372641472 )
        return 0LL;
      if ( 7327320 * a1[26] != 373693320 )
        return 0LL;
      if ( 8741520 * a1[27] != 498266640 )
        return 0LL;
      if ( 8871876 * a1[28] != 452465676 )
        return 0LL;
      if ( 4086720 * a1[29] != 208422720 )
        return 0LL;
      if ( 9374400 * a1[30] == 515592000 )
        return 5759124 * a1[31] == 719890500;
      return 0LL;
    }
    

    解题脚本

    a0 = 166163712 // 1629056
    a1 = 731332800 // 6771600
    a2 = 357245568 // 3682944
    a3= 1074393000 // 10431000
    a4= 489211344 // 3977328
    a5 = 518971936 // 5138336
    a6='_'
    a7= 406741500 // 7532250
    a8= 294236496 // 5551632
    a9= 177305856 // 3409728
    a10= 650683500 // 13013670
    a11= 298351053 // 6088797
    a12= 386348487 // 7884663
    a13= 438258597 // 8944053
    a14= 249527520 // 5198490
    a15= 445362764 // 4544518
    a16= 981182160 //10115280
    a17= 174988800 // 3645600
    a18= 493042704 // 9667504
    a19= 257493600 // 5364450
    a20= 767478780 // 13464540
    a21= 312840624 // 5488432
    a22= 1404511500 // 14479500
    a23= 316139670 // 6451830
    a24= 619005024 // 6252576
    a25= 372641472 // 7763364
    a26= 373693320 // 7327320
    a27= 498266640 // 8741520
    a28= 452465676 // 8871876
    a29= 208422720 // 4086720
    a30= 515592000 // 9374400
    a31= 719890500 // 5759124
    
    print(chr(a0),chr(a1),chr(a2),chr(a3),chr(a4),chr(a5),a6,chr(a7),chr(a8),chr(a9),chr(a10),chr(a11),chr(a12),chr(a13),chr(a14),chr(a15),chr(a16),chr(a17),chr(a18),chr(a19),chr(a20),chr(a21),chr(a22),chr(a23),chr(a24),chr(a25),chr(a26),chr(a27),chr(a28),chr(a29),chr(a30),chr(a31))
    

    这里是出题失误,缺一位a6,通过爆破得到。a6=1。

    f l a g { e _ 6 5 4 2 1 1 1 0 b a 0 3 0 9 9 a 1 c 0 3 9 3 3 7 }==>f l a g { e 1 6 5 4 2 1 1 1 0 b a 0 3 0 9 9 a 1 c 0 3 9 3 3 7 }

  • 相关阅读:
    公用导航栏的根据url控制选中导航js
    页面切换出动晃动解决
    redis五大数据类型
    redis简介
    Linux安装redis
    各种锁的理解
    原子引用
    理解CAS
    彻底玩转单例模式
    Volatile
  • 原文地址:https://www.cnblogs.com/Nickyl07/p/13524531.html
Copyright © 2020-2023  润新知