当前位置: 首页 > news >正文

PHP伪随机数

在我们现实生活中由于一些物理原因产生的随机数才是真正的随机数,比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。而对于计算机来说,真正的随机数是不存在的,因为无法通过电信号来实现上面提到的物理过程,对于计算机来说,随机数的生成依赖于一定的算法和种子。

关于生成伪随机数的两个php函数

mt_rand()

使用 Mersenne Twister 算法返回随机整数(随机数生成器)。

mt_rand();
或者
mt_rand(min,max); //这里的min和max都是可选的

如果没有选择max和min那么就是在0~MAX(默认的)之间随机生成

一个完整的生成随机数的代码

<?php  
mt_srand(123);    
echo mt_rand();
?> 

正如前面所说,计算机的随机数是伪随机数的,那么代码来运行试试就能知道了

mt_srand()

mt_srand () 播种 Mersenne Twister 随机数生成器。

mt_srand(seed);

参数 seed:规定播种值、用 seed 来给随机数发生器播种。

该函数用 seed 来给随机数发生器播种。 没有设定 seed 参数时,会被设为随时数。

这个函数就没有什么默认最大值了,而是需要有一个种子值(也就是参数seed)。

那么这里的函数就是先有一个种子值,然后再由这个种子值来生成一个随机值

PHP中伪随机数的漏洞

这里根据上面的总结概述,可以看到计算机中的伪随机数的生成依赖于种子,而这个规律就会让很多看似随机的东西并不随机,因此在特定情形下就可以根据存在的数据去推算出 “种子”,而这也就是 PHP 中的伪随机漏洞,下面用例题看一下

来财

开启环境后看到是随机的数但是泄露了部分ctrl+u看一下源码

本身是没有什么太大的问题,但是,注意到一个php文件直接去访问一下看看

看到了生成随机数的函数

我们需要写脚本将我们知道的部分转换为工具可识别的类型

str1 ='EZcClXTSR7'
str2 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result =''length = str(len(str2)-1)
for i in range(0,len(str1)):for j in range(0,len(str2)):if str1[i] ==  str2[j]:result += str(j) + ' ' +str(j) + ' ' + '0' + ' ' + length + ' 'breakprint(result)

然后我们就得到了

直接复制,然后去 工具中运行就可以了

然后我们再php在线运行一下

<?php
mt_srand(967110903);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);       
}
echo $str;
?>

 得到了所有的字符后,在check.php页面中进行post传参(依据其源码来的),然后就得到了flag

工具

php_mt_seed - PHP mt_rand() seed cracker

CTF-Web25(php_mt_seed的使用)_php mt seed-CSDN博客(我是跟着这篇文章安装的工具)

相关文章:

  • Java Collection(集合) 接口
  • windows powershell 判断 进程号是否存在
  • OS进程调度
  • LeetCode 3355.零数组变换 I:差分数组
  • Java课堂笔记7
  • php://filter的trick
  • 直线型绝对值位移传感器:精准测量的科技利刃
  • 佰力博科技与您探讨压电材料的原理与压电效应的应用
  • modelscope v1.26.0全新发布!云端模型下载加速+多重安全升级,打造新时代AI开发新体验!
  • AI护航化工:《山西省危化品视频智能分析指南》下的视频分析重构安全体系
  • Vue3 组件之间传值
  • elementui初学1
  • 第15天-NumPy科学计算实战:从基础到图像处理
  • 是德科技 | 单通道448G未来之路:PAM4? PAM6? PAM8?
  • 给几张图片和一段文字,怎么制作成带有语音的视频---php
  • FPGA降低功耗研究
  • spring cloud config更新配置
  • 【VLNs篇】02:NavGPT-在视觉与语言导航中使用大型语言模型进行显式推理
  • SAP-ABAP:ABAP异常处理与SAP现代技术融合—— 面向云原生、微服务与低代码场景的创新实践
  • digitalworld.local: FALL靶场
  • 网站打不开 清理缓存后可以打开/安徽seo报价
  • 网站建设有哪些平台/友情链接交换标准
  • 法院网站建设方案/seo高级教程
  • 上海数据开放网站建设/近期舆情热点事件
  • 网站拨测人员是干嘛的/站长工具在线查询
  • 网站建设前端后端/长沙网络营销学校