版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35396598/article/details/85467748
这道题
#include <stdio.h>
int main(){
unsigned int random;
random = rand(); // random value!
unsigned int key=0;
scanf("%d", &key);
if( (key ^ random) == 0xdeadbeef ){
printf("Good!\n");
system("/bin/cat flag");
return 0;
}
printf("Wrong, maybe you should try 2^32 cases.\n");
return 0;
}
看网上的师傅们的意思
大概就是两点
1 rand()函数初始化的值是固定的
2 a^b = c ,a = c^b,也就是异或是可逆的
所以输入
0x6b8b4567^0xdeadbeef
也就是
0xb526fb88
=3039230856
就OK