";echo mt_rand()."">
当前位置:   article > 正文

php伪随机数爆破种子

php伪随机数爆破种子

一、前言

ctf中有很多php随机数的题目,考察方式一般如下:

给定一个随机数,求产生随机数的种子。

做这种题,先了解点知识

二、基础知识

php产生随机数

php 通过 以下两个函数产生随机数

  1. mt_srand() //播种 Mersenne Twister 随机数生成器。
  2. mt_rand() //生成随机数

应用代码为

  1. <?php
  2. mt_srand(1234);
  3. echo mt_rand()."</br>";
  4. echo mt_rand()."</br>";
  5. echo mt_rand()."</br>";
  6. ?>

结果如下

简单说,给定一个种子,由这个 种子 产生随机数

那 为什么是 伪随机数呢?

因为同一个种子产生的随机数只会根据调用次数的不同产生不同的数。

比如上面的例子,当种子为1234时,

种子产生的前三个随机数就都是
1741177057
1068724585
1335968403

 漏洞产生

所以显而易见,随机数的产生,基于种子。但是,可以通过产生的随机数来猜测种子,进而推测后续的随机数。

需要指明的是,不同版本的php,同一个种子产生的随机数有可能不同。

爆破种子

利用工具

php_mt_seed - PHP mt_rand() seed cracker

使用方法

这个是用C语言编写的工具,里面的一个库是Windows下没有的,推荐用Linux直接用。

我们拖入kali

解压

tar -zxvf php_mt_seed-4.0.tar.gz

进入文件夹

cd php_mt_seed-4.0.tar.gz

编译

make

爆破

./php_mt_seed 1739865909

输出结果:

  1. root@kali:~/桌面/php_mt_seed-4.0# make
  2. gcc -Wall -march=native -mtune=generic -O2 -fomit-frame-pointer -funroll-loops -fopenmp php_mt_seed.c -o php_mt_seed
  3. php_mt_seed.c:47:2: warning: #warning AVX-512 not enabled. Try gcc -mavx512f (on Intel Knights Landing, Skylake-X, or some newer). [-Wcpp]
  4. 47 | #warning AVX-512 not enabled. Try gcc -mavx512f (on Intel Knights Landing, Skylake-X, or some newer).
  5. | ^~~~~~~
  6. root@kali:~/桌面/php_mt_seed-4.0# ./php_mt_seed 1739865909
  7. Pattern: EXACT
  8. Version: 3.0.7 to 5.2.0
  9. Found 0, trying 0xf8000000 - 0xfbffffff, speed 14347.4 Mseeds/s
  10. seed = 0xf8844e10 = 4169420304 (PHP 3.0.7 to 5.2.0)
  11. seed = 0xf8844e11 = 4169420305 (PHP 3.0.7 to 5.2.0)
  12. Found 2, trying 0xfc000000 - 0xffffffff, speed 14578.8 Mseeds/s
  13. Version: 5.2.1+
  14. Found 2, trying 0x00000000 - 0x01ffffff, speed 0.0 Mseeds/s
  15. seed = 0x00abac87 = 11250823 (PHP 5.2.1 to 7.0.x; HHVM)
  16. Found 3, trying 0x0c000000 - 0x0dffffff, speed 129.9 Mseeds/s
  17. seed = 0x0d8938af = 227096751 (PHP 5.2.1 to 7.0.x; HHVM)
  18. Found 4, trying 0x96000000 - 0x97ffffff, speed 88.4 Mseeds/s
  19. seed = 0x979aac4e = 2543496270 (PHP 5.2.1 to 7.0.x; HHVM)
  20. Found 5, trying 0xfe000000 - 0xffffffff, speed 83.8 Mseeds/s
  21. Found 5
  22. root@kali:~/桌面/php_mt_seed-4.0#

根据不同的php版本爆破出了不同的种子,挨个试就行了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/901008
推荐阅读
相关标签
  

闽ICP备14008679号