• 浅谈XXE攻击


    二.XML基础

    xml是一种用于标记电子文件使其具有结构性的标记语言,用于标记数据,和定义数据类型,可以为两种不同系统进行信息交换,
    XML文档结构包括xml声明,DTD文档类型定义(可选),文档元素
    在这里插入图片描述

    二.DTD文档定义,可以内部声明,也可以外部引用

        <!DOCTYPE address [<!ELEMENT address (#PCDATA)>
                                                <!ENTITY name "Tanmay patil">
                                                <!ENTITY company "TutorialsPoint">
                                                 <!ENTITY phone_no "(011) 123-4567">
                                                  ]>
    
    1.       <!DOCTYPE 根元素 SYSTEM "DTD文件的URL">
                  <!DOCTYPE address SYSTEM "address.dtd">
               <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文件的URL">
      

    3.实体声明,相等于定义了一个变量

    <!ELEMENT>这块略过,对xxe影响不大,自行去菜鸟教程了解 <!ENTITY>(重点):

    直接声明

    <!ENTITY 实体名称 实体的值 引用外部 <!ENTITY 实体名称 SYSTEM "URI">

    或者

    <!ENTITY 实体名称 PUBLIC "public_ID" "URI">

    三,如何判断xxe漏洞
    这里用一题南邮的web1题来作为案例

    在这里插入图片描述
    bp抓包看下,

    在这里插入图片描述
    发现Content-type:application/xml,或者直接从请求报文就能看出是xml了,说明可以去利用xml解析器来帮我们做一些事
    而且从题目提示中,得知flag就在/flag这个文件中。只要能弄到源码,就美滋滋了,所以想到xxe,那么直接看下我是怎么写的
    在这里插入图片描述
    <!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/flag>这句的意思就是SYSTEM这个系统命名将这个url的文件内容读进了xxe这个实体。
    所以答案就出来了。
    在这里插入图片描述
    解码下就ok了。以下,是发现几篇好文,可以更深入的了解。
    知乎某老哥的资料分享
    添加链接描述
    添加链接描述

  • 相关阅读:
    web print
    datediff
    Typical AJAX
    sql中构建sql语句,再exec这条SQL语句
    ASP.NET中将数据输出到WORD、EXCEL、TXT、HTM
    sql中添加单引号
    sql语句批处理
    日期分组
    异步线程
    电脑内存大有什么好处?
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779993.html
Copyright © 2020-2023  润新知