buuctf_练[MRCTF2020]Ezaudit

[MRCTF2020]Ezaudit

掌握知识

​ 网站源码泄露,代码审计,SQL注入的万能密码使用,mt_rand函数的伪随机数漏洞搭配php_mt_seed工具使用,随机数特征序列的生成

解题思路
  1. 打开题目链接,又发现是一个不错的网站界面,很多功能但都一样,源码也没有泄露的,根据题目为简单的审计,猜测有源码泄露,这样的网站多半就是网站压缩包泄露,访问www.zip还真就下载了,里面只有一个index.php文件

image-20231013125852847

  1. 打开文件,简单的查看了一下,发现泄露了一个登录界面login.html,需要输入密码账户和私钥,验证通过会通过SQL语句将flag回显出来。最后给出来了公私钥生成的代码,看见了老朋友mt_rand函数 ([GWCTF 2019]枯燥的抽奖),该函数存在伪随机数漏洞,只需要得到特征值,就能使用相应工具得到随机数种子,私钥也就很容易得到了
<?php 
header('Content-type:text/html; charset=utf-8');
error_reporting(0);
if(isset($_POST['login'])){$username = $_POST['username'];$password = $_POST['password'];$Private_key = $_POST['Private_key'];if (($username == '') || ($password == '') ||($Private_key == '')) {// 若为空,视为未填写,提示错误,并3秒后返回登录界面header('refresh:2; url=login.html');echo "用户名、密码、密钥不能为空啦,crispr会让你在2秒后跳转到登录界面的!";exit;
}else if($Private_key != '*************' ){header('refresh:2; url=login.html');echo "假密钥,咋会让你登录?crispr会让你在2秒后跳转到登录界面的!";exit;}else{if($Private_key === '************'){$getuser = "SELECT flag FROM user WHERE username= 'crispr' AND password = '$password'".';'; $link=mysql_connect("localhost","root","root");mysql_select_db("test",$link);$result = mysql_query($getuser);while($row=mysql_fetch_assoc($result)){echo "<tr><td>".$row["username"]."</td><td>".$row["flag"]."</td><td>";}}}} 
// genarate public_key 
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_keyfunction 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;}$Public_key = public_key();//$Public_key = KVQP0LdJKRaV3n9D  how to get crispr's private_key???
分析代码
  1. 私钥的思路已经很清晰了,去寻找一下账户和密码是什么了,根据SQL语句的提示,账户为crispr,该SQL语句不存在任何过滤,是最基础的字符型SQL查询语句,密码直接使用万能密码就可以1' or 1=1 #。账密已经分析得到,就下来就去拿下私钥了

image-20231013130423740

  1. 通过查看公私钥生成代码,两个代码都没有设置随机数种子,那公钥使用mt_rand函数之后,随机数种子也就会固定下来,所以公私钥的随机数种子是一样的,代码还给出了公钥,所以只需要将公钥字符串转化成特征序列,使用php_mt_seed工具进行爆破即可得到具体的随机数种子

image-20231013131228180

  1. 后面的步骤和之前写的枯燥的抽奖步骤就很相似了,同一个代码同一个工具。使用下面的python代码即可得到特征序列。str2就是生成的随机字符串 ,str1是随机字符串生成的模板,将源代码的模板复制即可
str1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
str2='KVQP0LdJKRaV3n9D'
str3 = str1[::-1]
length = len(str2)
res=''
for i in range(len(str2)):for j in range(len(str1)):if str2[i] == str1[j]:res+=str(j)+' '+str(j)+' '+'0'+' '+str(len(str1)-1)+' 'break
print(res)
36 36 0 61 47 47 0 61 42 42 0 61 41 41 0 61 52 52 0 61 37 37 0 61 3 3 0 61 35 35 0 61 36 36 0 61 43 43 0 61 0 0 0 61 47 47 0 61 55 55 0 61 13 13 0 61 61 61 0 61 29 29 0 61 
  1. 直接使用php_mt_seed工具对特征序列进行爆破,得到随机数种子,该随机数种子需要在php版本5.2.1 -- 7.0.x直接使用才行

image-20231013131732864

  1. 找一个php在线运行的网站,可以修改php版本在上面范围的,使用源代码的公私钥生成代码,只需要在最开始添加随机数字符串即可得到私钥。因为随机字符串相邻的输出结果不一样,所以还需要按照代码中的先生成公钥才能正确得到私钥

image-20231013131848549

  1. 使用分析得到的账密和生成的私钥直接登录,登录成功之后页面回显flag,直接拿下

image-20231013132104091

image-20231013132108850

关键paylaod
随机数种子 = mt_srand(1775196155);
nuserame = crispr
password = 1' or 1=1#
私钥 = XuNhoueCDCGc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/119895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给你一个整数 num ,返回 num 中能整除 num 的数位的数目

给你一个整数 num &#xff0c;返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 &#xff0c;则认为整数 val 可以整除 nums 。 示例 1&#xff1a; 输入&#xff1a;num 7 输出&#xff1a;1 解释&#xff1a;7 被自己整除&#xff0c;因此答案是 1 。 示例 2&…

Linux shell编程学习笔记16:bash中的关联数组

上一节我们探讨了普通的数组&#xff0c;即使用数字下标来索引数组中不同的元素的数组&#xff0c;也可以称之为索引数组。 相比纯粹的数字&#xff0c;字符串不仅能表明含义&#xff0c;也更便于记忆使用&#xff0c;于是就有了关联数组。 一、关联数组概述 bash 从4.0开始支…

竞赛 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

基于 nodejs+vue旅游推荐系统 mysql

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

vscode markdown 使用技巧 -- 如何快速打出一个Tab 或多个空格

背景描述&#xff1a; 我在使用VSCode&#xff0c;这玩意很好用&#xff0c;但是&#xff0c;有一个缺点是&#xff0c;我想使用Tab来做一些对齐&#xff0c;但是我发现在VSCode中&#xff0c;无论是Tab还是多个空格&#xff0c;最终显示出来的都是一个空格 使用代码可以实现打…

【VUE】ElementPlus之动态主题色调切换(Vue3 + Element Plus+Scss + Pinia)

前言 关于ElementPlus的基础主题色自定义可以参阅《【VUE】ElementPlus之自定义主题样式和命名空间》 有了上面基础的了解&#xff0c;我们知道ElementPlus的主题色调是基于CSS3变量特性进行全局控制的&#xff0c; 那么接下来我们也基于CSS3变量来实现主题色调的动态切换效果&…

第一单元——概述

Blazor 的由来 Blazor 这个名字是两个单词改进而来的,即 Browser + Razor。从名字不难看出,它是基于 Razor 语法的浏览器框架。 Razor 语法的对于一直从事 ASP.NET 开发的小伙伴来说并不陌生,它从 .NET Framework 的 MVC 时代就开始伴随着我们一直前行,并且一直沿用到至今…

【原创】修复vCenter的Web界面无法启动的问题

零 出现的问题 在使用过程中&#xff0c;发现vCenter无法登录&#xff0c;报错。 因此重新启动vCenter&#xff0c;打开Web&#xff0c;先是报“no healthy upstream”&#xff0c;等了二十分钟后错误依旧。 再次重启vCenter&#xff0c;打开Web&#xff0c;还是报同样的错误。…

Linux - firewall-cmd 命令添加端口规则不生效排查

文章目录 linux 防火墙 firewall-cmd 命令详解问题排查 linux 防火墙 firewall-cmd 命令详解 基本语法 firewall-cmd --zonezone-name --add-serviceservice-name --permanent命令参数 --zone&#xff1a;指定要添加服务的区域名称。 --add-service&#xff1a;指定要添加的…

Apache ActiveMQ RCE漏洞复现(CNVD-2023-69477)

0x01 产品简介 ActiveMQ是一个开源的消息代理和集成模式服务器&#xff0c;它支持Java消息服务(JMS) API。它是Apache Software Foundation下的一个项目&#xff0c;用于实现消息中间件&#xff0c;帮助不同的应用程序或系统之间进行通信。 0x02 漏洞概述 Apache ActiveMQ 中存…

【概率论教程01】对贝叶斯定理的追忆

一、说明 贝叶斯定理&#xff0c;是一个需要反复体悟的道理&#xff0c;不是说公式解释清除就算Grasp&#xff0c;而是需要反复在实际项目中发挥&#xff0c;才能算掌握了。而实际应用中&#xff0c;并不是简单给出条件就可以套用&#xff0c;而是隐藏在迷雾一样的事实中&#…

基于Springboot自习预约管理系统

功能介绍&#xff1a; 基于Springboot自习预约管理系统。该系统为后台管理系统&#xff0c;无前台。主要角色有&#xff1a;管理员和学生。 主要功能&#xff1a; 学生信息管理&#xff1a;学号、姓名、专业、班级、年级、联系方式 教室信息管理&#xff1a;教室、教室号、楼…

利用Linux socat快速搭建TCP服务器

某些场合&#xff0c;需要在Linux上快速搭建一个TCP的服务器&#xff0c;接收客户端的连接&#xff0c;返回一些数据。 一般用于测试或者负载不大&#xff0c;安全性要求不高的场合&#xff0c;达到快速搭建的目的。 本文以客户端通过服务器的3334端口&#xff0c;获取服务器…

BIOS MBR UEFI GPT详解

先来看下名词 启动方式&#xff1a; Legacy&#xff1a;传统的。指的就是BIOS。 BIOS&#xff1a;Basic Input Output System&#xff0c;中文名称"基本输入输出系统"。 UEFI&#xff1a;Unified Extensible Firmware Interface&#xff0c;中文名称"统一的…

在 .NET 8 Release Candidate 2 中宣布 .NET MAUI:更高质量

作者&#xff1a;David Ortinau 排版&#xff1a;Alan Wang 随着 .NET 8 候选版本 2&#xff08;RC2&#xff09;中 .NET MAUI 的发布&#xff0c;我们距离 .NET 8 通用版&#xff08;GA&#xff09;又近了一步。与 RC1 一样&#xff0c;此版本包含上线许可证&#xff0c;因此您…

常见面试题-MySQL专栏(一)

为什么 mysql 删了行记录&#xff0c;反而磁盘空间没有减少&#xff1f; 答&#xff1a; 在 mysql 中&#xff0c;当使用 delete 删除数据时&#xff0c;mysql 会将删除的数据标记为已删除&#xff0c;但是并不去磁盘上真正进行删除&#xff0c;而是在需要使用这片存储空间时&…

Linux命令(105)之readlink

linux命令之readlink 1.readlink介绍 linux命令readlink是用来查看软链接的源文件在哪 2.readlink用法 readlink [参数] filename readlink参数 参数说明-f递归给出文件名的所有符号链接以标准-e递归给出文件名的所有符号链接以标准化-n不输出尾随的新行-s缩减大多数的错误…

0031【Edabit ★☆☆☆☆☆】【使用箭头函数】Using Arrow Functions

0031【Edabit ★☆☆☆☆☆】【使用箭头函数】Using Arrow Functions data_structures language_fundamentals Instructions Create a function that returns the given argument, but by using an arrow function. An arrow function is constructed like so: arrowFunc(/*p…

【哈士奇赠书活动 - 44期】- 〖从零基础到精通Flutter开发〗

文章目录 ⭐️ 赠书 - 《从零基础到精通Flutter开发》⭐️ 内容简介⭐️ 作者简介⭐️ 编辑推荐⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《从零基础到精通Flutter开发》 ⭐️ 内容简介 本书由浅入深地带领读者进入Flutter开发的世界&#xff0c;从Flutter的起源讲起&#xff0c…

【RV1106/RV1103】RV1103增加RTL8723BS

文章目录 Kernel 部分支持配置 menuconfigWiFi 功能支持Bluetooth 功能支持 原SDK的Busybox配置BT 部分文件系统部分蓝牙测试dbus 安装测试遇到的问题让hci0出来 使用hcitool来操作 Kernel 部分支持 配置 menuconfig WiFi 功能支持 Bluetooth 功能支持 正基和海华的模块都使用…