• pwnable.kr random 之 write up


    ---恢复内容开始---

    首先看源代码:

    #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!
    ");
            system("/bin/cat flag");
            return 0;
        }
    
        printf("Wrong, maybe you should try 2^32 cases.
    ");
        return 0;
    }

    这题就很简单啦,只要输入的key与random异或为0xdeadbeef便得到flag

    首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。
    rand(产生随机数)
    表头文件: #include
    定义函数 :int rand(void)
    函数说明 :

    因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。

     1 #include<stdio.h> 
     2 #include<stdlib.h> 
     3 int main()
     4 {
     5  unsigned  random;
     6  random = rand(); 
     7  
     8  printf("%u", random);
     9  return 0;
    10 }

    得到:

    执行random:

    ---恢复内容结束---

  • 相关阅读:
    教你如何自定义组件
    android应用开发小技巧
    改变Vim在iTerm2中的光标
    Mac添加bash alias
    tmux常用命令
    javascript Date 总结
    ES6箭头函数
    npm常用命令
    ES6 import export
    gitingore
  • 原文地址:https://www.cnblogs.com/liuyimin/p/7275409.html
Copyright © 2020-2023  润新知