sql结构化查询语言
html超文本标记语言
xml可扩展的标记语言
报错原因:
1.xml有且只能有一个根节点
2.标签需要成对出现,否则下面就要加正斜杠
3.标签不规则嵌套
4.属性的值一定要加上单引号或者双引号
<?xml version=1.0' encoding='utf-8' ?>
<hello> hhelo GGBond </hello>
<a src="x"></a>
<a src="x"/>
<a href="javascript:alert'1'">22</a>
实体引用 XML元素,例如 <tag>foo</tag> 。如果xml元素内部出现如< 的特殊字符,解析就会失败,为了避免这种情况,XML用实体引用(entity reference)替换特殊字符。XML预定义五个实体引用,即用< > & ' " 替换 < > & ' "
<?php
// xml 相关
//disbale 禁用
// entity 实体
// loader 加载
// 设置false不禁用外部实体的加载
/* class O{
public function __toString(){
return 'jjbOnd';}
}
$obj = new O();
echo $obj;
exit(-1); // daoxiamiandaibuzhixing */
libxml_disable_entity_loader(false);
// 获取post请求体中的内容
$xmlfile = file_get_contents('php://input');
// 创建一个DOMDocument类型对象
$dom = new DOMDocument();
// 加载xml
dom−>loadXML(dom->loadXML(dom−>loadXML(xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
// simple 简单
// import 倒入
// dom dom节点
// 其实就是我们从xml中获得一个节点
creds=simplexmlimportdom(creds = simplexml_import_dom(creds=simplexmlimportdom(dom);
echo $creds;
?>
bp对以上php文件抓包,添加xml内容,回显,xxe成功
xxe无回显利用
请求抓包,Change request method