[GWCTF 2019]枯燥的抽奖 ——php_mt_seed
旦总牌面🥧
php伪随机数的破解:在此记录下脚本
脚本将伪随机数转换成php_mt_seed可以识别的数据
str1='abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' #str1据题目而定
str2='0MfcVcv7p3'
str3 = str1[::-1] #= =。我也不知道str3什么作用
res=''
for i in range(len(str2)):
for j in range(len(str1)):
if str2[i] == str1[j]:
res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' '
break
print(res)
然后将生成的数据放到php_mt_seed中爆破,可以爆破出伪随机数(种子)和php版本。然后改写源码,生成完整字符串(注意php版本)
<?php
mt_srand(121965648);
$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>";
颇思蜀否