21.1.15
回来好像好多天了。
现在还眼珠子疼诶。这可不是什么好事情。
我现在好饿,不知道吃什么好。
0x01 xctf rev logmein
- 题目说是算法的逆向。我还以为多难的算法逆向。
- 原来flag可以是输入的字符。
那样照着写一个代码
#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]); } }
- 可以得到输出
RC3-2016-XORISGUD
0x02 xctf rev insanity
- 完全没有思路呜呜呜
- 看WP,是去找str,然后有flag
9447{This_is_a_flag}
吼鸡
- 在IDA可以用SHIFT+F12来快速找字符串。
- strings ./428f6e6f75754fca8964d35b16a4b709 在linux shell下可以找字符串。
0x03 python-trade
- 哦,这可是py交易
安装个逆向工具
pip install uncompyle6 uncompyle6 xxx.pyc 结果这个破玩意不支持python3.9.9 感觉python的各种版本同时存在真的好重要。
shell
[root@oao 1]# uncompyle6 f417c0d03b0344eb9969ed0e1f772091.pyc > f417c0d03b0344eb9969ed0e1f772091.py [root@oao 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)
- 照着写一个逆向函数
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))
- 得到flag:
nctf{d3c0mpil1n9_PyC}
0x04 xctf misc easycap
wireshark,追踪tcp流
FLAG:385b87afc8671dee07550290d16a8071
不过,NPM的包有些真的好好用哈哈哈哈哈
给cmd装个wget 简直无敌