CTFshow Web25:深入解析php_mt_seed工具在伪随机数爆破中的实战应用

1. 从“爆个锤子”到“伪随机数”的认知升级

做CTF题目最怕什么?不是题目难,而是思路一开始就错了。我刚开始做CTFshow Web25这道题时,就犯了个低级错误——看到代码里有个md5($flag),然后截取前8位转十进制作为种子,我下意识以为种子就是ctfshow{ 这八个字符的MD5值。结果折腾了半天,发现完全不对路。

后来仔细看代码才明白,人家是先对整个flag进行MD5加密,然后取前8位十六进制,再转换成十进制作为种子。这个区别可大了去了,就像你以为密码是“123456”,结果人家用的是“123456”的SHA256值,完全是两码事。

这道题的核心逻辑其实挺有意思的。代码里有个关键判断:if((!$rand)),意思是只有当$rand为0时,才会执行后面的token验证逻辑。而$rand的计算方式是intval($r)-intval(mt_rand())。所以最简单的思路就是让$r等于mt_rand()的值,这样两者相减就是0。

但问题来了,我们不知道mt_rand()会生成什么值啊。这时候有个小技巧:我们可以先传?r=0,这样$rand就等于-mt_rand(),服务器会把这个负的随机数回显给我们。比如我测试时得到了-646081337,那么mt_rand()就是646081337

你以为这就完了?更麻烦的还在后面。代码里验证token的逻辑是:$_COOKIE['token']==(mt_rand()+mt_rand())。注意这里的mt_rand()+mt_rand()可不是同一个随机数加两次,而是连续调用两次mt_rand()得到两个不同的值再相加。

我刚开始也犯糊涂,以为token就是2*mt_rand(),写了个小测试就发现不对:

<?php mt_srand(123456); $rand1 = mt_rand(); $rand2 = mt_rand(); echo $rand1,"\n",$rand2; ?> 

同样的种子,第一次和第二次生成的随机数完全不同。所以我们需要的是第二次和第三次mt_rand()的和,因为第一次已经被我们用?r=0的方式“消耗”掉了。

2. php_mt_seed:伪随机数的“时光倒流”机器

知道了随机数值,怎么反推种子呢?理论上可以写脚本爆破,但32位的种子空间有40多亿种可能,纯暴力破解太慢了。这时候就该php_mt_seed这个神器出场了。

我在实际

Read more

【腾讯位置服务开发者征文大赛】AI+地图赛道来了,带你读懂选题方向、投稿要求与拿分思路

【腾讯位置服务开发者征文大赛】AI+地图赛道来了,带你读懂选题方向、投稿要求与拿分思路

🔥 个人主页:杨利杰YJlio❄️ 个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》《Python》《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更简单,让重复的工作自动化 文章目录 * 在这里插入图片描述 1. 【腾讯位置服务开发者征文大赛】AI+地图赛道来了,一文读懂选题方向、投稿要求与拿分思路 * 在这里插入图片描述 2. 为什么我觉得这场比赛值得认真参加 * 在这里插入图片描述 3. 这次征文,最值得写的方向有哪些 * 3.1 对话式地图交互 * 3.2 智能行程与多人出行规划 * 3.3 商业选址与区域潜力分析 * 3.4 AI 辅助地图开发 * 在这里插入图片描述 4. 想拿高分,文章一定要这么写 * 4.

什么是人工智能?AI、机器学习、深度学习的关系

什么是人工智能?AI、机器学习、深度学习的关系

文章目录 * 什么是人工智能 * 人工智能的定义 * 人工智能的分类 * 什么是机器学习 * 机器学习的基本概念 * 机器学习的工作流程 * 机器学习的主要类型 * 什么是深度学习 * 深度学习的基本概念 * 深度学习的优势 * 深度学习的应用领域 * AI、机器学习、深度学习的关系 * 三者的层次关系 * 三者的发展历程 * 如何选择合适的方法 * 实际应用案例分析 * 案例一:垃圾邮件过滤 * 案例二:图像识别 * 案例三:推荐系统 * 学习路径建议 * 第一阶段:打好基础 * 第二阶段:深入学习 * 第三阶段:实战提升 * 总结 本篇文章将带你深入理解人工智能的核心概念,厘清AI、机器学习、深度学习之间的关系,为后续的学习打下坚实的基础。 什么是人工智能 人工智能的定义 人工智能,英文名称为Artificial Intelligence,简称AI,这个概念最早由约翰·麦卡锡在1956年的达特茅斯会议上提出。那么什么是人工智能呢?简单来说,人工智能就

OpenClaw视觉操作实战:不写接口,让AI直接点按钮、操作软件

OpenClaw视觉操作实战:不写接口,让AI直接点按钮、操作软件

文章目录 * 前言 * 一、OpenClaw是啥?你的数字长工 * 二、视觉操作的核心:Snapshot快照系统 * 1. 告别元素定位地狱 * 2. 自适应界面变化 * 3. 跨应用操作 * 三、实战:手把手教你让AI自动填表 * 步骤1:安装与环境准备 * 步骤2:启动视觉模式 * 步骤3:编写自动化脚本 * 步骤4:进阶:自动下载报表 * 四、不止浏览器:桌面软件也能点 * 五、定时任务:让AI自己起床干活 * 六、数据安全:你的隐私留在本地 * 七、避坑指南:新手常踩的雷 * 1. 动态加载的坑 * 2. 弹窗处理 * 3. API额度控制 * 4. 元素编号会变 * 八、总结:从“码农”

从高原到云端:一个青海少年的AI农业创业之路

从高原到云端:一个青海少年的AI农业创业之路

“我曾翻越二十公里山路去上学,如今,我的代码正飞越万亩农田。”   一、高原的孩子,心里装着整个世界   我出生在青海的一座山村。村子不通公交,家到镇上中学要走两个多小时——二十余公里的崎岖山路,雨天泥泞,冬天结冰。书包里除了课本,还有母亲塞进去的馍馍和咸菜。   但山再高,也挡不住一颗想看世界的心。   从小,我痴迷历史与文学。《史记》里那些金戈铁马的故事,《红楼梦》中细腻入微的人情冷暖,让我在煤油灯下读到深夜。我内心敏感,常因一片云影掠过麦田、一声鹰啸划破长空而思绪万千。那时的我,以为人生只有两条路:要么走出高原,要么被高原埋没。     直到村里通了网。   那一年,我15岁。第一次用手机连上4G信号,点开一个叫“Python教程”的视频,从此命运悄然转向。   二、代码,是我翻山越岭的新脚力   高中三年,我白天上课,晚上自学编程。没有电脑,就用二手安卓机敲代码;没有老师,就靠B站、GitHub和Stack Overflow。