周末时间,抽个奖助助兴!
打开题目,发现是一个猜字符串的游戏,就问你枯不枯燥?
看到这想都不用想,CTRL+U查看后台代码,果然不出所料,发现了存在check.php
通过代码审计并结合题目来看,这是一道php伪随机数的题,通过代码可以发现使用了mt_rand()函数播种并生成了随机数,先用脚本转换伪随机数编程能力太弱,查看wp发现了一个较好的python脚本(原文链接:https://blog.csdn.net/qq_41628669/article/details/106133105)
# -*- coding: utf-8 -*-
s = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
key = 'c1z5DuPZXT'
m = ''
for i in key:
for j in range(len(s)):
if i == s[j]:
m += "{} {} 0 {} ".format(j,j,len(s)-1)
print(m)
2 2 0 61 27 27 0 61 25 25 0 61 31 31 0 61 39 39 0 61 20 20 0 61 51 51 0 61 61 61 0 61 59 59 0 61 55 55 0 61
下一步使用php_mt_seed4.0(下载地址)进行种子爆破
用爆破出来的种子生成题目中所要求的字符串
mt_srand(744449933);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){
$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);
}
echo "<p id='p1'>".$str."</p>";
将所生成的字符串提交得到flag