当前位置: 首页 > article >正文

web漏洞靶场学习分享

靶场:pikachu靶场

pikachu漏洞靶场漏洞类型:

  • Burt Force(暴力破解漏洞)
  • XSS(跨站脚本漏洞)
  • CSRF(跨站请求伪造)
  • SQL-Inject(SQL注入漏洞)
  • RCE(远程命令/代码执行)
  • Files Inclusion(文件包含漏洞)
  • Unsafe file downloads(不安全的文件下载)
  • Unsafe file uploads(不安全的文件上传)
  • Over Permisson(越权漏洞)
  • ../../../(目录遍历)
  • I can see your ABC(敏感信息泄露)
  • PHP反序列化漏洞
  • XXE(XML External Entity attack)
  • 不安全的URL重定向
  • SSRF(Server-Side Request Forgery)

今天重点说一下Token暴力破解与PHP反序列化

一、暴力破解之Token爆破

        token是表单验证的方法之一、也是防止爆破的,但是它如果出现在前端页面标签中,就会被捕获到实施爆破,因此就是去了它原本的作用。

                                                           表单爆破结果

首先爆破的方法与常规方法一样,都要进行抓包。【在我的文章上有爆破表单账号密码过程和待验证码的爆破方法】

一、 当我们抓到包后进行添加攻击者方法、选择爆破方法是草叉方法,因为分别爆破、token是独立的。

 二、之后我们进行token的爆破设置方法、首先在设置中找到Grep-Extract、让它识别到token。

三、 之后我们点击Add 、进行token识别设置

在Start after expression 部分是你的token开始标志、也就是除开这里,就是token的开始部分

之后再设置End at fied length 这个是token的结束长度、token的长度是多少、这里就设置多少

也可以设置end ad delimiter 是token结束的标志。

四、之后、我们设置Redirctions 把它从Never 改到always,设置重定向

 五、我们设置token的payload、把payload类型设置为Recursive grep,并且把payload sttings[Recursive grep]中的frst request【第一个请求】设置我们当时抓包的token值

 以上设置好后,pyload1 和普通爆破模式一样、爆破即可。

二、PHP反序列化

 在面向对象编程语言中有类的概念,当我们把类转化为字符串输出就是进行了一次序列化操作。

那么我们将序列化后的字符串进行还原便是反序列化操作。

例如:我们进行个序列化操作

 <?php 
//声明个类human
class human{
//定义变量属性public $name = "小李";public $age = "20";
}
//将类实体化
$Li = new human();
//序列化
$enstr = serialize($Li);
//反序列化
$class_str = unserialize($enstr);
var_dump($class_str)
?>

此时输出结果为:O:5:"human":2:{s:4:"name";s:6:"小李";s:10:"humanage";s:2:"20";} 

 我们来看一下字符串:O 表示对象(Object)5表示类名长度,后面跟着类名字、2表示有两个属性、其中内容用{}括起来、s表示字符串(string)4表示变量名长度、、、、以此类推。

这是进行了一次序列化操作、那么反序列化呢?

 <?php 
//声明个类human
class human{
//定义变量属性public $name = "小李";public $age = "20";
}
//将类实体化
$Li = new human();
//序列化
$enstr = serialize($Li);
//反序列化
$class_str = unserialize($enstr);
var_dump($class_str)?>

输出结果为: 

object(human)#2 (2) {
  ["name"]=>
  string(6) "小李"
  ["age"]=>
  string(2) "20"
}

由此我们就进行了一次序列化和反序列化操作。

PHP反序列化漏洞

那么、在此过程中是如何有漏洞发生呢?这就要谈到php的魔法函数。在序列化和反序列化中魔法函数是以下划线开头的函数、它们会在特定的事件发生后自动调用、这样增加了类的灵活性。

其中魔法函数有:

__construct()       对象被创建时候调用

__destruct()        对象销毁时调用

__toString()        对象当作字符串时调用

__get()                在访问对象时候不存在或不可访问属性时调用

__set()                给不存在的访问对象或者不可访问属性赋值时调用

__call()               当调用对象不存在时调用

__callstatic()       当类中不存在静态类时调用

魔法函数还有很多种、不一一举例了。

 <?php 
//声明个类human
class human{
//定义变量属性public $name = "小李";//当类被创建时调用public function __construct(){echo "此类被创建了!我的名字是".$this->name;}//当类被销毁时调用public function __destruct(){echo "此类被销毁了!我的名字是".$this->name;}
}
//将类实体化
$Li = new human();
//序列化
$enstr = serialize($Li);
//输出结果
echo $enstr
?>

其结果为:  此类被创建了!我的名字是小李O:5:"human":1:{s:4:"name";s:6:"小李";}此类被销毁了!我的名字是小李

由此我们知道魔法函数的作用了,现在我们整理一下信息:

1、魔法函数是在类特定的情况被自动调用

2、类可以序列化以及反序列化。

那么、试想一下、类可序列化以及反序列化、那如果我们在魔法函数内的变量可控、并且进行序列化后再反序列化、并且可控函数是system()这样执行系命令操作,那么这是不是就造成了任意命令执行呢?

漏洞payload:

<?php 
//声明个类human
class human{
//定义变量属性public $name = "小李";//当类被销毁时调用public function __destruct(){system("echo 此类被销毁了!我的名字是".$this->name);}
}
//将类实体化
$Li = new human();
//payload 中用;隔开分开执行命令、这样保证后半部分单独执行命令
$payload = "小李;whoami";
//把类中的name属性替换掉攻击命令
$Li-> name = $payload;
//序列化
$enstr = urlencode(serialize($Li));
//输出结果
echo $enstr;
?>

我们进行了带有执行系统命令的序列化操作后,目标进行反序列化操作即可执whoami命令了。

 那么我们来看pikaqiu中的反序列化漏洞吧:

pikachu提示说接收以及序列化的数据,那么我们就构造个前端XSS的序列化操作。

<?php 
//声明个类human
class S{
//定义变量属性var $test = "hello";
}
//将类实体化
$a = new S();
$payload = "<script>alert('xss')</script>";
$a-> test = $payload;
//序列化
$enstr = serialize($a);
//输出结果
echo $enstr;
?>

 结果为:O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}

提交即可 

相关文章:

web漏洞靶场学习分享

靶场&#xff1a;pikachu靶场 pikachu漏洞靶场漏洞类型: Burt Force(暴力破解漏洞)XSS(跨站脚本漏洞)CSRF(跨站请求伪造)SQL-Inject(SQL注入漏洞)RCE(远程命令/代码执行)Files Inclusion(文件包含漏洞)Unsafe file downloads(不安全的文件下载)Unsafe file uploads(不安全的文…...

vue watch和 watchEffect

在 Vue 3 中&#xff0c;watch 和 watchEffect 是两个用于响应式地监听数据变化并执行副作用的 API。它们在功能上有一些相似之处&#xff0c;但用途和行为有所不同。以下是对 watch 和 watchEffect 的详细对比和解释&#xff1a; 1. watch watch 是一个更通用的 API&#xf…...

函数和模式化——python

一、模块和包 将一段代码保存为应该扩展名为.py 的文件&#xff0c;该文件就是模块。Python中的模块分为三种&#xff0c;分别为&#xff1a;内置模块、第三方模块和自定义模块。 内置模块和第三方模块又称为库内置模块&#xff0c;有 python 解释器自带&#xff0c;不用单独安…...

Python解决“数字插入”问题

Python解决“数字插入”问题 问题描述测试样例解题思路代码 问题描述 小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数&#xff0c;而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置&#xff0c;以形成一个最大的可能数字。 你…...

Go语言的嵌入式网络

Go语言的嵌入式网络 引言 在当今快速发展的互联网时代&#xff0c;嵌入式系统和网络技术的结合变得越来越普遍。嵌入式系统是指嵌入到设备中以实现特定功能的计算机系统&#xff0c;它们通常具有资源有限的特点。随着物联网&#xff08;IoT&#xff09;的兴起&#xff0c;嵌入…...

Dart 语法

1. 级联操作符 … var paint Paint()..color Colors.black..strokeCap StrokeCap.round..strokeWidth 5.0;2. firstWhereOrNull 3. 隐藏或导入部分组件 // Import only foo. import package:lib1/lib1.dart show foo;// Import all names EXCEPT foo. import package:lib…...

MCP over MQTT:EMQX 开启物联网 Agentic 时代

前言 随着 DeepSeek 等大语言模型&#xff08;LLM&#xff09;的广泛应用&#xff0c;如何找到合适的场景&#xff0c;并基于这些大模型构建服务于各行各业的智能体成为关键课题。在社区中&#xff0c;支持智能体开发的基础设施和工具层出不穷&#xff0c;其中&#xff0c;Ant…...

ACM代码模式笔记

系列博客目录 文章目录 系列博客目录1.换行符 1.换行符 nextInt()、nextDouble() 等不会消耗换行符&#xff1a; 当使用 nextInt() 或 nextDouble() 读取数字时&#xff0c;它只读取数字部分&#xff0c;不会消耗掉输入后的换行符。 nextLine() 会读取并消耗换行符&#xff1a…...

相干光信号处理的一些基础知识

1. 逆琼斯矩阵问题 逆琼斯矩阵方法常用于逆向补偿由光学系统或传输信道&#xff08;如光纤&#xff09;引入的偏振态&#xff08;SOP, State of Polarization&#xff09;畸变。 1.1 琼斯向量 任意偏振光可用二维复数向量表示&#xff1a; E [ E x E y ] [ ∣ E x ∣ e i…...

WiFi加密协议

目录 1. 认证(Authentication)‌ ‌1.1 开放系统认证(Open System Authentication)‌ 1.2 共享密钥认证(Shared Key Authentication)‌ ‌1.3 802.1X/EAP认证(企业级认证)‌ ‌2. 关联(Association)‌ ‌3. 加密协议(Security Handshake)‌ ‌整体流程总结‌…...

程序化广告行业(61/89):DSP系统活动设置深度剖析

程序化广告行业&#xff08;61/89&#xff09;&#xff1a;DSP系统活动设置深度剖析 大家好&#xff01;在程序化广告的学习道路上&#xff0c;我们已经探索了不少重要内容。今天依旧本着和大家一起学习进步的想法&#xff0c;深入解析DSP系统中活动设置的相关知识。这部分内容…...

[王阳明代数讲义]具身智能才气等级分评价排位系统领域投射模型讲义

具身智能才气等级分评价排位系统领域投射模型讲义 具身智能胆识曲线调查琴语言的行为主义特性与模式匹配琴语言的"气质邻域 "与气度&#xff0c;云藏山鹰符号约定 琴语言的"气质邻域 "与气度&#xff0c;一尚韬竹符号约定 琴语言的"气质邻域 "与…...

【Block总结】PlainUSR的局部注意力,即插即用|ACCV2024

论文信息 标题: PlainUSR: Chasing Faster ConvNet for Efficient Super-Resolution作者: Yan Wang, Yusen Li, Gang Wang, Xiaoguang Liu发表时间: 2024年会议/期刊: 亚洲计算机视觉会议&#xff08;ACCV 2024&#xff09;研究背景: 超分辨率&#xff08;Super-Resolution, S…...

Kubernetes集群管理详解:从入门到精通

1. 引言 Kubernetes(简称k8s)作为当今最流行的容器编排平台,已成为云原生应用部署和管理的事实标准。本文将深入探讨k8s集群管理的各个方面,为运维工程师和开发人员提供一个全面的指南。 2. Kubernetes架构概览 在深入具体的管理任务之前,让我们先回顾一下Kubernetes的基本架…...

Git 换行符警告(LF replaced by CRLF)的解决方案

根据你的日志和知识库中的信息&#xff0c;以下是针对 Git 换行符警告&#xff08;LF replaced by CRLF&#xff09; 的解决方案&#xff1a; 一、问题分析 警告原因 你当前在 Windows 系统 上工作&#xff0c;但某些文件&#xff08;如 .gitignore, README.md, package.json 等…...

【C++】从零实现Json-Rpc框架(2)

目录 JsonCpp库 1.1- Json数据格式 1.2 - JsonCpp介绍 • 序列化接口 • 反序列化接口 1.3 - Json序列化实践 JsonCpp使用 Muduo库 2.1 - Muduo库是什么 2.2 - Muduo库常见接口介绍 TcpServer类基础介绍 EventLoop类基础介绍 TcpConnection类基础介绍 TcpClient…...

蓝桥云客--回文数组

0回文数组 - 蓝桥云课 问题描述 小蓝在无聊时随机生成了一个长度为 n 的整数数组&#xff0c;数组中的第 i 个数为 ai​&#xff0c;他觉得随机生成的数组不太美观&#xff0c;想把它变成回文数组&#xff0c;也就是对于任意 i∈[1,n] 满足 ai​an−i1​。小蓝一次操作可以指…...

FastAPI依赖注入:链式调用与多级参数传递

title: FastAPI依赖注入:链式调用与多级参数传递 date: 2025/04/05 18:43:12 updated: 2025/04/05 18:43:12 author: cmdragon excerpt: FastAPI的依赖注入系统通过链式调用和多级参数传递实现组件间的解耦和复用。核心特性包括解耦性、可复用性、可测试性和声明式依赖解析…...

【STM32单片机】#5 定时中断

主要参考学习资料&#xff1a; B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接&#xff1a;https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装&#xff1a;STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…...

OrbStack 作为 Mac 用户的 Docker 替代方案

推荐使用 OrbStack 作为 Mac 用户的 Docker 替代方案 在现代开发环境中,容器化技术已经成为了软件开发的重要组成部分。对于 Mac 用户来说,Docker Desktop 是一个广泛使用的工具,但它并不是唯一的选择。本文将推荐 OrbStack 作为 Docker Desktop 的替代方案,并探讨其优势。…...

运行小程序报错

[ app.json 文件内容错误] app.json: ["tabBar"]["list"] 不能超过 5 项(env: Windows,mp,1.06.2206090; lib: 3.7.12) 他的意思大概是&#xff0c;微信小程序 app.json 文件中的 tabBar.list 配置项超过了 5 项。这是微信小程序的限制&#xff0c;tabBar…...

Nature Electronics|一种透气、可拉伸的液态金属基3D电子皮肤系统(健康监测/可穿戴电子/透汗透气性电子/电子皮肤/柔性电子/集成电路)

一、 摘要 穿戴式和皮肤电子设备的发展要求高密度可伸展电子系统能够与软组织共形,持续运行并提供长期的生物相容性。大多数可拉伸电子系统的集成密度低,并且与外部印刷电路板连接,这限制了功能,降低了用户体验并阻碍了长期可用性。在此,作者提出了一种可渗透的三维集成电…...

深入剖析丝杆升降机工作原理,解锁工业传动奥秘

丝杆升降机&#xff0c;在工业设备的大舞台上扮演着不可或缺的角色&#xff0c;被广泛应用于机械制造、自动化生产线、建筑施工等众多领域。它能够精准实现重物的升降、定位等操作&#xff0c;为各类工业生产提供了稳定可靠的支持。想要深入了解丝杆升降机&#xff0c;就必须探…...

【51单片机】2-3【I/O口】震动传感器控制LED灯

1.硬件 51最小系统LED灯模块震动传感器模块 2.软件 #include "reg52.h"sbit led1 P3^7;//根据原理图&#xff08;电路图&#xff09;&#xff0c;设备变量led1指向P3组IO口的第7口 sbit vibrate P3^3;//震动传感器DO接P3.3口void Delay2000ms() //11.0592MHz {…...

TortoiseSVN设置忽略清单

1.TortoiseSVN > Properties&#xff08;如果安装了 TortoiseSVN&#xff09;。 2. 在弹出的属性窗口中&#xff0c;点击 New > Other。 4. 在 Property name 中输入 svn:ignore 。 5. 在 Property value 中输入要忽略的文件夹或文件名称&#xff0c;例如&#xff1a; #…...

大模型持续学习方案解析:灾难性遗忘的工业级解决方案

引言 随着大型语言模型&#xff08;LLMs&#xff09;如 GPT 系列、BERT 等在自然语言处理领域取得突破性进展&#xff0c;它们强大的理解和生成能力已经渗透到各行各业。然而&#xff0c;这些模型通常是在海量静态数据集上进行一次性预训练的。现实世界是动态变化的&#xff0…...

《UNIX网络编程卷1:套接字联网API》第7章:套接字选项深度解析

《UNIX网络编程卷1&#xff1a;套接字联网API》第7章&#xff1a;套接字选项深度解析 一、套接字选项核心原理 1.1 选项层级体系 套接字选项按协议层级划分&#xff08;图1&#xff09;&#xff1a; SOL_SOCKET&#xff1a;通用套接字层选项IPPROTO_IP&#xff1a;IPv4协议层…...

Debian编译安装mysql8.0.41源码包 笔记250401

Debian编译安装mysql8.0.41源码包 以下是在Debian系统上通过编译源码安装MySQL 8.0.41的完整步骤&#xff0c;包含依赖管理、编译参数优化和常见问题处理&#xff1a; 准备工作 1. 安装编译依赖 sudo apt update sudo apt install -y \cmake gcc g make libssl-dev …...

医疗思维图与数智云融合:从私有云到思维图的AI架构迭代(代码版)

医疗思维图作为AI架构演进的重要方向,其发展路径从传统云计算向融合时空智能、大模型及生态开放的“思维图”架构迭代,体现了技术与场景深度融合的趋势。 以下是其架构迭代的核心路径与关键特征分析: 一、从“智慧云”到“思维图”的架构演进逻辑 以下是针对医疗信息化领域…...

【计算机网络应用层】

文章目录 计算机网络应用层详解一、前言二、应用层的功能三、常见的应用层协议1. HTTP/HTTPS&#xff08;超文本传输协议&#xff09;2. DNS&#xff08;域名系统&#xff09;3. FTP&#xff08;文件传输协议&#xff09;4. SMTP/POP3/IMAP&#xff08;电子邮件协议&#xff09…...