[MRCTF2020]Ezaudit

知识点

1.源码泄露

2.伪随机数

3.sql注入?

题解

打开题目是个漂亮的前端,扫一下发现www.zip文件泄露,下载审计

  1. <?php
  2. header('Content-type:text/html; charset=utf-8');
  3. error_reporting(0);
  4. if(isset($_POST['login'])){
  5. $username = $_POST['username'];
  6. $password = $_POST['password'];
  7. $Private_key = $_POST['Private_key'];
  8. if (($username == '') || ($password == '') ||($Private_key == '')) {
  9. // 若为空,视为未填写,提示错误,并3秒后返回登录界面
  10. header('refresh:2; url=login.html');
  11. echo "用户名、密码、密钥不能为空啦,crispr会让你在2秒后跳转到登录界面的!";
  12. exit;
  13. }
  14. else if($Private_key != '*************' )
  15. {
  16. header('refresh:2; url=login.html');
  17. echo "假密钥,咋会让你登录?crispr会让你在2秒后跳转到登录界面的!";
  18. exit;
  19. }
  20. else{
  21. if($Private_key === '************'){
  22. $getuser = "SELECT flag FROM user WHERE username= 'crispr' AND password = '$password'".';';
  23. $link=mysql_connect("localhost","root","root");
  24. mysql_select_db("test",$link);
  25. $result = mysql_query($getuser);
  26. while($row=mysql_fetch_assoc($result)){
  27. echo "<tr><td>".$row["username"]."</td><td>".$row["flag"]."</td><td>";
  28. }
  29. }
  30. }
  31. }
  32. // genarate public_key
  33. function public_key($length = 16) {
  34. $strings1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  35. $public_key = '';
  36. for ( $i = 0; $i < $length; $i++ )
  37. $public_key .= substr($strings1, mt_rand(0, strlen($strings1) - 1), 1);
  38. return $public_key;
  39. }
  40. //genarate private_key
  41. function private_key($length = 12) {
  42. $strings2 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  43. $private_key = '';
  44. for ( $i = 0; $i < $length; $i++ )
  45. $private_key .= substr($strings2, mt_rand(0, strlen($strings2) - 1), 1);
  46. return $private_key;
  47. }
  48. $Public_key = public_key();
  49. //$Public_key = KVQP0LdJKRaV3n9D how to get crispr's private_key???

根据最后一行提示,我们需要通过公钥找到私钥,这里使用了mt_rand()函数,具体可以看一下链接文章讲的很详细。

爆破seed

  1. str1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
  2. str2='KVQP0LdJKRaV3n9D'
  3. str3 = str1[::-1]
  4. length = len(str2)
  5. res=''
  6. for i in range(len(str2)):
  7. for j in range(len(str1)):
  8. if str2[i] == str1[j]:
  9. res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' '
  10. break
  11. print(res)

用php_mt_seed算出种子为1775196155

算出私钥

  1. <?php
  2. mt_srand(1775196155);
  3. //公钥
  4. function public_key($length = 16) {
  5. $strings1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  6. $public_key = '';
  7. for ( $i = 0; $i < $length; $i++ )
  8. $public_key .= substr($strings1, mt_rand(0, strlen($strings1) - 1), 1);
  9. return $public_key;
  10. }
  11. //私钥
  12. function private_key($length = 12) {
  13. $strings2 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  14. $private_key = '';
  15. for ( $i = 0; $i < $length; $i++ )
  16. $private_key .= substr($strings2, mt_rand(0, strlen($strings2) - 1), 1);
  17. return $private_key;
  18. }
  19. echo public_key();
  20. echo private_key();
  21. ?>

index.php中有一个login.html直接访问,输入账号密码私钥登录得到flag(万能密码)

end

[MRCTF2020]Ezaudit的更多相关文章

  1. [BUUCTF]REVERSE——[MRCTF2020]hello_world_go

    [MRCTF2020]hello_world_go 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索程序里的字符串,有很多,直接检索flag 一个一个点过去,找到了flag 按a,提取 ...

  2. [BUUCTF]REVERSE——[MRCTF2020]Xor

    [MRCTF2020]Xor 附件 步骤: 例行检查,32位程序,无壳 32位ida载入,首先检索程序里的字符串,根据字符串的提示,跳转到程序的关键函数 根据flag,跳转到sub_401090函数 ...

  3. [BUUCTF]REVERSE——[MRCTF2020]Transform

    [MRCTF2020]Transform 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,找到关键函数 一开始让我们输入一个长度为33位的字符串,之后使用数组dword_40F040打乱了 ...

  4. MRCTF2020 你传你🐎呢

    MRCTF2020 你传你 .htaccess mime检测 1.先尝试上传了一个文件,发现.jpg后缀的可以上传成功,但是用蚁剑连接时返回空数据 2.重新先上传一个.htaccess文件,让需要被上 ...

  5. MRCTF2020 套娃

    MRCTF2020套娃 打开网页查看源代码 关于$_SERVER['QUERY_STRING']取值,例如: http://localhost/aaa/?p=222 $_SERVER['QUERY_S ...

  6. 刷题[MRCTF2020]套娃

    解题思路 查看源码,发现注释中存在代码 //1st $query = $_SERVER['QUERY_STRING']; if( substr_count($query, '_') !== 0 || ...

  7. 刷题[MRCTF2020]Ezpop

    解题思路 打开一看直接是代码审计的题,就嗯审.最近可能都在搞反序列化,先把反序列化的题刷烂,理解理解 代码审计 Welcome to index.php <?php //flag is in f ...

  8. [MRCTF2020]Ezpop

    题目: Welcome to index.php <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki ...

  9. WP | [MRCTF2020]Ezpop

    2020.10.14 最近开始努力提高代码能力 题目代码 Welcome to index.php <?php //flag is in flag.php //WTF IS THIS? //Le ...

随机推荐

  1. WPF之交互触发器(CallMethodAction)学习

    需求背景: 当我们需要制作画板时,我们的VM需要记录我们的坐标并保存到Path的Data中,用我们普通的Command是无法办到的,这时我们就衍生出来了一个交互触发器CallMethodAction ...

  2. c++设计模式概述之状态

    代码写的不够规范,目的是为了缩短篇幅,实际中请不要这样做 参看:https://www.runoob.com/design-pattern/state-pattern.html 1.概述 这个有点抽象 ...

  3. windows串口之虚拟串口和Access port

    关于 本文将介绍自己常用的串口工具,演示环境为Windows. 1. 虚拟串口 1.1 没有那么多的物理串口, 用虚拟串口来凑.需要软件Configure Virtual Serial Port Dr ...

  4. 再谈多线程模型之生产者消费者(多生产者和多消费者 )(c++11实现)

    0.关于 为缩短篇幅,本系列记录如下: 再谈多线程模型之生产者消费者(基础概念)(c++11实现) 再谈多线程模型之生产者消费者(单一生产者和单一消费者)(c++11实现) 再谈多线程模型之生产者消费 ...

  5. 【LeetCode】1408. 数组中的字符串匹配 String Matching in an Array

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力遍历 日期 题目地址:https://leetco ...

  6. 【LeetCode】433. Minimum Genetic Mutation 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址: https://leetcode. ...

  7. 【LeetCode】802. Find Eventual Safe States 解题报告(Python)

    [LeetCode]802. Find Eventual Safe States 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemi ...

  8. 【LeetCode】890. Find and Replace Pattern 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典+set 单字典 日期 题目地址:https:/ ...

  9. Joseph(hdu1443)

    Joseph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  10. <数据结构>XDOJ261.理解哈夫曼树

    问题与解答 问题描述: 假设用于通信的电文由 n(2≤n≤30)个字符组成,字符在电文中出现的频度(权值)为 w1 w2- wn,根据该权值集合构造哈夫曼树,并计算该树的带权路径长度. 输入说明: 输 ...