这题cat random.c发现是一个简单的伪随机数
代码如下:
#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; }
要求输入key,key^random之后为0xdeadbeef
此处的伪随机数没有设置种子(一般用srand()来设置),如果不设置的话,相当于每次都是srand(1)。
其实这题写个c脚本就可以跑了
#include<stdio.h> #include<stdlib.h> int main(){ unsigned random,key; random = rand(); key = random^0xdeadbeef; printf("%u",key); }
但是我本地跑出来41…不知道为什么[后来…我发现我是win10跑的,出题环境是ubuntu…,用虚拟机跑就可以了。]