[NCTF2019]True XML cookbook.txt
碎碎念:
这道题考察了xml和xxe,其实攻击手段手段是xxe,一开始做这道题一直没复现出来,bp爆破模块一直不动,之后用了python脚本也不行,就放弃了,第二天中午在试了一次,终于成功了,真玄学。做之前也是去补了一下xxe的知识,真不错。
解题:
进入题目是一个登录框,发现我们的登录名会显示在界面上
之前buu有道题也是和这道题目一样的ui,直接套用上道题目的解题答案,发现肯定不行。
首先来看一下这个payload构成
第一行<?xml version="1.0" encoding="UTF-8" ?>
这一行表示了这是xml的文档显示了版本信息和编码格式
最重要的一部分:
1 | <!DOCTYPE username [ |
这是DTD,用来规范xml的文档格式 username
为根元素 每个xml文档都要有一个根元素,并且有且只有一个,然后aaa
是我们定义的一个实体,并且这里SYSTEM
表示是外部实体,这也就是为什么xxe叫做外部实体注入,我们可以通过调用外部实体来达到我们预期的一个攻击手段。其实这里把他理解为是一个变量就可以之后是aaa
这个实体的值,这里可以看到是一个file协议,没错xxe可以与伪协议一起搭配使用去恶意读一些文件内容。 具体可以看这里:https://xz.aliyun.com/t/3357#toc-0 总结的很到位
然后通过 &实体名称;
的方式来调用这个我们创建的实体。
然后之后就不懂了 ,慢慢的去看大佬的wp去学习
之后可以通过filter伪协议去读 index.php的内容但是没有什么用
然后这道题的思路是通过xxe去探测内网 参考:https://blog.spoock.com/2019/10/08/proc/
https://www.cnblogs.com/secutity-zbk/p/14789043.html
- /etc/hosts 储存域名解析的缓存
- /etc/passwd 用户密码
- /proc/net/arp 地址解析的内核ARP表的信息
- /proc/net/fib_trie 路由缓存
扫一下域名解析缓存
扫一下用户登录状态密码啥的
发现都可以扫到
去扫解析的地址和路由缓存:
发现可疑ip,直接进行http协议读ip
发现不行,看了大佬的wp是因为c段ip不正确,也就是129这里不对,好像是计算机网络的知识,这里就不深究了,但是我们这里直接用bp的爆破模块就行,就是这里一开始没做出来,好像是题目问题,第二天终于做出来了
当网段正确时,拿到flag。