0x00 rand()函数

rand()的随机数默认最大32767,可以用于爆破这里不再举例。

0x01 mt_rand()和mt_srand()函数

mt_srand()函数用于播种,PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,当PHP版本到了5.2.1后,通过修改算法修补了奇数和偶数的播种相等的问题,这样也导致了php5.2.0前后导致同一个播种后的mt_rand()的值不一样
5.2.6>php>4.2.0默认播种的算法也不是很强悍,当目标>5.20时候,我们exp运行的环境也要是>5.20的版本,mt_rand处理的数据都是不安全的。在web应用里很多都使用mt_rand来处理随机的session,比如密码找回功能等等。
如果你知道一个mt_rand()的值就可以,就可以推断出mt_srand()的种子值,从而推断出下一个mt_rand()值。
工具:http://download.openwall.net/pub/projects/php_mt_seed/php_mt_seed-3.2.tar.gz

root@kali:~# php5 -r ‘mt_srand(123123123); echo mt_rand(),”\n”; echo mt_rand(),”\n”;’
519979806
1474031914

root@kali:~/php_mt_seed-3.2# ./php_mt_seed 519979806
Found 0, trying 100663296 - 134217727, speed 34831590 seeds per second
seed = 123123123
Found 1, trying 1509949440 - 1543503871, speed 34497359 seeds per second
seed = 1525862101
Found 2, trying 3992977408 - 4026531839, speed 34601190 seeds per second
seed = 3994356879
Found 3, trying 4261412864 - 4294967295, speed 34578163 seeds per second
Found 3

可见程序给出了三个种子,逐个测试即可:
root@kali:~# php5 -r ‘mt_srand(1525862101); echo mt_rand(),”\n”; echo mt_rand(),”\n”;’
519979806
14803299
root@kali:~# php5 -r ‘mt_srand(3994356879); echo mt_rand(),”\n”; echo mt_rand(),”\n”;’
519979806
978260809

123123123为真正的种子,这样就可以轻松拿到真正的种子,下一个要产生的随机数也就知道了

最新文章

  1. 无意之间发现的Servlet3.0新特性@WebServlet
  2. HDU 4946 Area of Mushroom(2014 Multi-University Training Contest 8)
  3. Eclipse设置、调优、使用(转自)
  4. 高质量C++[转]
  5. Eclipse中使用自己封装的jar包的过程
  6. C语言中Static和Const关键字的的作用
  7. Spring AOP 系列总括
  8. TFS错误 TF31004:在连接带xxx.xxx.xxx.xxx上的Team Foundation Server时遇到错误。请等待几分钟,然后重试。如果问题仍然存在,请与服务器管理员联系
  9. .NET代码编写规范 整理
  10. jquery 点点滴滴小记
  11. tyvj1185营业额统计
  12. Excel2010 柱形图与折线图制表
  13. linux c 头文件
  14. PHP进口Excel至MySQL方法
  15. [翻译]用Dart塑造Android未来
  16. HDU 2018 undefined
  17. Thread.interrupt()方法理解
  18. Linux 性能监测:Memory
  19. vue 路由守卫
  20. android开发——Android开发中的47个小知识

热门文章

  1. spring mvc 参数传递的三种方式
  2. Flex移动皮肤开发(一)
  3. SVG在网页中的四种使用方式
  4. nginx安装配置
  5. EntityFramework Core 1.1有哪些新特性呢?我们需要知道
  6. linux开机自启动服务优化设置命令
  7. CodeForces 451B
  8. HDU5726(RMQ&&二分)
  9. leetcode刷题总结
  10. 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行