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

[GWCTF 2019]枯燥的抽奖

启动环境

检查发现源码

通过查找mt_rand函数资料,PHP的mt_rand函数作为一个随机数生成工具在程序中被广泛使用,但是大家都忽略了一个事实,mt_rand生成的随机数不是一个真正的随机数,而是一个伪随机数,不能应用于生成安全令牌、核心加解密key等等,所以很多知名程序都出现过对mt_rand函数的错误使用而导致的安全问题。

可以根据已经给出的部分随机数,利用工具找出seed(种子),然后得到完整的随机数。

上网寻找了下载php_mt_seed工具和使用方法

php_mt_seed是一个破解mt_rand函数seed的工具,在最简单的调用模式下,它能通过mt_rand第一次输出的值寻找mt_rand的seed,在更高级的模式中它能匹配不是第一次输出的和不明确具体输出的情况。

下载链接:php_mt_seed - PHP mt_rand() seed cracker

可以通过已经知道的几个字符去反推mt_rand()

python代码

str1='abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' str2='6aZVpCGRLU' 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)

运行得到

使用php_mt_seed工具

得到种子345828701

计算整个字符串的代码

<?php
mt_srand(种子);
$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;

提交得到flag

http://www.jsqmd.com/news/85324/

相关文章:

  • 46、System V 共享内存详解
  • 47、System V共享内存与信号量深入解析
  • 48、Solaris 系统中的进程间通信:信号量与消息队列详解
  • 49、POSIX IPC 全面解析
  • 50、深入了解 Solaris Doors:IPC 机制解析
  • 51、Solaris 文件与文件 I/O 详解
  • 52、文件应用编程接口(APIs)详解
  • 53、Solaris文件系统I/O操作全解析
  • 54、内存映射文件I/O与Solaris 64位文件支持详解
  • Qwen3-Omni-30B-A3B-Instruct革新音乐解析:多模态技术解锁音频深层特征
  • 小白银行测试初步了解(十一)‘会计分录汇总’
  • 人工智能音乐创作新纪元:Jukebox技术如何重塑音乐产业边界
  • Tesseract 3.0重磅发布:开源OCR引擎迎来中文支持新纪元
  • 1、免费安全解决方案的商业论证
  • 生成式人工智能全栈实践指南:从技术原理到产业落地
  • 4、防火墙架构与配置全解析
  • 17、网络安全文档管理与漏洞扫描工具全解析
  • 6、网络安全防护与资源加固全解析
  • 18、网络安全测试、监控与故障排查实用指南
  • 7、强化 Linux 系统安全性:全面指南
  • 20、网络监控与故障排除工具全解析
  • Qwen3-30B-A3B模型参数配置指南:解锁高效推理与流畅交互的双重体验
  • MSF框架全解析:白帽子的实战指南与高级技巧
  • 8、网络资源保护全攻略
  • 如何彻底解决Windows游戏控制器兼容性:ViGEmBus虚拟驱动深度配置指南
  • 9、网络资源防护:TCP 包装器、杀毒与反间谍软件指南
  • 10、网络资源保护:从基础加固到数据加密
  • 英伟达Canary-Qwen-2.5B语音模型横空出世,5.63%词错率刷新OpenASR全球纪录
  • 11、入侵检测系统配置全攻略
  • 12、Linux系统下Snort的配置与使用指南