1.放入ida中, F5反汇编
-
2.双击查看s
3.双击查看t
4.结合2、3两步再看*(&t + i + 10) = s[i] + v3 ,应该是把s进行一番操作再存到t中,就是flag了
5.根据逻辑重写代码
#include <bits\stdc++.h>
using namespace std;
int main(){
char v3;
char s[] = "c61b68366edeb7bdce3c6820314b7498";
char t[] = "SharifCTF{????????????????????????????????}";
char*p = t;
for(int i = 0;i < strlen(s);++i){
if ( (i & 1) != 0 )
v3 = 1;
else
v3 = -1;
(*(p+i+10)) = s[i] + v3;
}
cout << t;
return 0;
}
6.运行结果
SharifCTF{b70c59275fcfa8aebf2d5911223c6589}