每日一题 pwnable.kr random

这题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…,用虚拟机跑就可以了。]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值