CTF-Web25(php_mt_seed的使用)

知识点:在面对php_srand()中种子数不确定的情况,可以使用工具php_mt_seed进行破解

一、先下载php_mt_seed

地址:php_mt_seed - PHP mt_rand() seed cracker --- php_mt_seed - PHP mt_rand() 种子饼干 (openwall.com)

 1、下载压缩包CTF-Web25(php_mt_seed的使用)_第1张图片

 2、将压缩包上传到虚拟机上进行解压

 命令:tar -zxvf php_mt_seed-4.0.tar.gz,进入解压出来的文件夹输入./php_mt_seed.c 

提示权限不足则输入命令:chmod 777 php_mt_seed.c 赋予权限

CTF-Web25(php_mt_seed的使用)_第2张图片

2、传入参数r=0获得第一次产生的序列数,以此通过脚本来倒推seed

通过代码$rand=intval($r)-intval(mt_rand())分析

我们可以通过让intval($r)=0  让$rand不为0不满足if条件输出rand的值,同时可以获得mt_rand()第一次产生的随机数值的负数形式

CTF-Web25(php_mt_seed的使用)_第3张图片

 3、使用脚本反推seed

 先在目录先输入命令make    再输入time ./php_mt_seed 上面的序列数

一个一个选择,根据php的版本进行选择,这里先选择4049114582

CTF-Web25(php_mt_seed的使用)_第4张图片

已知seed为4049114582,根据代码分析,要输出flag需要cookie中的token值等于第二次和  第三次mt_rand()之和,通过下面的脚步代码算出token

算出token:1647864971

4、使用bp将数据包中的token修改为1647864971

CTF-Web25(php_mt_seed的使用)_第5张图片

你可能感兴趣的:(ctfshow-web,php,机器翻译,开发语言)