在PHP中,变量以$符号开头,后面拼接变量名。上述代码的基本 含义是:从$str变量中随机取32次字符(字符可重复),并拼接成字符 串,最后将该字符串赋值给变量$password。执行代码后会输出 $password变量的前10个字节,此时通过POST请求传递password参数到 服务端,如果password参数的值与$password变量的值完全相等,那么 就会输出flag。
理论上,如果选取字符的时候是完全随机的,那么几乎不可能出现 password参数值与$password变量值相等的情况(概率极低)。但由于 代码中使用mt_rand()函数来生成随机数,因此如果可以得知该函数生 成的一段随机数序列,就可以通过工具爆破出其选取的随机数种子 (该种子由$_Session[‘seed’]变量生成),从而预测之后的所有随机数序 列。在这里,我们使用php_mt_seed工具来爆破随机数种子。该工具的 下载地址为:https://www.openwall.com/php_mt_seed/php_mt_seed- 4.0.tar.gz
访问题目页面,可得到前10个字节的随机字符,将输 ...