21.1.15

回来好像好多天了。

现在还眼珠子疼诶。这可不是什么好事情。

我现在好饿,不知道吃什么好。

0x01 xctf rev logmein

  1. 题目说是算法的逆向。我还以为多难的算法逆向。
  2. 原来flag可以是输入的字符。
  3. 那样照着写一个代码

    #include<bits/stdc++.h>
    int main(){
    
      char v8[23333];
      char v7[233333];
      strcpy(v8, ":\"AL_RT^L*.?+6/46");
      strcpy(v7, "harambe");
      int v6 = 7;
    
      for(int i=0;i<strlen(v8);++i){
        std::cout<<(char)((char)(v7[i%v6] ) ^ v8[i]);
      }
      
    }
    
  4. 可以得到输出RC3-2016-XORISGUD

0x02 xctf rev insanity

  1. 完全没有思路呜呜呜
  2. 看WP,是去找str,然后有flag
  3. 9447{This_is_a_flag}

吼鸡

  1. 在IDA可以用SHIFT+F12来快速找字符串。
  2. strings ./428f6e6f75754fca8964d35b16a4b709 在linux shell下可以找字符串。

0x03 python-trade

  1. 哦,这可是py交易
  2. 安装个逆向工具

    pip install uncompyle6
    uncompyle6 xxx.pyc
    
    结果这个破玩意不支持python3.9.9
    感觉python的各种版本同时存在真的好重要。
  3. shell

    [root@oao 1]# uncompyle6 f417c0d03b0344eb9969ed0e1f772091.pyc > f417c0d03b0344eb9969ed0e1f772091.py
    [root@oao 1]#
    1. 剩下的就是简单的代码逆向了。
    correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
    
    def encode(message):
        s = ''
        for i in message:
            x = ord(i) ^ 32
            x = x + 16
            s += chr(x)
        return base64.b64encode(s)
    1. 照着写一个逆向函数
    def decode(str):
      str=base64.b64decode(str)
      s=""
      for i in str:
        print(i,end=" ")
        x= i - 16
        x= x^32
        s+=chr(x)
      return s
    
    print(decode(correct))
    
    1. 得到flag:nctf{d3c0mpil1n9_PyC}

0x04 xctf misc easycap

wireshark,追踪tcp流

FLAG:385b87afc8671dee07550290d16a8071

不过,NPM的包有些真的好好用哈哈哈哈哈

给cmd装个wget 简直无敌

最后修改:2022 年 01 月 15 日
如果觉得我的文章对你有用,请随意赞赏