题目链接 http://bxs.cumt.edu.cn/challenge/reverse/%E8%AF%BE%E5%A0%828.exe

打开题目

矿大BXSCTF-RE-入门8

main函数这里大致流程可以读懂,输入一串长度63位的字符,进行一串处理后,得到V3,将存在byte_403024[]处的字符串逐个与v3异或,然后得到flag.

但是前面的函数阅读起来十分困难,绕地圈很多,动态调试也没有找到头绪。

然后学到了新的概念"信息泄露",这样单独与某一个字符进行异或,可以进行**来进行**。

i=[100,0,71,71,67,4,70,80,107,5,71,107,64,4,4,4,4,4,4,4,4,4,4,4,4,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4,4, 4, 4 ,4 ,4, 4 ,4, 4 ,4 ,4 ,4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 107, 88 ,4 ,4, 83, 21]
print(len(i))
for j in range(65,123):
       for k in i:
              print(chr(k^j),end=" " )

i为存放在byte_4032024处的63位字符。

以上是我写的Python脚本,但是运行起来很慢...

于是写了C++的

#include<iostream>
using namespace std; 
int main(){
int i[63]={100,0,71,71,67,4,70,80,107,5,71,107,64,4,4,4,4,4,4,4,4,4,4,4,4,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4,4, 4, 4 ,4 ,4, 4 ,4, 4 ,4 ,4 ,4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 107, 88 ,4 ,4, 83, 21};
for(int j=0;j<=124;j++){
    for(int k=0;k<63;k++){
    	cout<<char(i[k]^j%128);
	}
	cout<<endl;
}
}

得到结果矿大BXSCTF-RE-入门8

 

相关文章:

  • 2021-07-20
  • 2018-09-09
  • 2022-02-23
  • 2021-12-16
  • 2022-01-19
  • 2021-12-04
  • 2022-01-16
猜你喜欢
  • 2021-08-12
  • 2021-08-11
  • 2021-11-13
  • 2021-05-08
  • 2022-12-23
  • 2021-06-28
  • 2021-05-17
相关资源
相似解决方案