zoukankan      html  css  js  c++  java
  • [攻防世界

    先exeinfo查一下

    发现是32位文件,用32位的ida打开,反编译主函数

    观察代码主体

    scanf("%s", &v9);
      v3 = strcmp((const char *)&v5, &v9);
      if ( v3 )
        v3 = -(v3 < 0) | 1;
      if ( v3 )
        printf(aFlag_0);
      else
        printf((const char *)&unk_413E90);
    

    追踪aFlag_0,发现此时是错误答案的提示
    故v3的值在第二个if之前一定是0
    考虑到1, -1与1进行|运算结果结果均不为0,则

    v3 = strcmp((const char *)&v5, &v9);
    

    该运算结果为0,即v5与v9字典序相同,为同一字符串
    考虑到v9由我们输入,则v5储存了flag
    又v5由__int128定义,应与xmmword有关,则猜测xmmword_413E34储存了flag,双击追踪,发现其储存的值为"3074656D30633165577B465443545544h"
    按a键将其直接转换为字符串,得到flag

    DUTCTF{We1c0met0DUTCTF}
    
  • 相关阅读:
    【转载】关于C#中动态加载AppDomain的问题
    poj2239
    poj2231
    poj2229
    poj2234
    poj2236
    前 路
    只含一个单词的句子
    做人准则
    改变人生的32句励志名言
  • 原文地址:https://www.cnblogs.com/Here-is-SG/p/15200406.html
Copyright © 2011-2022 走看看