- 审题
首先看题目:
可以看出,这是一道关于随机数的题目。看一下代码:
#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;
}
这个代码哪里有问题呢?
- rand()函数
rand()函数在使用的时候,需要先使用srand()函数设置随机数种子,有点像加密算法的密钥或者明文,相同的随机数种子产生的随机数也相同。当没有设置随机数种子时,