要了解伪随机数的爆破首先你的先知道什么是PHP种子,
借用在rand()函数中,我们可以通过设置随机数种子来影响随机数的生成。例如,在rand()函数中加入了随机数种子编码后,每次运行程序将会生成同样的随机整数序列。这个就是伪随机数,因为种子是已知的。
这里使用
X1NOoo大神的举例:
mt_scrand()
 mt_rand()  
 mt_scrand(seed)这个函数的意思就是分发seed种子,种子有了后,靠mt_rand()生成随机数。
 例如我们写一个脚本
<?php  
 mt_srand(55555);    
 echo mt_rand()."<br/>";
 ?> 
 //输出277249736
 如果我们多输入几次呢
<?php  
 mt_srand(12345);    
 echo mt_rand()."<br/>";
 echo mt_rand()."<br/>";
 echo mt_rand()."<br/>";
 echo mt_rand()."<br/>";
 ?>
//输出277249736
 230135029
 1872932720
 1536240435
 大家可以发现,这就是伪随机数的漏洞,存在可预测性。
例如,下面的程序演示如何使用rand()函数和随机数种子:
| 1 2 3 4 5 6 7 8 | 
 
 
 
 
 
 
 | 
上述代码中,我们指定了随机数种子为10。通过srand()函数设置随机数种子后,程序将会生成一个包含10个整数的随机数序列。每次运行程序都会生成同样的10个整数。这就是随机数种子的作用。
例题:
<?php
 error_reporting(0);
 include("flag.php");
 if(isset($_GET['r'])){
     $r = $_GET['r'];
     mt_srand(372619038);
     if(intval($r)===intval(mt_rand())){
         echo $flag;
     }
 }else{
     highlight_file(__FILE__);
     echo system('cat /proc/version');
 }
这道题目也是一样,由于种子是可以猜出的,所以
这道题实际上是一个伪随机数,因为在随机数生成中,种子值是一个起始点,它用于初始化随机数生成器。随机数生成器根据种子值生成一系列伪随机数。如果使用相同的种子值,随机数生成器将生成相同的随机数序列。
直接上脚本

r=1155388967
得到flag



















