渗透流程[汇总]

我没有这样的感觉,我是一个人类,尽管我是混血种,但是首先,我是人类,我的记忆不会消散,它只能随着我的肉体消亡。我还没有死过,也无法重生,所以我的记忆都是现实的。但是你说的那种感觉,我也体会过,因为我看见过很多朋友,死在我面前。曾经和我一起闯荡世界的朋友们,就剩我一个人还活着了。这样的感觉,我想以后再也体会不到了。

web渗透基本流程小结

如果是针对某种开源程序

[ 如,wordpress,drupal,joomla,discuz,opencart,phpbb,SquirrelMail…… ]:

先想办法确定其对应的具体版本号,然后去找下该版本曾经爆过的一些exp并尝试利用,不过在此之前,最好先自己在本地搭环境测一下,成功以后再丢到目标上去搞不迟,只不过,你可能事先需要对各种开源程序拿shell的方式比较熟悉

如果是针对非开源程序,应该尽量先直奔一些比较高危的漏洞去,因为我们最终的目的可能还是想快速get到目标的webshell,没必要在一些边缘性的漏洞利用上浪费太多的时间 :

扫目录找到入口

首先,找目标网站的各种web入口[ 这里并不仅限目标网站后台,如,各种数据库的web管理入口(phpmyadmin),各类java控制台……都是可以的,如果连入口都没有,后面有些漏洞利用就比较尴尬了],找到以后,可以先顺手简单尝试些弱口令[尽量多试几个,没有验证码的情况下,也可尝试爆破],万能密码[sql注入的一种,需要自己平时多搜集一些],未授权访问[有些后台可能会存在这样的问题,页面权限控制不好所致]

参考案例:登录框测试

参考案例:爆破登录

参考案例:万能密码与注入

上传漏洞

找目标网站的各种上传点[包括各类漏洞编辑器路径],挨个尝试上传……

参考案例:上传漏洞

文件包含与任意文件读取

多翻翻目标网站,仔细观察下请求,尝试利用可能存在包含或者任意文件读取[如,xxe]的各种参数

参考案例:上传漏洞

命令执行与反序列化

同样是看请求,找各种可能存在执行,反序列化,ssrf…类的参数进行尝试,说实话,对这类的漏洞,如果不审代码,仅仅单靠盲测[想成功拼接利用还是比较困难的,起码我自己还没有这么成功过,嘿嘿……,话说回来,像命令执行这类的漏洞可以在发邮件的地方顺手尝试下,仅仅对于php而言哈,说不定有惊喜呢],除非一些非常特殊的功能,不过那个,差不多能一眼看出来

扫描备份

扫下目标的svn,如果可以利用的话,看看能不能从里面下到一些目标的敏感配置文件什么的,主要想拿一些账号密码

参考案例:备份文件扫描

SQL注入

找各种可能存在sql注入的参数,挨个尝试,观察目标响应

参考案例:SQL注入攻击

任意文件下载

尝试找一些下载点参数,看看能不能把目标的脚本文件也给下下来

目录遍历

找目录遍历,看能不能从中看到一些目标的敏感文件什么的,比如,各种网站,数据库备份文件,各类探针文件,密码文件,源码泄露等等……顺手给下下来

扫描敏感文件

实在不能遍历,不妨尝试用字典[前提是字典要靠谱才行]或者wvs,慢慢跑一下目标站的各种敏感目录文件

JSON劫持

一些web应用会把一些敏感数据以json的形式返回到前端,如果仅仅通过cookie来判断请求是否合法,那么就可以利用类似csrf的手段,像目标服务器发送请求,以获得敏感数据。虽然说该漏洞比较难拿到webshell,但是属于渗透测试流程中需要测试的一部分。

参考案例:SQL注入攻击

谷歌黑客

如果目标网站起来的时间比较长的话,也可以利用谷歌来爬一些敏感参数,文件及网站错误什么的

子域名

看有没有好下手点儿的子域,尝试从那儿进去也是可以的

信息采集:子域名查询

服务器层漏洞

观察目标站到底用的那种web服务器,具体什么版本的,看看有没有一些可以快速远程利用的exp,比如,tomcat,apache,iis[6.0] 曾经的各种RCE……

如果目标用网站是基于某种框架[strus2,tp……],可以先确定其对应的具体框架版本,然后去找一些针对此框架的exp尝试利用,还是那句话,先自己在本地测成功了,再丢到目标上搞

代码审计

再如果,目标用的是一些比较不知名的小众程序[嘿嘿……]像wp,joomla,或者drupal这种全球知名的就算了吧,暂时没必要,也没能力去独立审],在上面这些办法都搞不定的情况下,可以尝试把目标用的程序对应版本的的源码搞一份,down下来多花点儿时间好好审审,也许能审出一点点突破

扫描器扫描

如果你实在觉得,这样手工搞下去,希望不大,不妨直接丢给各种web wvs 自己去扫就好了[当然啦,前提得目标’让’你扫才行,对于那些上了各种waf,ids的目标,还是手工低调的慢慢搞比较好一点],记得尽量把高危的一些规则集事先更新一下,切记,务必慢慢扫[别着急],避免惹一些不必要的麻烦[主要是各类防火墙,频繁的切代理,比较烦,tor也比较慢….]

旁站

如果上面的这些还不太好使,这时可以先确定目标站的真实ip[务必是目标站的真实ip,相信这些东西,在信息搜集阶段你就已经搞定了],然后再想办法从旁站搞,如果旁站也不行,可以再试C段[包括C段的web和端口(尤其是sa),实在没办法再试这个,如果都是linux 虚拟机,说实话,不太好提,另外,没必要在C段浪费太多时间,能有一个进去就行了]

XSS

关于xss的利用,这里就不多说了,因为个人确实不太擅长这方面[对于自己手里现有的目标想很好的利用起来太难了,有发xss的机会不如直接发马来的更直接],不过需要你自己先把xss平台搭起来[如果你喜欢把beef转发出来也行,随意,看你自己],一般在我自己的目标里,xss还是蛮多的,但利用比较困难,实际给目标发信的效果也并不太好[可能是太多人发过太多次了吧,人基本都不鸟你了],利用这种方式来getshell还是比较曲折的,当然,并不是说它没有用,相反,如果用好了,还是非常牛逼的……

端口服务爆破

当你把这些都尝试完[可能此时已经过了一个多星期了或者更长时间],依旧一无所获,别伤心,因为还有端口没试过,扫下目标站都跑了什么服务[这里务必是真实目标ip],尝试利用下各种漏洞服务,实在不行,起码你还可以爆破[前提是字典务必要精心做,在前面大量的信息搜集中,相信你已经拿到了一些敏感信息,然后你可以根据已搜集到的这些信息来做字典]

社工

如果你实在觉得端口也没什么希望了,不妨尝试爆破下目标域名的注册邮箱,虽然稍微有点儿偏离目标了,好歹也是个入手点,万一成功了呢,至于后续的劫持社工什么的就要看你自己的了

一边搜集目标邮箱,撞密码,一边找目标的各种内网入口如,vpn,owa……[如果你确定目标有内网],尝试登陆

如果以上方式全废,而且你手里又没有可直接远程利用0day的情况下,发信吧,简单,粗暴,直接,收获快,虽然现在希望已经越来越小,但万一上了呢,总归是个突破口

当然,真的有条件的情况下,尝试路由或者实地无线渗透,也是可行的[不过,这中间还有很多不确定因素,需要相互配合才行],关于其它的一些东西,自己目前暂时也还在努力学习中,这里不多说了

[转载]渗透测试岗位面试题

1.拿到一个待检测的站,你觉得应该先做什么?

收集信息
whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息另说...

2.mysql的网站注入,5.0以上和5.0以下有什么区别?

5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操做。

3.在渗透过程中,收集目标站注册人邮箱对我们有什么价值?

丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。
用邮箱做关键词进行丢进搜索引擎。
利用搜索到的关联信息找出其他邮进而得到常用社交账号。
社工找出社交账号,里面或许会找出管理员设置密码的习惯 。
利用已有信息生成专用字典。
观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西。

4.判断出网站的CMS对渗透有什么意义?

查找网上已曝光的程序漏洞。
如果开源,还能下载相对应的源码进行代码审计。

5.一个成熟并且相对安全的CMS,渗透时扫目录的意义?

敏感文件、二级目录扫描
站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点

6.常见的网站服务器容器。

IIS、Apache、nginx、Lighttpd、Tomcat

7.mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?

root权限以及网站的绝对路径。

8.目前已知哪些版本的容器有解析漏洞,具体举例。

IIS 6.0
/xx.asp/xx.jpg "xx.asp"是文件夹名
IIS 7.0/7.5
默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
Nginx
版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。
空字节代码 xxx.jpg%00.php
Apache
上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀
lighttpd
xx.jpg/xx.php,不全

9.如何手工快速判断目标站是windows还是linux服务器?

linux大小写敏感,windows大小写不敏感。

10.为何一个mysql数据库的站,只有一个80端口开放?

更改了端口,没有扫描出来。
站库分离。
3306端口不对外开放

11.3389无法连接的几种情况。

没开放3389 端口
端口被修改
防护拦截
处于内网(需进行端口转发)

12.如何突破注入时字符被转义?

宽字符注入
hex编码绕过

13.在某后台新闻编辑界面看到编辑器,应该先做什么?

查看编辑器的名称版本,然后搜索公开的漏洞。

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

能做的事情很多,用隐藏网马来举例子:
插入
<FilesMatch "xxx.jpg"> SetHandler application/x-httpd-php </FilesMatch>
.jpg文件会被解析成.php文件。

15.注入漏洞只能查账号密码?

只要权限广,拖库脱到老。

16.安全狗会追踪变量,从而发现出是一句话木马吗?

是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。

17.access 扫出后缀为asp的数据库文件,访问乱码。如何实现到本地利用。

迅雷下载,直接改后缀为.mdb。

18.提权时选择可读写目录,为何尽量不用带空格的目录?

因为exp执行多半需要空格界定参数

19.某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?

同数据库。

20.注入时可以不使用and 或or 或xor,直接order by 开始注入吗?

and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。

21:某个防注入系统,在注入时会提示:

系统检测到你有非法注入的行为。 已记录您的ip xx.xx.xx.xx 时间:2016:01-23 提交页面:test.asp?id=15 提交内容:and 1=1
如何利用这个防注入系统拿shell?
在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。

22.上传大马后访问乱码时,有哪些解决办法?

浏览器中改编码。

23.审查上传点的元素有什么意义?

有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。

24.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?

先爆破用户名,再利用被爆破出来的用户名爆破密码。
其实有些站点,在登陆处也会这样提示
所有和数据库有交互的地方都有可能有注入。

25.目标站发现某txt的下载地址为Client Validation,你有什么思路?

这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。

26.甲给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和admin目录。请问你的想法是?

直接在网站二级目录/abc/下扫描敏感文件及目录。

27.在有shell的情况下,如何使用xss实现对目标站的长久控制?

后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。
在登录后才可以访问的文件中插入XSS脚本。

28.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的密码?

审查元素 把密码处的password属性改成text就明文显示了

29.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因?

原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过

30.审查元素得知网站所使用的防护软件,你觉得怎样做到的?

在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部 比如护卫神就可以在名称那看到<hws>内容<hws>。

31.在win2003服务器中建立一个 .zhongzi文件夹用意何为?

隐藏文件夹,为了不让管理员发现你传上去的工具。

32、sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由:

A. demo.jsp?id=2+1 B. demo.jsp?id=2-1 
选B,在 URL 编码中 + 代表空格,可能会造成混淆

33、以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路?

demo.do?DATA=AjAxNg== 
DATA有可能经过了 base64 编码再传入服务器,所以我们也要对参数进行 base64 编码才能正确完成测试

34、发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选?

有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 WebShell 
使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样效率更高 
通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell

35、CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?

XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。

CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer 

XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。

36、CSRF、SSRF和重放攻击有什么区别?

CSRF是跨站请求伪造攻击,由客户端发起 
SSRF是服务器端请求伪造,由服务器发起 
重放攻击是将截获的数据包进行重放,达到身份认证等目的

37、说出至少三种业务逻辑漏洞,以及修复方式?

密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码 
身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份 
验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过

38、圈出下面会话中可能存在问题的项,并标注可能会存在的问题?

get /ecskins/demo.jsp?uid=2016031900&keyword=”hello world” HTTP/1.1Host:*******.com:82User-Agent:Mozilla/5.0 Firefox/40Accept:text/css,*/*;q=0.1Accept-Language:zh-CN;zh;q=0.8;en-US;q=0.5,en;q=0.3Referer:http://*******.com/eciop/orderForCC/cgtListForCC.htm?zone=11370601&v=145902Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d;uniqueserid=session_OGRMIFIYJHAH5_HZRQOZAMHJ;st_uid=N90PLYHLZGJXI-NX01VPUF46W;status=TrueConnection:keep-alive
11

39、找一类你最擅长的漏洞,谈下绕过漏洞修复后的方案?
40、你常用的渗透工具有哪些,最常用的是哪个?
41、描述一个你深入研究过的 CVE 或 POC。
42、谈谈你经常关注的安全平台?

[转载]我的面经,渗透测试

00x00 摘要

笔者作为网络安全的初识者,从求职者的角度总结了一点点关于渗透测试工程师求职面试的要点给即将毕业的大学生(实习生和应届生)予以参考,以便能更好更快地找到一份自己满意的工作。

总结基于笔者本人的几次面试经历,都是自己投简历(广州的几家公司),没有校招。这里简单介绍一下:我自学web渗透和Android逆向半年有余,计算机网络专业的专科生,通过赛事接触web渗透,慢慢接触Android逆向,继而初识网络安全。没有什么值得吹嘘的事,O(∩_∩)O哈哈~,没事就学习研究,个人博客 http://a--o--e.lofter.com

00x01 现场面试准备

简历(打印3份以上,彩色),身份证,毕业证等资料;
电脑(无线鼠标,电源线等);
本子和笔,着装整洁,守时(提前20分钟到);
面试公司的认识(地点,公司发展时间戳,部门,面试官等)。

00x02 对于电话面试(技术员工)- 可看着读

约好时间并提前15分钟找个安静,信号好,没人打扰的地方,注意手机电量;
站着进行电话面试,保持微笑,通话可录音;
一份简历,本子和笔,耳机等(看着简历来);
先想好,面试官会问的问题及答案,记要点(渗透测试的思路等)。

00x03 面试官问的问题(技术员工或部门经理+HR)

Q1 自我介绍
1)可参照简历
2)有条理(三分钟左右)

Q2 一个网站的渗透测试思路,流程(给你一个网站,怎么做?)

1)信息收集
a. 服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)
b. 网站指纹识别(包括,cms,cdn,证书等),dns记录
c. whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
d. 子域名收集,旁站查询(有授权可渗透),C段等
e. google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等
f. 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等
i. 传输协议,通用漏洞,exp,github源码等

2)漏洞挖掘
1> 浏览网站,看看网站规模,功能,特点等
2> 端口,弱口令,目录等扫描
3> XSS,SQL注入,命令注入,CSRF,cookie安全检测,敏感信息,通信数据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等

3)漏洞利用 | 权限提升
a) mysql提权,serv-u提权,linux内核版本提权等

4)清除测试数据 | 输出报告
i 日志、测试数据的清理
ii 总结,输出渗透测试报告,附修复方案

5) 复测

验证并发现是否有新漏洞,输出报告,归档

Q3 一个APP的逆向分析思路(给你一个APP,怎么做?)
这里简单列一下app测试的大纲,详细不便放出(可参照OWASP的mstg):https://github.com/OWASP/owasp-mstg/
1代码保护检测,2数据存储安全,3加密算法,4四大组件安全,5应用规范 等

Q4 简述某一漏洞的原理和渗透手法(SQL注入,XSS,CSRF等)
SQL注入- 百度百科

SQL注入原理

a. SQL(结构化语句查询)
b. 提交参数(调用数据库查询)的地方是用户可控的,并未做任何过滤处理
c. 分 数字型,字符型,搜索型,POST注入,Cookie注入,延时注入,盲注等
SQL注入,注入方法
1)如果是get型号,直接,sqlmap-u “注入点URL”
2)如果是post型诸如点,可以sqlmap-u “注入点URL” –data=”post的参数”
3)如果是cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用 * 号替换,放到文件里,然后sqlmap -r “文件地址”
XSS跨站脚本攻击 - 百度百科

XSS原理

网站未对用户输入的数据做过滤处理,构造特定的JS脚本插入到文本框可引发XSS,会被浏览器解析,执行
XSS常见攻击语句

"><BODY><"
"><svg /onload=prompt(1)><"
"><IMG SRC="javascript:alert('XSS');"><"
"><img src=" "=" "onerror="alert('xss')"><"
"><script>alert(document.cookie)</script><"

Q5 编程语言

1,python,JAVA,算法,二进制等编程能力(笔者暂未学,不深入探讨)
2,ARM汇编(基本的汇编指令,寄存器等)

Q6 WAF bypass

1,关键字可以用%(只限IIS系列)。比如select,可以 sel%e%ct
2,通杀的,内联注释,如 /!select/
3,编码,可两次编码
4,multipart请求绕过,在POST请求中添加一个上传文件,绕过了绝大多数WAF
5,参数绕过,复制参数,id=1&id=1
6,内联注释

Q7 Kali的使用(Linux系统)
whatweb 指纹识别
dirb 目录扫描
whois whois查询
无线攻击套件
字典生成套件
爆破工具
kali系统中的工具清单 - 官方介绍

Q8 OWASP-Top10-2017
A1 注入, A2 失效的身份认证, A3 敏感信息泄露, A4 XML外部实体(XXE), A5 失效的访问控制, A6 安全配置错误, A7 跨站脚本(XSS), A8 不安全的反序列化, A9 使用含有已知漏洞的组件, A10 不足的日志记录和监控
OWASP_Top_10_2017_中文版v1.2.pdf

Q9 网络安全事件应急响应(如,一业务主站被挂黑页的处理流程及应对方法)
取证,登录服务器,备份,检查服务器敏感目录,查毒(搜索后门文件 - 注意文件的时间,用户,后缀等属性),调取日志(系统日志,中间件日志,WAF日 志等);
处理,恢复备份(快照回滚,最近一次),确定入侵方法(漏洞检测,并进行修复)
溯源,查入侵IP,入侵手法(网路攻击事件)的确定等
记录,归档—-预防-事件检测-抑制-根除-恢复-跟踪-记录
通用漏洞的应对等其他安全应急事件

Q10 提交过的漏洞
国内外的漏洞提交平台,各SRC等

Q11 其他优势

1,新兴技术的研究(IOT安全,区块链,人工智能,机器学习等)
2,个人博客(原创文章),投稿,人脉,安全峰会,安全研究Paper, 安全议题分享等
3,比赛(CTF,团队比赛等),线下培训
4,在校经历(获奖,个人项目,团队活动,担任学生干部等)
5,英语 CET-4,CET-6

Q12 读过的技术书籍(学习的途径)

《白帽子讲web安全》、《ios应用逆向工程-第2版》、《加密与解密-第3版》、《汇编语言-第2版》、《OWASP-MSTG》

00x04 问面试官的问题
q1 贵公司,信息安全部门的规模,发展等
q2 任职后的工作职责,内容,出差,时间等
q3 劳动合同(实习生签三方协议和转正问题),是否解决户口
q4 薪资(税后),奖金,股票期权,福利,活动等

00x05 面试总结
1 记录面试官的问题和自己的回答
2 查漏补缺
3 收获
4 是否通过,下次面试或报道入职时间

00x06 扩展阅读
网络安全、Web安全、渗透测试之笔经面经总结(三)- christychang

面试前都需要做些什么准备?- 知乎

[来自](https://xianzhi.aliyun.com/forum/topic/2091)

思维导图

渗透标准流程

转载地址,侵删

转载地址,侵删

坚持原创技术分享,您的支持将鼓励我继续创作!
------ 本文结束 ------

版权声明

LangZi_Blog's by Jy Xie is licensed under a Creative Commons BY-NC-ND 4.0 International License
由浪子LangZi创作并维护的Langzi_Blog's博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证
本文首发于Langzi_Blog's 博客( http://langzi.fun ),版权所有,侵权必究。

0%