WebGoat8 M17 XXE 全思路、题解与答案

本文介绍了XML语言的基础知识,包括实体和外部实体,然后详细阐述了XML外部实体攻击(XXE)的概念。通过解决WebGoat8中的XXE问题3和4,展示了如何利用XXE获取文件系统根目录和读取远程文件。内容涵盖了不同操作系统下的根目录地址,以及构造XML实体和参数实体的方法。
摘要由CSDN通过智能技术生成

目录

01 什么是XML语言

02 实体、外部实体

03 什么是XXE

04 XXE问题3 ★

05 XXE问题4 ★

06 参数实体

07 XXE问题7 ★

 

WebGoat系列其他文章:WebGoat8 答案与难题题解 系列文章目录

 


01 什么是XML语言

XML(EXtensible Markup Language),可扩展标记语言,是一种用于标记电子文件,使其具有结构性的标记语言,可以用来标记数据,定义数据类型。与HTML不同:HTML被设计来显示数据,XML被设计来传输数据

例如下图中的代码就是XML代码:

 

02 实体、外部实体

实体是XML中一种用来指代指定字符的引用,在XML解析器运行时,解析器会用指定字符替换实体来执行文件。实体都以"&"开头,以";"结束。例如:"&" 是指代"&"字符。实体必须在DTD中被合法创建才能在后续的代码中被使用。

 

例子:

<?xml version="1.0"?>
  <!DOCTYPE test [
    <!ENTITY aaa "This is text">
  ]>
<p>&aaa;</p>

 

创建内部实体的格式是

<!ENTITY {实体名} "{用来替代实体的文本}">

在这段代码中,<!ENTITY aaa "This is text">创建了一个名为aaa的内部实体,用来代替This is text这段文本。

调用的格式是:

&{实体名};

通过&aaa;对实体进行调用,在执行时,&aaa;会被XML解析器用This is text代替。

 

 

实体通常分成:

  • 外部实体
  • 内部实体
  • 参数实体

 

外部实体和内部实体是相对而言的。外部实体引用的是来自外部的文件,而内部实体引用的通常是字符串ÿ

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值