xxe - lab

php-xxe
在这里插入图片描述

我们抓一下包看一下吧。

在这里插入图片描述

看到了我们发送的用户名/密码都是以POST形式发送的。并且很像是xml文档、

接下来开始源码审计。

<?php /** * autor: c0ny1 * date: 2018-2-7 */ $USERNAME = 'admin'; //账号 $PASSWORD = 'admin'; //密码 $result = null; libxml_disable_entity_loader(false); $xmlfile = file_get_contents('php://input');//这里面因为没有xml文档所以用的是php的伪协议来获取我们发送的xml文档 try{ $dom = new DOMDocument();//创建XML的对象 $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);//将我们发送的字符串生成xml文档。 $creds = simplexml_import_dom($dom);//这一步感觉相当于实例化xml文档 $username = $creds->username;//获取username标签的值 $password = $creds->password;//获取password标签的值 if($username == $USERNAME && $password == $PASSWORD){//将获取的值与前面的进行比较。... $result = sprintf(" %d%s",1,$username);//注意必须要有username这个标签,不然的话找不到username,就没有了输出了,我们也不能通过回显来获取信息了 }else{ $result = sprintf(" %d%s",0,$username);//与上方相同,都会输出username的值,都可以达到我们的目的 } }catch(Exception $e){ $result = sprintf(" %d%s",3,$e->getMessage()); } header('Content-Type: text/html; charset=utf-8'); echo $result; ?>

接下来只要有一点点的xxe基础就可以了,目标明确,只要我们构造的payload最后输出在username里面就行了,于是构造

<?xml version="1.0"?>

]>
&test;Mikasa

下面是结果:

在这里插入图片描述

参考:https://lightless.me/archives/Research-On-XXE.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值