pwnable.kr [random]
Daddy, teach me how to use random value in programming!
ssh random@pwnable.kr -p2222 (pw:guest)
代码如下
#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;
}
自己写一个试一试,发现几次都是41,网上查了查rand()
函数
rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。关于随机数种子请参考srand()。
那么random的值我们知道了就可以利用与或的逆运算计算值为0xdeadbeef^random
即可。
但是Linux和win的值不一样,Linux的值为1804289383
那么我们要的值就为B526FB88
输入时应为3039230856