CTFSHOW-入门-Web25

题目信息

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 13:56:57
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 15:47:33
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(hexdec(substr(md5($flag), 0,8)));
    $rand = intval($r)-intval(mt_rand());
    if((!$rand)){
        if($_COOKIE['token']==(mt_rand()+mt_rand())){
            echo $flag;
        }
    }else{
        echo $rand;
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

与web24差不多,但是多了一些条件,首先是r,r的数值是第一个随机数的结果

然后要求cookie里有一个token,值是两个mt_rand相加

由于我们不知道质子是什么,我们先拿到质子

$rand 是 r - 第一个随机数

那么我们可以通过将r设置为0 得到第一个随机数

然后使用github开源的项目

找到他的种子

然后 

得到两个数相加的结果 208495726

    $rand = intval($r)-intval(mt_rand());
    if((!$rand)){

题目要求我们$rand必须为非空值,也就是相减等于0

那我们只需要把第一个随机数输入进去的相减的结果就是0了

所以r = 1193658632 然后在cookie设置token的值是刚刚脚本拍出来的2084956726


De4ault
無限進步
公告

粤ICP备2024275751号-3