拿到一个 webshell 发现网站根目录下有.htaccess 文件,我们能做什么?

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了WHUCTF部分题目,包括代码审计、文件包含、过滤绕过、SQL注入。这篇文章将讲解Easy_unserialize解题思路,详细分享文件上传漏洞、冰蝎蚁剑用法、反序列化phar等。第一次参加CTF,还是学到了很多东西,后面几天忙于其他事情,就没再参加。人生路上,要珍惜好每一天与家人陪伴的日子。感谢武汉大学,感谢网安学院,感谢这些大佬和师傅们(尤其出题和解题的老师们)~

作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~

PS:本文参考了WHUCTF题目及WP、安全网站和参考文献中的文章(详见参考文献),并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。


声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
[网络安全自学篇] 四十七.微软证书漏洞CVE- (下)Windows证书签名及HTTPS网站劫持
[网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制


主界面显示如下图所示:

其中,upload上传文件, view查看已上传的图片。



这道题目有点遗憾没有完成,题目虽然叫“Easy_unserialize”,但我的第一想法是文件上传漏洞,也尝试了很多方法都未成功。下面我将分别从我的解题思路和WP思路进行讲解,希望对您有所帮助~


(1) “一句话木马”服务端
服务端一句话是指本地存储的脚本木马文件,是我们要用来将恶意代码上传到服务器网站中执行权限。该语句触发后,接收入侵者通过客户端提交的数据,执行并完成相应的操作。PHP常用一句话木马的代码如下:



连接成功后成功获取目标网站的服务器文件目录,如下图所示:


冰蝎作为新款的webshell连接工具,使用效果非常好。其基本使用方法如下图所示:

连接URL和密码并反弹shell。



由于该题只能上传图片文件,我们想到的是图片一句话木马。针对该网站,如果我们直接上传“ma01.php”文件它会提示“You can’t upload this kind of file!”错误,这是因为它指定了图片文件格式。

而当我们上传图片“mm.jpg”时,它就能成功上传,并且查看图片如下图所示:



内容检查是网站安全的重要手段之一。假设我们将包含一句话木马的“fox.php”修改为“1.jpg”并上传,有的网址会提示上传错误,因为JPG格式不能执行PHP文件脚本的。

如下图所示,它会判断图片的文件头,包括gif、png、jpg等格式。

文件头是用来判断数据格式的,这里尝试修改文件头进行上传,以gif文件为例,添加文件头“GIF89a”后即可上传成功。

同样可以尝试BurpSuite抓包修改文件后缀.php进行上传,后面会详细讲解。


由于该题有检测文件的content-type,我们可以准备一张很小的图片,比如画图中新建一个像素的jpg,然后往里面添加shell到图片尾部。同时,该题仅检测文件头,而没检测图片是否能正常使用,所以图片几十个字节也够用。接下来还需要让网站按PHP后缀来解析,这又涉及到解析漏洞。比如IIS的服务器会把诸如1.asp;1.jpg以asp来解析,虽然后缀本质是jpg;旧版的Apache可以上传1.php.xxx文件,只要xxx对容器来说不是动态脚本不能解析,它就会往左边逐个解析,直到遇到php就解析了;还有旧版的Ngnix可以上传shell.jpg,然后访问shell.jpg/1.php或者shell.jpg%00.php都可以用php来解析jpg文件。这些都是需要用到网站容器、系统、环境的缺陷或者漏洞。


(4) 图片一句话木马制作
某些网站上传文件时,会检查你上传文件的头目录,如果你的一句话木马是放在PHP文件中,它很容易被识别出来。这个时候图片一句话木马的作用就体现出来了。在CMD中直接运行,如下图所示,它是在mm.jpg图片中插入mm01.php中的一句话木马 “<?php eval($_POST[whuctf]); ?>” ,并存储为mm-ma01.jpg图片,其中b表示二进制,a表示ascii编码。

用Notepad++打开“mm-ma01.jpg”可以看到,里面包含了一句话木马,并且不影响我们的图片质量。



3.过狗一句话绕过限制

上面说明对某些关键字有限制,我们需要对一句话木马进行绕过处理,下面我总结了常见的一些方法:


下面是我进一步制作的图片一句话木马。

遗憾的是,虽然图片都能成功上传,但中国蚁剑和冰蝎都无法连接成功。

同时,发现只要增加文件头如“GIF89a”,就能够绕过该网站上传图片的限制。

如果是本地上传“gif-ma01.php”文件,就能够成功反弹shell,如下图所示。

查看该gif图片显示如下图所示:

但是中国蚁剑、冰蝎等仍然无法连接,接着怎么办呢?

这是因为部分网站是有文件格式解析的,即网站会判断上传的脚本是否可以被执行,某些文件格式是无法被解析的,即上传的jpg\gif格式文件无法被php格式解析。这也是为什么有的图片一句话木马不能访问,其实和网站环境相关,也涉及到解析漏洞,需要让所上传的文件按php格式解析才能运行。



接下来作者想通过BurpSuite拦截上传的文件,对其格式进行修改,看看能否上传并按照期待的php文件格式解析。下面详细介绍文件上传漏洞的各种方法,希望能帮助到您。

方法1:JS绕过文件上传
有的网站会通过客户端JS验证本地上传文件,所以如果你上传一个不正确的文件格式,它的判断会很快显示出来你上传的文件类型不正确。我们可以删除文件上传校验函数,如代码οnsubmit="return checkFile()"中的checkFile()。

比如,上传其他文件会有相关的错误提示。

或者尝试在允许上传格式的文件里添加.php格式。

失败: 因为该题没有本地校验,并且当前无法看到上传校验的代码。



方法2:上传允许上传的文件,再用BurpSuite进行抓包改包



方法3:MIME绕过文件上传
MIME(Multipurpose Internet Mail Extensions)多用于互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

核心作用:服务器判断你上传的是什么文件。其基本类型比如:

本题显示的是图片格式,下面是使用BurpSuite抓取所上传的JPG文件和PHP文件的类型对比。

某些情况会限制上传文件的类型,此时也需要修改“Content-Type”类型。比如将上传的PHP文件Content-Type修改为“image/gif”。



方法4:扩展名限制绕过

① 大小写、双写绕过文件上传
大小写是把文件扩展名进行php测试绕过。如“1.php”文件上传会被拦截,而修改成“1.phP”后成功上传。双写则为“phphpp”等格式。

② 点、空格绕过文件上传
在文件后缀上添加空格重新命名,会自动删除所谓的空格,点同理会自动删除的,因为可能尝试欺骗服务器验证。系统默认是不支持加空格、加点的,比如“.php空格”会自动解析为“.php”,“.php.”会自动解析为“.php”。比如使用BurpSuite抓包进行操作,如下图所示,将上传的“.php”文件后增加一个空格,再点击Forward进行上传。


.htaccess文件或者“分布式配置文件”提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。简单来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。它的功能有:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或目录的访问、禁止目录列表、配置默认文档等。这里我们需要用到的是改变文件扩展名,代码如下:

接着它会把fox名字的文件全都以php来运行,需要特殊文件进行创建,如Notepad++。首先上传一个“.htaccess”文件,再上传一个“fox.jpg”文件,它会将这张图片以php来解析。

显示如下图所示,因为是以php格式解析的,而不显示成一张jpg图片。

接着打开中国菜刀,获取了该服务器的目录。

显示的两个文件如下图所示:包括 “fox.jpg” 和 “.htaccess”。


PHP3代表PHP版本3,这里用于文件绕过检测。一般的软件都是向下兼容,PHP3代码,PHP5同样兼容能够执行。如下图所示,fox.php5文件同样能够正常上传。



Apache是从右到左判断解析,如果为不可识别解析,就再往左判断。比如1.php.xxx对Apache来说xxx是不可解析的,所以就会解析成1.php,这就是该漏洞的实现原理。

如上图所示,将本地“fox.php”修改为“fox.php.xxx”,然后点击上传。

接着尝试用菜刀去连接。URL为靶场的网址,密码为PHP一句话木马中的“fox”,代码如下:

下图是Caidao连接的示意图。

连接之后,成功获取文件目录,可以看到“fox.php.xxx”被成功上传。

本题能够成功上传“gif-ma01.php.xxxgif”文件,如下图所示,难道成功了吗?

然而当使用中国蚁剑和冰蝎去连接时仍然失败,说明该网站不存在Apache解析漏洞。

失败: 这道题目不会让你上传“.htaccess”文件,同时也不会让你简单绕过上传,不存在Apache等漏洞。



方法5:%00截断上传
0x00是十六进制表示方法,是ASCII码为0的字符,在有些函数处理时,会把这个字符当做结束符。这个可以用在对文件类型名的绕过上。需要注意,00截断get是可以自动转换的,post需要特殊转换,下面举一个例子。

首先,选择上传一张包含一句话木马的“php.jpg”图片。

然后,利用BurpSuite抓包并修改后缀名为“php.php%001.jpg”。如果直接修改为“php.php”可能会被过滤。

这种方法仍然不可行,因为它采用post提交数据,需要特殊转换。这里选中“%00”右键转换为URL格式,如下图所示,然后再点击“Forward”提交数据即可。

文件成功上传,%00自动截断后面的内容。

本题我也进行了尝试,上传包含一句话木马的图片文件“gif-ma02.gif”,然后利用BurpSuite抓包并修改后缀名为“gif-ma02.php%001.gif”。

失败: 非常遗憾,系统识别出来,并且扔给我一个“Hacker!”,真让人哭笑不得,还是太菜。



    以“*.asp”命名的文件夹里的文件都将会被当成ASP文件执行,比如“1.asp/1.jpg”,这里1.jpg会被当做asp文件执行。 “*.asp;.jpg”像这种畸形文件名在 “;” 后面的直接被忽略,也就是说当成 “*.asp”文件执行。比如“1.asp;1.jpg”命名的文件,同样是以asp脚本进行执行。

利用IIS6.0解析漏洞,我们可以在网站下建立名字为“*.asp” 、“*.asa”的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析。例如创建目录“vidun.asp”,则“/vidun.asp/1.jpg”将被当作asp文件来执行。如下图所示,尝试在左边“upfile/”文件路径名后面增加文件名称“1.asp;”,然后点击请求发送。右边会显示文件成功上传,其路径详见图中。

上传之后的文件可以成功访问,如下图所示,然后Caidao连接即可。


编辑器属于第三方软件,它的作用是方便网站管理员上传或编辑网站上的内容,类似我们电脑上的Word文档。常用编辑器包括FCKeditor、EWEbeditor、CKFinder、UEDITOR等。

在高版本fck中,直接上传或抓包修改文件名“a.asp;.jpg”,都会将前面的点变成下划线,也就是变成“a_asp;.jpg”,这样我们的文件名解析就无效果了。绕过方法是突破建立文件夹,其实质是利用我们IIS6.0的目录解析。


打开服务器,可以看到成功上传的图片文件。它名字被修改为“a_asp;.png”,这就是FCK高版本的过滤,它将“.”修改为“_”。


③ IIS高版本上传–畸形解析漏洞
前面讲述的IIS6.0毕竟是一个低版本,除了靶场和僵尸站很少能够遇到。下面讲解高版本漏洞。

    其漏洞不是IIS本身的问题,而是PHP配置不当造成的问题,根本原因是开启了cgi.fix_pathinfo选项。由于该漏洞是php配置造成,并且默认开启该功能,所以它影响了IIS7、IIS7.5、IIS8.5等多个版本,凡是IIS+PHP都有可能会有这个漏洞。 当我们上传一张名为“1.jpg”的图片文件,并且这张图片文件里包含以下代码。那么它会生成一个叫shell.php的脚本文件,并写入我们的一句话,密码为cmd。而一句话的位置是:上传的图片文件名字“/shell.php”。如果图片没有被改名,那么现在我们的一句话文件在“1.jpg/shell.php”中。

接着我们演示另一个代码,将“1.jpg”内容修改如下,直接写入shell。

但是此时会在服务器生成一个名为“shell.php”的文件,如下图所示:

并且“shell.php”包含了我们的一句话木马,这样通过Caidao即可访问该页面,并获取服务器的文件目录。

使用该方法我们尝试插入一句话木马,很幸运我们的图片是成功上传了。


aspx它有一个“web.config”的配置文件,它规定我们上传文件的后缀。

我们可以自定一个后缀名来解析aspx文件。

换句话说,当我们遇到可以上传配置文件的时候,则上传我们修改好的配置文件,然后自定义一个后缀名如“.ad”,从而绕过WAF或检测,上传成功之后它会解析成aspx并执行。如下图所示:

所以,当我们遇到可以上传配置文件的时候,通过该方法实现绕过,从而提权。


失败: 非常遗憾,我们通过下面的代码也没有成功。


哎,尝试了很多方法都没成功,自己还是太菜了!但希望这部分文件上传漏洞和一句话木马的总结希望您喜欢。大家有好的解决方法也可以告知我,接下来我们回到题目“easy_unserialize”,那可能需要反序列化解决。



下面我分享52hertz大佬的解题思路,并结合自己的经验总结。本题考查的上传phar触发反序列化,同时参考创宇404实验室的文章。

(1) 通过分析主页源码,发现upload和view两个对话框包括关键字段name=“acti0n”,抓包可以看到?acti0n=upload的访问方式,这是一个文件包含的漏洞点。

推荐作者上一篇文章的文件包含漏洞
文件包含漏洞是指通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入。当php://filter与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行,从而导致任意文件读取。

upload.php在线base64解码如下所示,没有什么利用的点。

访问view.php页面如下图所示:


(3) 简单的审计一下两份功能代码,upload.php中没有什么利用点,就是上传文件与拦截过滤了一些危险函数。关键点在view.php中,view.php里面有很显然的eval(),只要修改类中的私有变量$cmd就可以拿到shell。

这里有一个file_exists函数可以利用,而且最后还会进行代码执行。请参考 的文章(详见后参考文献),利用phar反序列化漏洞进行攻击,该方法在文件系统函数(file_exists()、is_dir()等)参数可控的情况下,配合phar://伪协议,可以不依赖unserialize()直接进行反序列化操作。这让一些看起来“人畜无害”的函数变得“暗藏杀机”,这里利用的就是file_exists函数触发该漏洞。


构造的exp模板代码如下,并且增加绕过gif文件头的限制。


(5) 本地运行上面的exp.php文件会生成phar文件,然后直接上传。

生成的phar.phar文件如下图所示:


注意,居然能上传phar文件,如果不知道该知识点或获取upload.php及view.php源码,还真不一定能成功。同时,在上传类型文件检测时,是通过添加GIF89a绕过的。


Wordpress是网络上最广泛使用的CMS,它也存在这个漏洞,并且该漏洞在2017年2月份就报告给了官方,但至今仍未修补。之前的任意文件删除漏洞也是出现在这部分代码中,同样没有修补,如下图所示wpnonce值可在修改页面中获取。具体过程请参考404实验室。



写到这里,这篇文章就介绍完毕,详细讲解了文件上传漏洞和一句话,最后的解决方法也是我没有想到的,希望对您有所帮助。学安全近一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知自己很菜,得努力前行。最后还是那句话,人生路上,好好享受陪伴家人的日子,那才是最幸福的事情,爱你~

欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。


}

转载自公众号:alisrc

38、给你一个网站你是如何来渗透测试的?
在获取书面授权的前提下。

40、nmap,扫描的几种方式

44、盲注和延时注入的共同点?
都是一个字符一个字符的判断

上传,后台编辑模板,sql注入写文件,命令执行,代码执行,
一些已经爆出的cms漏洞,比如dedecms后台可以直接建立脚本文件,wordpress上传插件包含脚本文件zip压缩包等

1、SQL注入防护方法:
2、失效的身份认证和会话管理
3、跨站脚本攻击XSS
4、直接引用不安全的对象
7、缺少功能级的访问控制
8、跨站请求伪造CSRF
9、使用含有已知漏洞的组件
10、未验证的重定向和转发

49、SQL注入防护方法?
2、对输入的特殊字符进行Escape转义处理
3、使用白名单来规范化输入验证方法
4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符
5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。

50、代码执行,文件读取,命令执行的函数都有哪些?

51、img标签除了onerror属性外,还有其他获取管理员路径的办法吗?
src指定一个远程的脚本文件,获取referer

52、img标签除了onerror属性外,并且src属性的后缀名,必须以.jpg结尾,怎么获取管理员路径。

}

渗透测试面试问题2019版

\技术。IIS 中默认不支持,ASP只是脚本语言而已。入侵的时候asp的木马一般是guest权限…APSX的木马一般是users权限。

54、如何绕过waf?

56、渗透测试中常见的端口

b、数据库类(扫描弱口令)

c、特殊服务类(未授权/命令执行类/漏洞)

WebLogic默认弱口令,反序列 hadoop默认端口未授权访问

d、常用端口类(扫描弱口令/端口爆破)

443 SSL心脏滴血以及一些web漏洞测试 cpanel主机管理系统登陆 (国外用较多) 2222 DA虚拟主机管理系统登陆 (国外用较多) 3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了 kangle主机管理系统登陆 WebLogic默认弱口令,反序列 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上 hadoop默认端口未授权访问

  • 文件上传有哪些防护方式
  • 计算机网络从物理层到应用层xxxx
  • 有没有web服务开发经验
  • mysql两种提权方式(udf,?)
  • 有没有抓过包,会不会写wireshark过滤规则

1、使用安全的API 2、对输入的特殊字符进行Escape转义处理 3、使用白名单来规范化输入验证方法 4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符 5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。 6、规范编码,字符集

为什么参数化查询可以防止sql注入

使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行

简单的说: 参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑

盲注是什么?怎么盲注?

盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。盲注的手段有两种,一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),在这里,可以用benchmark,sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。

宽字节注入产生原理以及根本原因

在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此\转义符号会被前面的bf带着"吃掉",单引号由此逃逸出来可以用来闭合语句。

统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。或对数据进行正确的转义,如mysql_real_escape_string+mysql_set_charset的使用。

如果此 SQL 被修改成以下形式,就实现了注入

之后 SQL 语句变为

sql如何写shell/单引号被过滤怎么办

其中的第18行的命令,上传前请自己更改。

php中命令执行涉及到的函数

DL函数,组件漏洞,环境变量。

== 在进行比较的时候,会先将字符串类型转化成相同,再比较

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行

0e开头的字符串等于0

各种数据库文件存放的位置

入侵 Linux 服务器后需要清除哪些日志?

查看当前端口连接的命令有哪些?netstatss 命令的区别和优缺点

ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?

通过Linux系统的/proc目录 ,能够获取到哪些信息,这些信息可以在安全上有哪些应用?

系统信息,硬件信息,内核版本,加载的模块,进程

linux系统中,检测哪些配置文件的配置项,能够提升SSH的安全性。

如何一条命令查看文件内容最后一百行

如何加固一个域环境下的Windows桌面工作环境?请给出你的思路。

AES/DES的具体工作步骤

RSA加密是对明文的E次方后除以N后求余数的过程

n是两个大质数p,q的积

如何生成一个安全的随机数?

引用之前一个学长的答案,可以通过一些物理系统生成随机数,如电压的波动、磁盘磁头读/写时的寻道时间、空中电磁波的噪声等。

建立TCP连接、客户端发送SSL请求、服务端处理SSL请求、客户端发送公共密钥加密过的随机数据、服务端用私有密钥解密加密后的随机数据并协商暗号、服务端跟客户端利用暗号生成加密算法跟密钥key、之后正常通信。这部分本来是忘了的,但是之前看SSL Pinning的时候好像记了张图在脑子里,挣扎半天还是没敢确定,遂放弃。。。

对称加密与非对称加密的不同,分别用在哪些方面

TCP三次握手的过程以及对应的状态转换

(1)客户端向服务器端发送一个SYN包,包含客户端使用的端口号和初始序列号x; (2)服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号xx1和服务器端的初始序列号y; (3)客户端收到服务器端返回的SYNSACK报文后,向服务器端返回一个确认号为yy1、序号为xx1的ACK报文,一个标准的TCP连接完成。

tcp面向连接,udp面向报文 tcp对系统资源的要求多 udp结构简单 tcp保证数据完整性和顺序,udp不保证

a、客户端发送请求到服务器端 b、服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在 c、客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端 d、服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端 e、客户端使用共享密钥解密数据 f、SSL加密建立

直接输入协议名即可,如http协议http

}

我要回帖

更多关于 eclipse的根目录怎么看 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信