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、下载压缩包

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

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

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

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

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

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

 3、使用脚本反推seed

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

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

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

<?php

mt_srand(4049114582);
mt_rand();
$token = mt_rand()+mt_rand();
echo $token;


?>

算出token:1647864971

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值