xml解析

pikachu靶场 :十三、XXE

允我心安 提交于 2020-02-03 08:13:15
pikachu靶场 :十三、XXE 概述 XXE 漏洞 盲注 概述 XXE -“xml external entity injection” 既"xml外部实体注入漏洞"。 概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题" 也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。 具体的关于xml实体的介绍,网络上有很多,自己动手先查一下。 现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。 以PHP为例,在PHP里面解析xml用的是libxml,其在≥2.9.0的版本中,默认是禁止解析xml外部实体内容的。 XXE 漏洞 构造payload,放入输入框提交。 < ?xml version = "1.0" ? > < ! DOCTYPE note [ < ! ENTITY hacker "test" > ] > < name > & hacker ; < /name > 可以看到我们的test打印出来了。 利用之前的漏洞,如果我们知道某一文件的具体位置在哪里,就可以利用此漏洞读取出来。 例如当前根路径下有个shell.php,可以这样构造 < ?xml version = "1.0" ? > < ! DOCTYPE ANY [ < !

xml规范及xml解析

假装没事ソ 提交于 2020-02-03 02:34:25
http://www.cnblogs.com/wang-meng/p/5374498.html 1,XML基础介绍   xml的概念:     XML 指可扩展标记语言(EXtensible Markup Language),也是一种标记语言,很类似 HTML。 它的设计宗旨是传输数据,而非显示数据它;标签没有被预定义,需要自行定义标签。   xml的作用:     XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。简单的说,我们在开发中使用XML主要有以下两方面应用. a.XML做为数据交换的载体,用于数据的存储与传输     b.XML做为配置文件 2,书写规范   注意事项: xml必须有根元素(只有一个)     xml标签必须有关闭标签     xml标签对大小写敏感     xml的属性值须加引号     特殊字符必须转义     xml中的标签名不能有空格,不能以数字或"_" (下划线)开头, 不能以xml(或XML、或Xml 等)开头,名称中间不能包含冒号(:) (有特殊用途) 空格/回车/制表符在xml中都是文本节点 xml必须正确地嵌套 View Code 3.xml的约束 xml的约束: 作用:明确的告诉我们那些元素和属性可以写,以及他们的顺序如何. 分类:DTD约束和SCHEMA约束 要求

Web Service(上)

谁说我不能喝 提交于 2020-02-03 02:32:49
1.XML CDATA 指不应由XML解析器进行解析的文本数据。 在XML元素中, < 和 & 是非法的。解析器会把字符 < 解释为新元素的开始,把字符 & 解释为字符实体的开始。 某些文本,比如JavaScript代码,包含大量 < 或 & 字符。为了避免错误,可以将脚本代码定义为CDATA。 CDATA部分由 <![CDATA[ 开始,由 ]]> 结束。 DTD(文档类型定义) 是一种XML的约束方式,它的目的就是约束XML标记的写法。 XML Schema(XML Schema Definition,XSD) 比DTD的约束能力强,所以DTD正在被逐渐淘汰。 在开发中通过Eclipse导入DTD文件,便于开发提示。 在XML中导入DTD,可以通过两种方式: 在XML中直接编写, <!DOCTYPE 根节点 [ ...... ]> 。 在专门的DTD文件中编写,然后在XML中通过特定的语句导入DTD文件。在导入时,要知道DTD文件是本地文件还是共享文件。 本地文件的导入格式: <!DOCTYPE 根节点 SYSTEM "dtd的URL"> 。 共享文件的导入格式: <!DOCTYPE 根节点 PUBLIC "dtd的名称""dtd的URL"> 。 book.xsd <?xml version="1.0" encoding="UTF-8" ?> <schema xmlns=

xml的使用入门

浪子不回头ぞ 提交于 2020-02-03 02:30:00
1.什么是xml Xml是一种标记语言,没有固定的标签,被用于信息的记录和传递,全称为可拓展性标记语言。 2.语法: 必须声明,用于描述xml的版本和编码方式,Xml有且只有一个根元素,Xml对大小写敏感,标签成对出现,且要正确嵌套,不能交叉,属性值要使用双引号 如 <?xml version="1.0" encoding="UTF-8"?> //xml声明版本与编码信息 <dependencies>//根元素 <dependency>              <!-- <label for="exampleInputEmail1"> 其中的for属于属性--> //注释 <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version>//元素,元素由开始标签,内容,结束标签组成 </dependency> </dependencies> 备注: xmlns=http://java.sun.com/xml/ns/javaee //默认命名空间,使得该标签本省以及他的所有子元素都属于这个名称空间,避免文档中产生的命名冲突,使得元素和属性名在整个系统中是唯一的,同时也限定了这些元素的作用范围,子标签中的属性不属于该名称空间,命名空间的处理方式与处理属性的方式不同,

XML笔记-概念、语法、解析

三世轮回 提交于 2020-02-02 20:40:58
## XML: 1. 概念: Extensible Markup Language 可扩展标记语言 * 可扩展:标签都是自定义的。 <user> <student> * 功能 * 存储数据 1. 配置文件 2. 在网络中传输 * xml与html的区别 1. xml标签都是自定义的,html标签是预定义。 2. xml的语法严格,html语法松散 3. xml是存储数据的,html是展示数据 * w3c:万维网联盟 2. 语法: * 基本语法: 1. xml文档的后缀名 .xml 2. xml第一行必须定义为文档声明 3. xml文档中有且仅有一个根标签 4. 属性值必须使用引号(单双都可)引起来 5. 标签必须正确关闭 6. xml标签名称区分大小写 * 快速入门: <?xml version='1.0' ?> <users> <user id='1'> <name>zhangsan</name> <age>23</age> <gender>male</gender> <br/> </user> <user id='2'> <name>lisi</name> <age>24</age> <gender>female</gender> </user> </users> * 组成部分: 1. 文档声明 1. 格式:<?xml 属性列表 ?> 2. 属性列表: * version

xml学习笔记

人走茶凉 提交于 2020-02-02 16:12:00
1、HTML与XML的区别 (1) html语言中存在着几个缺陷(松散,不区分大小写,可以不匹配),针对这个不足点提出了xml(extend markup lanuage)标签语言(可扩展标记语言)。   html的标记是固定的,但是XML中的标记是不固定的,可扩展的。   html负责页面结构, (2) xml来描述关系的数据结构 1、作为软件的配置文件) xml配置使用场景: 1)框架(strust2,hibernate,spring)中,xml作为框架的配置文件 2)Tomcat服务器软件配置文件(web.xml,server.xml) 2、装载数据,作为一种小型的数据库; xml的语法: 标签: <student></student> <student/> <!--表示一个空标签--> 标签: 1)分带标签体的标签,也有空标签 2)标签是区分大小写的 3)标签一定要配对 4)标签中不能含有空格 5)不能使用数字开头 6)可以使用下划线开头 7)在一个xml文件中,有且只有一个根标签。 属性: <student id="1">student</student> 其中的ID部分就是属性部分 1)属性值一定要用单引号或者是双引号包含,不能省略,也不能单双混用 2)一个标签里面可以包含多个属性,但是不能出现同名的属性 注释: xml的注释和html的注释是一样的。 文档声明: <

TinyXML用法小结

不羁的心 提交于 2020-02-02 00:22:16
TinyXML用法小结 1. 介绍 Tinyxml的官方网址: http://www.grinninglizard.com 官方介绍文档: http://www.grinninglizard.com/tinyxmldocs/tutorial0.html 在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlBase:整个TinyXML模型的基类。 TiXmlAttribute:对应于XML中的元素的属性。 TiXmlNode:对应于DOM结构中的节点。 TiXmlComment:对应于XML中的注释 TiXmlDeclaration:对应于XML中的申明部分,即<?versiong="1.0" ?>。 TiXmlDocument:对应于XML的整个文档。 TiXmlElement:对应于XML的元素。 TiXmlText:对应于XML的文字部分 TiXmlUnknown:对应于XML的未知部分。 TiXmlHandler:定义了针对XML的一些操作。 根据下图来说明常用的类对应的文本格式: <?xml version="1.0" ?> //TiXmlDeclaration,声明 <MyApp> //TiXmlElement,元素 <!-- Settings for MyApp -->//TiXmlComment,注释 <Messages>//TiXmlElement

C++ 使用TinyXML解析XML文件

拈花ヽ惹草 提交于 2020-02-02 00:20:43
1.介绍   读取和设置xml配置文件是最常用的操作, TinyXML是一个开源的解析XML的C++解析库,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。     下载TinyXML的网址: http://www.grinninglizard.com/tinyxml/   使用TinyXML只需要将其中的6个文件拷贝到项目中就可以直接使用了,这六个文件是: tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp。 2.读取XML文件 如读取文件a.xml: <ToDo> <Item priority="1"> <bold> Book store! </bold> </Item> <Item priority="2"> book1 </Item> <Item priority="2"> book2 </Item> </ToDo> 读取代码如下: 1 #include "tinyxml.h" 2 #include <iostream> 3 #include <string> 4 5 using namespace std; 6 7 enum SuccessEnum {FAILURE,

Android LayoutInflater&LayoutInflaterCompat源码解析

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-02 00:12:02
本文分析版本: Android API 23,v4基于 23.2.1 1 简介 实例化布局的XML文件成相应的View对象。它不能被直接使用,应该使用 getLayoutInflater() 或 getSystemService(Class) 来获取已关联了当前 Context 并为你正在运行的设备正确配置的标准LayoutInflater实例对象。 例如: LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 为了创建一个对于你自己的View来说,附加了 LayoutInflater.Factory 的 LayoutInflater ,你需要使用 cloneInContext(Context) 来克隆一个已经存在 LayoutInflater ,然后调用 setFactory(LayoutInflater.Factory) 来替换成你自己的Factory。 由于性能原因,View的实例化很大程度上依赖对于xml文件在编译时候的预处理。因此,目前使用 LayoutInflater 不能使用直接通过原始xml文件获取的 XmlPullParser ,只能使用一个已编译的xml资源返回的 XmlPullParser ((R

理清楚HTML和DHTML和XML的概念

这一生的挚爱 提交于 2020-02-01 13:47:09
DHTML 不是 W3C 标准 DHTML 指动态 HTML(Dynamic HTML)。 DHTML 不是由万维网联盟(W3C)规定的标准 。DHTML 是一个营销术语 - 被网景公司(Netscape)和微软公司用来描述 4.x 代浏览器应当支持的新技术。 DHTML 是一种用来创建动态站点的技术组合物。 DHTML 将 HTML、JavaScript、DOM 以及 CSS 组合在一起,用于创造动态性更强的网页。 XML 被设计用来传输和存储数据。 HTML 被设计用来显示数据。 HTML是超文本标记语言,标准通用标记语言下的一个应用。 “超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。 XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。 简单说,XML就是一种数据的描述语言,虽然它是语言,但是通常情况下,它并不具备常见语言的基本功能——被计算机识别并运行。只有依靠另一种语言,来解释它,使它达到你想要的效果或被计算机所接受 XML应用面主要分为两种类型,文档型和数据型: 1、自定义 XML