当前位置: 首页 > 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.rkmt.cn/news/95559.html

相关文章:

  • 46、System V 共享内存详解
  • 49、POSIX IPC 全面解析
  • 54、内存映射文件I/O与Solaris 64位文件支持详解
  • Qwen3-Omni-30B-A3B-Instruct革新音乐解析:多模态技术解锁音频深层特征
  • 人工智能音乐创作新纪元:Jukebox技术如何重塑音乐产业边界
  • 生成式人工智能全栈实践指南:从技术原理到产业落地
  • 17、网络安全文档管理与漏洞扫描工具全解析
  • 20、网络监控与故障排除工具全解析
  • 8、网络资源保护全攻略
  • 10、网络资源保护:从基础加固到数据加密
  • 12、Linux系统下Snort的配置与使用指南
  • 字节跳动SeedVR2-3B横空出世:革新视频修复技术,引领行业进入一步式超分新时代
  • 豆包手机背后的技术革命:UI-TARS模型如何重新定义智能终端交互
  • 百度ERNIE 4.5大模型深度解析:多模态技术突破与高效部署实践
  • 代码编辑新纪元:Instinct开放模型引领开发者效率革命
  • 人工智能时代的语言模型:突破、挑战与未来展望
  • 人工智能行业迎来重大突破:多模态大模型推动产业智能化转型加速
  • 类脑记忆突破:字节跳动AHN-GDN技术解决AI长文本处理效率瓶颈
  • 18、网络安全防护指南
  • DeepSeek V3.1震撼发布:128K超长上下文+编程性能超越Claude,开源模型迎来新标杆
  • 顶点阶段:3D渲染管线中的关键起点
  • 记录一次伟大的实践--上亿数据快速模糊匹配方案
  • Qwen3-Coder开源发布:开启智能编程新纪元,全球开发者共享
  • 37、商业技术管理的关键要点与策略
  • 9、KVM虚拟化与数据库管理全解析
  • 49、商业技术管理中的最佳实践与创新商业化价值链条剖析
  • 28、网络故障排查工具全解析
  • 21、智能家居物理实践:节能、供电与备份全攻略
  • 22、家庭网络实用指南:数据备份、隐藏与布线策略
  • 29、智能家居的数据来源