php伪随机数爆破

涉及到的函数为mt_rand()

mt_rand(min, max)

返回min到max之间的伪随机数,如果参数缺省,则返回0到RAND_MAX之间的伪随机数。

不同于常规的伪随机数生成器,mt_rand()函数使用内置的算法直接生成种子,来生成伪随机数,不需要用户手动播种。

Note: 自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 给随机数发生器播种,因为现在是由系统自动完成的。

php_mt_seed

伪随机数爆破工具,原理很简单,跑遍所有串,对每个串求伪随机数,如果输入串为当前伪随机数子集,即找到了相应的种子。

可以看到这个工具速度还是很快的,php早期版本的伪随机数都可以在零点几秒内全部跑完,到了php7.1以后时间稍长,但都可以接受。

这里我随便输入了一个数跑了下

botm@AoiAZU:~/php_mt_seed-4.0$ ./php_mt_seed 123878781
Pattern: EXACT
Version: 3.0.7 to 5.2.0
Found 0, trying 0x40000000 - 0x43ffffff, speed 11930.5 Mseeds/s
seed = 0x4025821e = 1076199966 (PHP 3.0.7 to 5.2.0)
seed = 0x4025821f = 1076199967 (PHP 3.0.7 to 5.2.0)
Found 2, trying 0xfc000000 - 0xffffffff, speed 13638.3 Mseeds/s
Version: 5.2.1+
Found 2, trying 0x0e000000 - 0x0fffffff, speed 169.0 Mseeds/s
seed = 0x0ef838f0 = 251148528 (PHP 5.2.1 to 7.0.x; HHVM)
Found 3, trying 0x7e000000 - 0x7fffffff, speed 161.6 Mseeds/s
seed = 0x7e4ff30c = 2119168780 (PHP 5.2.1 to 7.0.x; HHVM)
seed = 0x7e4ff30c = 2119168780 (PHP 7.1.0+)
Found 5, trying 0x88000000 - 0x89ffffff, speed 161.0 Mseeds/s
seed = 0x886399c1 = 2288228801 (PHP 5.2.1 to 7.0.x; HHVM)
Found 6, trying 0x90000000 - 0x91ffffff, speed 160.7 Mseeds/s
seed = 0x91db7e3c = 2447081020 (PHP 7.1.0+)
Found 7, trying 0x94000000 - 0x95ffffff, speed 160.6 Mseeds/s
seed = 0x9471380c = 2490447884 (PHP 5.2.1 to 7.0.x; HHVM)
Found 8, trying 0xa6000000 - 0xa7ffffff, speed 160.0 Mseeds/s
seed = 0xa71454a1 = 2803127457 (PHP 5.2.1 to 7.0.x; HHVM)
Found 9, trying 0xfe000000 - 0xffffffff, speed 155.7 Mseeds/s
Found 9

速度相当夸张,一秒钟169M,1.69亿一秒。

相关题目

[GWCTF 2019]枯燥的抽奖



这里的图直接搬的别的博客的,昨天写的题目。

他这里生成的伪随机数还不是直接用来当答案,他是用伪随机数当字母串的下标。

str1='abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
str2='utP4yKDDVV'
str3 = str1[::-1] # 倒序
length = len(str2) # 10
res=''
for i in range(len(str2)):
for j in range(len(str1)):
if str2[i] == str1[j]:
res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' '
break
print res
————————————————
版权声明:本文为CSDN博主「WHOAMIAnony」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45521281/article/details/107302795

搬的脚本,意思是将随机出来的伪随机串的下标还原回来。

对于str2的每一位,找到其在str1中的下标,即为一开始的伪随机串。

最后的结果

20 20 0 61 19 19 0 61 51 51 0 61 30 30 0 61 24 24 0 61 46 46 0 61 39 39 0 61 39 39 0 61 57 57 0 61 57 57 0 61

这个串是对php_mt_seed串的输入做了适应,似乎是离散参数的规范,但我没搞明白为什么要重复一次。

似乎是 “随机数a 随机数a min max”这样一个格式,四个一组。

整一串离散参数丢进php_mt_seed跑一会出种子,然后再用php里面的mt_rand(种子)跑出来完整的随机数串

php伪随机数爆破的更多相关文章

  1. 种子爆破&[GWCTF 2019]枯燥的抽奖

    伪随机数的爆破,种子爆破 做到了一道题,就是有个伪随机数爆破的漏洞,当时尽管是看到了这两个敏感的函数,但是先去看其他的了,没有看到什么漏洞,所以我当时是准备直接强行爆破,之后看到使用伪随机数爆破的方式 ...

  2. php伪随机数漏洞 以及脚本php_mt_seed的使用教程

    前几天在群里看到了一个题目,发现自己没有接触过这个伪随机数这个漏洞,在此记录下. 搜索这两个函数 mt_scrand() mt_rand() mt_scrand(seed)这个函数的意思,是通过分发s ...

  3. ubuntu进行子域名爆破

    好记性不如烂笔头,此处记录一下,ubuntu进行子域名的爆破. 先记录一个在线的子域名爆破网址,无意中发现,很不错的网址,界面很干净,作者也很用心,很感谢. https://phpinfo.me/do ...

  4. 使用python处理子域名爆破工具subdomainsbrute结果txt

    近期学习了一段时间python,结合自己的安全从业经验,越来越感觉到安全测试是一个体力活.如果没有良好的coding能力去自动化的话,无疑会把安全测试效率变得很低. 作为安全测试而言,第一步往往要通过 ...

  5. 数据库密码爆破HexorBase

    数据库密码爆破HexorBase   数据库服务是服务器上最常见的一类服务.由于数据库保存大量的敏感信息,所以它的安全非常重要.测试数据库服务安全的重要方式,就是检查口令的强壮度.   Kali Li ...

  6. metasploit模块字典爆破tomcat

    祭出神器MSF 再用auxiliary/scanner/http/tomcat_mgr_login 这个辅助模块爆破下弱口令 这里就用模块自带的字典吧   然后简单配置下.RUN 需要自己定义字典的话 ...

  7. 爆破一个二元函数加密的cm

    系统 : Windows xp 程序 : cztria~1 程序下载地址 :http://pan.baidu.com/s/1slUwmVr 要求 : 爆破 使用工具 : OD 可在看雪论坛中查找关于此 ...

  8. 为什么说Java中的随机数都是伪随机数?

    什么是伪随机数?  1.伪随机数是看似随机实质是固定的周期性序列,也就是有规则的随机. 2.只要这个随机数是由确定算法生成的,那就是伪随机,只能通过不断算法优化,使你的随机数更接近随机.   (随机这 ...

  9. 初试在线破解工具Hydra爆破3389服务器

    hydra是一款全能的暴力破解工具,功能强大,几乎支持所有的协议,是著名黑客组织thc开发的. 在Kali Linux下已经是默认安装的,于是测试爆破一下自己的一台VM虚拟机服务器.hydra还支持G ...

  10. python黑客编程之端口爆破

    #coding:utf-8 from optparse import OptionParser import time,re,sys,threading,Queue import ftplib,soc ...

随机推荐

  1. 基于Potplayer类播放器或Action!类录屏软件调取摄像头方式的定时抓拍保存图像方法小结

    前面已经总结了基于Maxmspjitter的相关方法,还有基于Unity的,还有基于Openframeworks的,今天来一篇基于普通软件的: 1.专业播放器类的软件,如Potplayer.vlc.o ...

  2. CentOS7安装部署ClickHouse(单机版&&集群部署)

    1.1 什么是ClickHouse ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报 ...

  3. P4688 [Ynoi Easy Round 2016] 掉进兔子洞

    莫队可以维护种类数 但是无法维护出现次数 考虑离散化以后我们后面腾出了一些空位 那么我们就可以填进那些坑里面 这样做我们就可以用 bitset 直接做与运算 那么 莫队 + bitset 即可

  4. 洛谷P1191 矩形 题解

    笛卡尔树的介绍 笛卡尔树,是一种二叉搜索树,它满足如下条件: 每个节点的编号满足二叉搜索树的性质. 每个节点的权值满足小根堆或大根堆的性质. 大概是这个样子: 笛卡尔树的建树 请看这里. 笛卡尔树的用 ...

  5. Codeforces Round 1007 (Div. 2) 比赛记录

    Codeforces Round 1007 (Div. 2) 比赛记录 比赛链接 很喜欢的一场比赛,题目质量很高,不是手速场,做出题超级有成就感,赛时切掉了 A - D1,上大分了. B卡得有点久,其 ...

  6. AI回答(deepseek):vue3制作手机屏网站

    使用 Vue 3 制作一个适合手机屏幕的网站(移动端网站)是一个非常常见的需求.以下是一个完整的指南,帮助你从零开始构建一个移动端优化的 Vue 3 项目. 1. 创建 Vue 3 项目 使用 Vit ...

  7. 详解vue-router基本使用

    来源:https://m.jb51.net/article/111499.htm   本篇文章主要介绍了详解vue-router基本使用,详细的介绍了vue-router的概念和用法,有兴趣的可以了解 ...

  8. 使用react-native-drawer,跟着官网配置仍报错,Error: [Reanimated] `valueUnpacker` is not a worklet, js engine: hermes

    在使用react-native-drawer组件时,编译项目报错 试了许多的方法,最后通过在一篇博客中找到解决方法https://blog.csdn.net/lxyoucan/article/deta ...

  9. selenium自动化测试-获取动态页面小说

    有的网站页面是动态加载的资源,使用bs4库只能获取静态页面内容,无法获取动态页面内容,通过selenium自动化测试工具可以获取动态页面内容. 参考之前的"bs4库爬取小说工具"文 ...

  10. 详细介绍Dubbo的SPI机制

    一.定义 Dubbo 的 SPI (Service Provider Interface) 机制是对 Java 原生 SPI 机制的增强和扩展,提供了更强大的扩展能力 二.Dubbo SPI 核心实现 ...