門戶網(wǎng)站建設(shè)總結(jié)百度搜索次數(shù)統(tǒng)計
參考
https://www.cnblogs.com/AikN/p/15764428.html
?[GWCTF 2019]枯燥的抽獎-CSDN博客
打開環(huán)境
笑死我了,怎么那么像我高中校長
查看源代碼
看到check.php,去訪問一下
ok看到源代碼了
因為上次做過,看到這個我就想到用php_mt_seed逆推出seed
<?php
#這不是抽獎程序的源代碼!不許看!
header("Content-Type: text/html;charset=utf-8");
session_start();
if(!isset($_SESSION['seed'])){
$_SESSION['seed']=rand(0,999999999); //如果seed不存在,則生成一個隨機數(shù)作為種子
}mt_srand($_SESSION['seed']); //使用 mt_srand 函數(shù)設(shè)置隨機數(shù)生成器的種子為會話變量 "seed" 的值。這樣可以保證每次生成的隨機數(shù)序列是相同的。
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str=''; //創(chuàng)建一個空字符串,用于存儲生成的隨機字符串
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1); //生成一個長度為 20 的隨機字符串。循環(huán)每次從 $str_long1 中隨機選擇一個字符,并將其追加到 $str 中。
}
$str_show = substr($str, 0, 10); //從生成的隨機字符串中截取前 10 個字符,存儲在變量 $str_show 中
echo "<p id='p1'>".$str_show."</p>";if(isset($_POST['num'])){if($_POST['num']===$str){xecho "<p id=flag>抽獎,就是那么枯燥且無味,給你flag{xxxxxxxxx}</p>";}else{echo "<p id=flag>沒抽中哦,再試試吧</p>";}
}
show_source("check.php");
?我暈
火狐沒看到完整的,谷歌才看到
需要先將數(shù)列轉(zhuǎn)換成爆破腳本可以識別的數(shù)列,將隨機出來的偽隨機串的下標還原回來
這里腳本看了別人的wp
似乎是離散參數(shù)的規(guī)范,但沒搞明白為什么要重復一次。
好像是 “隨機數(shù)a 隨機數(shù)a min max”這樣一個格式,四個一組。
str1 = 'SNDH9So2My'
str2 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = ''length = str(len(str2) - 1)
for i in range(0, len(str1)):for j in range(0, len(str2)):if str1[i] == str2[j]:result += str(j) + ' ' + str(j) + ' ' + '0' + ' ' + length + ' ' //如果字符匹配成功,則將匹配結(jié)果追加到 res 中。匹配結(jié)果包括四個部分,分別是 j、j、0、len(str1)-1,中間用空格分隔breakprint(result)
在kali使用php_mt_seed
php 版本為7.1以上的只有614247723這個種子
求str