
PHP代码审计
文章平均质量分 61
加油
Y4tacker
关于我:Web安全、Java安全研究弟中弟
学校:四川大学(2019级)
写给自己:宁静致远,淡泊明志
展开
-
[2021N1CTF国际赛]Easyphp-Wp
文章目录写在前面Wp简单分析小实验验证猜想可效性构造tar参考文章写在前面在各种带飞的情况下,web被带ak了,这里比较想写一个easyphp的wp,这题到结束也只有14个解,其他的懒得写了,本文也只是简单分析Wp简单分析看看首页源码再看这里很明显是触发phar反序列化如何插入数据是一个问题,这里没有上传,再看log.php关键部分源码是这个,我们就应该去想如何去构造,这里phar太难搞了,具体可以看看官方文档关于他的结构,后面最后四位肯定是GBMB多一位都不行,这里想到了tar,本来原创 2021-11-22 16:58:42 · 3074 阅读 · 0 评论 -
[PHP内核]PHP内核学习(一)------SAPI学习
文章目录写在前面SAPI学习什么是SAPIsapi_module_struct结构简单注释cgi模式cli 模式fpm简单总结写在前面新开一个坑,虽然未来PHP用的不多,但是学起来还是有点意思SAPI学习什么是SAPI从php7内核剖析当中提到PHP本身可以理解为是一个库函数,提供语言的编译与执行服务,它有标准的输入、输出,而SAPI是PHP的接入层,它接收用户的请求,然后调用PHP内核提供的一些接口完成PHP脚本的执行从图中可以看出,各种应用都是通过对应的SAPI与php进行交互的原创 2021-09-19 21:46:33 · 662 阅读 · 1 评论 -
[BUUCTF]phar matches everything
文章目录写在前面脚本写在前面网上一堆水文章,看我脚本再理解下就行了,省略分析步骤脚本import osimport timeimport randomimport sysfrom io import BytesIOimport requestsimport base64import refrom urllib.parse import quotePY2 = True if sys.version_info.major == 2 else Falsedef force_byt原创 2021-09-07 00:22:04 · 429 阅读 · 1 评论 -
[PHP底层]命令执行底层分析
文章目录写在前面命令执行底层分析写在前面新法颁布,很多也不敢发了,就偶尔写一篇有意思的东西吧命令执行底层分析注意本篇是基于windows平台进行的分析环境这方面就不多说了VisualStudio、Vscode、php-src源码编译插件用了c\c++、CodeRunner,环境很简单不想多说,直接干活故事从一个system('whoami');说起,你明天都输入这些函数真的就不好奇干了些什么吗分析前先给大家看看函数调用栈通过全局搜索,我们定位到了ext\standard\exec.c第原创 2021-09-06 09:37:25 · 698 阅读 · 0 评论 -
[代码审计]齐博建站系统x1.0企业版代码审计
文章目录写在前面齐博建站系统x1.0后台存在命令执行漏洞齐博建站系统x1.0企业版前台反序列化漏洞写在前面复现2021 DASCTF July X CBCTF 4th赛题齐博建站系统x1.0后台存在命令执行漏洞漏洞点在于application/admin/controller/Upgrade.php下的sysup函数跟入writelog,很有趣没有过滤进行直接拼接写入的是php文件有点傻因此我们直接访问http://yyds.top/admin.php/admin/upgrade/sy原创 2021-08-02 10:09:28 · 1587 阅读 · 3 评论 -
[代码审计]蝉知企业门户系统v7.7存在命令执行漏洞
文章目录写在前面分析蝉知企业门户系统 V7.7存在命令执行漏洞写在前面感想BUUCTF平台之前没打GKCTF这次跟着复现一次,学会了新东西分析蝉知企业门户系统 V7.7存在命令执行漏洞可以看见相较于上一个版本多了一个需要文件存在才能进行模板修改我们可以在system/module/common/model.php下面找到,其下面调用的是file_exists,这个函数可以使用文件或者文件夹绕过而刚好微信模块就存在此功能,点击设置,微信设置,下面先随便填写保存再点击已完成接入在原始I原创 2021-07-18 10:05:59 · 2124 阅读 · 5 评论 -
[代码审计]信呼协同办公系统2.2存在文件上传配合云处理函数组合拳RCE
文章目录写在前面漏洞分析脚本写在前面本次强网杯决赛的一个题,还是蛮有意思的漏洞分析首先这个系统存在弱口令,在题目给的sql文件当中通过在线md5破解得到test/abc123接下来就是随便找一个地方进行文件上传我们抓包看看对这个php文件进行了什么处理,其调用了webmain/task/api/uploadAction.php下uploadClassAction类的upfileAction函数引入插件,实例化upfileChajian类跳过不需太过于关注的部分,我们跟踪up函数看看原创 2021-07-12 16:07:54 · 5725 阅读 · 4 评论 -
[PHP代码审计]iWebShop开源商城系统V5.9.21010存在命令执行漏洞
@Y4tacker文章目录写在前面iWebShop5.9存在命令执行漏洞目录结构漏洞演示及利用写在前面感兴趣的师傅可以去CTFSHOW复现iWebShop5.9存在命令执行漏洞本漏洞是后台权限,配合sql注入导致的文件删除,之后导致可重装从而实现RCE目录结构漏洞演示及利用该漏洞的利用比较巧妙,首先我们登录后台,点击添加商户功能这里添加一个y4tacker/y4tacker,记得开通功能,这里先备用接下来我们访问,用刚刚的商户账号登录即可http://url/index.php?c原创 2021-06-18 16:32:12 · 2326 阅读 · 2 评论 -
[PHP代码审计]emblog6.0.0存在SQL注入漏洞
文章目录写在前面漏洞利用写在前面上个水课,发现cnvd上面有个新的emblog的洞,这里简单复现分析下,算是个简单的适合新手学习的洞了漏洞利用漏洞点在后台添加自定义导航处对应代码在admin/navbar.php下第77行,能看见在这里接受POST传入的pages参数,遍历调用addNaviif ($action== 'add_page') { $pages = isset($_POST['pages']) ? $_POST['pages'] : array(); if (e原创 2021-06-08 08:43:11 · 1062 阅读 · 0 评论 -
[PHP代码审计]LightCMS1.3.7存在命令执行漏洞
文章目录写在前面利用姿势分析写在前面之前就想复现来着了,后来给我忘了,今晚补上吧利用姿势首先用phpggc生成一个phar,当然嫌弃懒的话可以用这个<?phpnamespace Illuminate\Broadcasting{ class PendingBroadcast { protected $events; protected $event; public function __construct($events,原创 2021-06-07 23:39:49 · 976 阅读 · 5 评论 -
[PHP代码审计]BigTreeCMS4.4.10-RCE
文章目录BigTreeCMS4.4.10-RCEBigTreeCMS4.4.10-RCE首先在后台add setting通过POST传入,csrftoken可能需要自己抓个包__csrf_token_TVLJG51HR1FP6KW15L0F3RY7LUHBPYDF__=IjwQ6eoeAzbUgSB8qm9Hq3A4fKQqDfEU5WD159HYFG4=&id=Test rce&name=Test rce&type=list&settings={"list_typ原创 2021-06-06 16:23:07 · 707 阅读 · 6 评论 -
[PHP代码审计]Piwigo11.4.0存在SQL注入漏洞
文章目录Piwigo11.4.0存在SQL注入漏洞写在前面分析Piwigo11.4.0存在SQL注入漏洞写在前面国内的不够玩了,玩玩国外的,不过刚找到一个最后告诉我,被交了,好吧为了高大一点教大家一个收集自己装备库的方法分析我们查看提交记录,点我直达,发现有一个fix是关于sql注入的那么我们安装好以后去看一眼,首先是首行的两个参数过滤觉得很好玩给大家看一眼限制为数字,好了不多吹牛逼了,看下面正题首先是接收order参数保证二维数组的[0][column]有值并赋值给变量$col,原创 2021-06-03 14:19:09 · 1126 阅读 · 5 评论 -
[PHP代码审计]由S-CMS5.0最新SQL注入带来的审计新思路
文章目录写在前面审计写在前面目前已交CNVD,出于其影响综合考虑,想了几天还是打算分享给大家,希望给大家带来更多的启发前几天挖了一下S-CMS的SQL注入,这里不得不引起我的一个思考,很多时候开发者只是误认为自己的全局Waf很安全,其实并不是,接下来我们就来看看这个SQL注入,当然这个CMS还有其他注入方式这里只是因为觉得这个点好玩所以才发这篇文章,只是想告诉大家,全局waf的错误对整个CMS来说都是致命的审计在这个CMS很多请求都是通过admin/ajax.php去实现,我们来看看头部,引入了三原创 2021-06-02 13:12:43 · 1015 阅读 · 3 评论 -
[PHP代码审计]emlog6.0.0整站审计
文章目录写在前面EmlogSQL注入注入点1注入点2注入点3文件上传漏洞利用点1任意文件删除漏洞任意文件删除1任意文件删除2(一不小心发现个洞交CNVD了)漏洞太多了就这样了,躺平了写在前面随便花了点时间读完了代码,看了很多页面,至少前台也是比较安全的,主要是测试了sql注入xss之类的,那么就去后台看看,作者还是比较有水平的,蛮细心的;节约时间,不带师傅们从起点分析过滤啥的,有用到再提,本篇算是一次随意的审计练习吧!也算是带师傅们踏入一次简单的审计之旅!当然可能也有遗漏的漏洞,毕竟是自己审计出来的原创 2021-05-31 22:08:04 · 1255 阅读 · 6 评论 -
[PHP代码审计]SEACMS命令执行漏洞
文章目录写在前面漏洞演示漏洞点分析写在前面考虑到是后台,且后台目录随机,感觉危害不太大,所以分享思路,这里是防御过度造成的,两个waf的利用导致参数逃逸,希望给大家的审计学习带来帮助漏洞演示漏洞点在后台的图片水印设置在这里我们用burpSuite拦截包,之后我们要修改三个地方,我把参数列出来------WebKitFormBoundaryiU3RjTlx8jjXvZLMContent-Disposition: form-data; name="photo_watertext"www.se原创 2021-05-31 11:26:19 · 1876 阅读 · 7 评论 -
[PHP代码审计]极致CMS1.9存在SQL注入漏洞
文章目录写在前面分析写在前面本着学习为主的原则,再考虑到利用难度,这里便公开分享挖掘的思路了分析尽管这个CMS大部分地方都适用了自带的frparam方法来获取参数,这个函数对我们传入的参数进行了过滤,但不妨有开发者大意的情况,比如下面这个情况就是漏洞点在于后台的插件配置处,随便安装一个插件,点击配置抓包,其默认为GET请求但我们跟踪一下底层的代码,在A/c/PluginsController.php下的setconf函数,这里直接将$_POST传入在A/exts/jizhicmsupdat原创 2021-05-25 20:35:03 · 1487 阅读 · 2 评论 -
[PHP代码审计][CVE-2020-15148]Yii2<2.0.38反序列化命令执行
文章目录写在前面POP链1POP链2分析写在前面最近倒是不知道干些啥,有点迷茫的状态,不过每天都保持学习就好了,今天空下来了准备写一篇刚学的POP链分析POP链1<?phpnamespace yii\db;class BatchQueryResult extends \yii\base\BaseObject{ private $_dataReader; public function __construct() { $this->_dataRe原创 2021-05-23 11:43:43 · 1780 阅读 · 11 评论 -
[代码审计]极致CMS底层代码剖析(FrPHP框架)
文章目录写在前面FrPHP目录结构CommonError.php写在前面为什么会写到这个呢,其实最重要的原因是我不太想去挖低级漏洞了,更希望能够从框架底层去挖漏洞提交,因此产生了这篇文章,当然由于各个版本的FrPHP核心逻辑不变,我这里用较低版本号的1.6.6去进行分析FrPHP目录结构common 包含系统部分配置、核心公共函数集、错误渲染页面db 数据库语句的封装Extend 拓展类所在目录lib MVC基类Fr.php FrPHP框架核心加载文件接下来我们就从各个目录去分析原创 2021-05-13 15:38:59 · 1286 阅读 · 0 评论 -
[代码审计]极致CMS1.9.5存在文件上传漏洞
文章目录极致CMSv1.9.5存在文件上传漏洞前言分析极致CMSv1.9.5存在文件上传漏洞前言网上看到CNVD爆了,自己闲的没事做也稍微找一下,蛮简单的也挺常见的分析准备工作首先本地创建一个php文件,这里我用1.php,内容为<?php eval($_POST[1]);?>之后把这 个文件压缩为zip后缀压缩包,上传至公网服务器即可,压缩包结构如下所示漏洞利用点在后台插件安装处,我们任意点击一个插件点击安装抓包发现url参数可控在A/c/PluginsControll原创 2021-05-11 10:29:03 · 3997 阅读 · 3 评论 -
[代码审计]Weiphp5.0 前台文件任意读取分析
文章目录前言分析前言最近一直在刷CNVD吧,大概两周刷了四页多,感觉自己水平也在见着长高,今天来分析一下Weiphp,毕竟也很久没写过博客了分析漏洞所在的函数为application/material/controller/Material.php下的_download_imgage函数,正好这是一个public方法,根据thinkphp的路由规则我们不难得到传参方式,这里直接先给出exp然后继续分析好吧http://ddcms.top//public/index.php/material/Ma原创 2021-05-09 17:57:03 · 1398 阅读 · 6 评论 -
[代码审计]Textpattern4.8.4任意文件上传漏洞
在网上看到的公开不久,自己无聊随意进行分析一下啦利用点在后台上传插件的地方从这里跟踪发现其调用了plugin_upload函数照顾小白加一点批注吧function plugin_upload(){ $plugin = array(); if ($_FILES["theplugin"]["name"]) { //获取上传表单 $filename = $_FILES["theplugin"]["name"]; $source = $_FIL原创 2021-04-25 20:25:45 · 753 阅读 · 2 评论 -
[代码审计]ThinkPHP5.0.0-5.0.18RCE另类利用姿势
前言网上看到的POC,我详细分析了路由和poc,是对一个姿势的利用,比较骚的是::可以调用非静态方法以及set_error_handler的使用Trick比较骚的是我们一直以为php当中::只能调用静态方法,但是非静态一定条件下也能成功调用成功输出123虽然有报错<?phpclass A{ public $a; public function y4tacker(){ echo 123; }}A::y4tacker();失败<?php原创 2021-04-20 09:49:35 · 1961 阅读 · 2 评论 -
[代码审计]DuxCMS 2.0审计
文章目录DuxCMS 2.0审计后台登录页存在用户名密码爆破后台页面存在文件上传漏洞看到CNVD爆出看了下easy的DuxCMS 2.0审计后台登录页存在用户名密码爆破用户名不存在会爆不存在,验证码与token绑定不过期import requestsimport timeurl = 'http://y4y4.top/s/system/Login/index'data = {'username': 'adminzzz','password': 'zzzaddsadsadsaasd','原创 2021-04-19 15:50:03 · 1078 阅读 · 0 评论 -
[代码审计]OurPHP后台任意文件删除漏洞分析
文章目录前言分析前言前几天爆出OURPHP有个后台任意文件删除漏洞,考虑到危害性不太大的情况下对此进行分析分析我们来删除这个我自己创建的文件夹漏洞点在client/manage/ourphp_bakgo.php中,首先这里有个eval会执行这俩函数,但是前面那个有exit所以我们得绕过它,随便GET请求传入一个值即可我们删除文件需要到第520行,来看看需要哪些参数首先是最外层的嵌套,$_POST[back_type]=="partsave"和$_POST['action']=="datab原创 2021-04-17 14:01:13 · 739 阅读 · 2 评论 -
[代码审计]kitecms后台存在文件上传漏洞
文章目录前言利用方式分析前言今天在CNVD看到这个东东,考虑到危害不大,因此就在这里分享分享利用方式这个漏洞后台很多地方都存在,然后首先/admin/site/config.html?config_name=uploadFile,在这里设置图片后缀为php,之后可以在带图片上传的地方,通过burp抓包绕过前端验证后,改为php后缀以及添加GIF89a,即可成功利用分析首先网站会根据你的账户权限在session当中设置site_id(这里不做分析,有兴趣可以自己看看蛮有意思),在admin/sit原创 2021-04-16 14:48:30 · 957 阅读 · 0 评论 -
[代码审计]KYXSCMS后台GetShell分析
@Author:Y4tacker@Time:2021/4/15kyxsCMS后台getshell昨晚看到可以Getshell那就看看呗,首先只能说在后台所以利用条件太高了准备工作首先去http://bbs.kyxscms.com/?t/1.html下载该漏洞版本,然后记得配置伪静态,kyxscms官方有问题location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break;原创 2021-04-15 09:34:25 · 764 阅读 · 0 评论 -
ThinkPHP3.2不规范接收参数导致的SQL注入分析之exp
本篇文章首先是讲解利用,之后会讲解I函数为什么能绕过过滤前提是tp没有用I函数去接收参数,具体原因会在分析之后给出先给出测试的payload,u[0]=exp&u[1]==%27admin%27接下来我们去分析首先看看我们index页面,看看我们的语句M就不必多说上一篇已经讲过了,返回一个users模型的对象,我们直接跟进where函数,看看接收的参数username为数组因为是数组原因所以只执行这一句赋值返回$this接下来进入find()也就是我们的关键,继续跟进首先mer原创 2021-02-24 18:04:18 · 682 阅读 · 0 评论 -
[白盒审计]熊海CMSV1.0(烦躁)
文章目录前言installindex.php和admin\index.php存在文件包含漏洞/inc/checklogin.php存在越权登录/admin/files/login.php 万能密码登录报错注入/files/contact.php存在xss注入前言第一次额,也不算第一次了,但是倒是第一次一个一个功能分析,下面将从安装到各个功能一个一个测试install一眼看去唯一利用点,方式嘛也就是报错注入呗$query = "UPDATE manage SET user='$user',passw原创 2020-12-21 23:15:29 · 1010 阅读 · 0 评论 -
[CTFSHOW][红包题]耗子尾汁
文章目录前言前置知识代码审计简单分析函数说明以及预期解非预期解参考文章前言很开心今天拿了一个一血,也谢谢Firebasky师傅的题目了前置知识在php当中默认命名空间是\,所有原生函数和类都在这个命名空间中。普通调用一个函数,如果直接写函数名function_name()调用,调用的时候其实相当于写了一个相对路径;而如果写\function_name()这样调用函数,则其实是写了一个绝对路径。如果你在其他namespace里调用系统类,就必须写绝对路径这种写法代码审计简单分析传入参数a与b,如原创 2020-12-01 23:25:03 · 1877 阅读 · 0 评论 -
[漏洞利用] CVE-2016-7124 漏洞复现(总结自一CTF题目)
文章目录漏洞影响的版本漏洞利用方法演示漏洞复现案例代码正常效果修改参数后的效果漏洞影响的版本从官网得知PHP5 < 5.6.25PHP7 < 7.0.10漏洞利用方法若在对象的魔法函数中存在的__wakeup方法,那么之后再调用 unserilize() 方法进行反序列化之前则会先调用__wakeup方法,但是序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行演示可能上面说的有点抽象就拿我今天遇到一道题来做个案例,运行下图<?phpcla原创 2020-07-21 21:33:53 · 12865 阅读 · 1 评论 -
[CTFSHOW]命令执行
文章目录web 29web 30web 31web32web40参考文章web 29<?phperror_reporting(0);if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag/i", $c)){ eval($c); } }else{ highlight_file(__FILE__);}我这里只想到五种简便的方法:通配符payload1:c=syst原创 2020-11-20 09:34:22 · 13641 阅读 · 20 评论 -
[BUUCTF]从WEB题学习SOAP+CLRF注入攻击
文章目录考点前言WP参考链接考点SOAP+CLRF+PHAR+反弹shell前言做自己喜欢的事情,别计较得失这些题也太喜欢phar与反弹shell了啊这Add:一些文章中所提到的学习链接放到了参考链接处WP首先是文件上传的部分,输入参数开头过滤了一堆协议吧,上次极客大挑战就是用compress.bzip加上phar绕过了,这次通过网上wp发现还可以配合php://filter/resource绕过前缀限制,从而触发phar反序列化include 'class.php';if (isse原创 2020-10-21 09:30:36 · 2966 阅读 · 2 评论 -
PHP反序列化字符逃逸学习
文章目录过滤后字符变多过滤后字符变少过滤后字符变多首先给出本地的php代码,很简单不做过多的解释,就是把反序列化后的一个x替换成为两个<?phpfunction change($str){ return str_replace("xx","3",$str);}$name = $_GET['name'];$age = "I am 11";$arr = array($name,$age);echo "反序列化字符串:";var_dump(serialize($arr));原创 2020-10-13 08:42:05 · 4842 阅读 · 4 评论 -
[BUUCTF][Zer0pts2020]Can you guess it?
文章目录前置知识一些学到的新函数与新变量新变量属性-PHP_SELF新php函数-basenamebasename broken with non-ASCII-charsWP部分前置知识一些学到的新函数与新变量新变量属性-PHP_SELF$_SERVER['PHP_SELF'] 表示当前 php 文件相对于网站根目录的位置地址,与 document root 相关下面是本地测试截图,也就是http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']新ph原创 2020-10-03 19:15:08 · 4761 阅读 · 0 评论 -
[BUUCTF][HITCON 2017]SSRFme
文章目录知识点新学会的函数代码审计知识点perl脚本GET open命令漏洞GET是Lib for WWW in Perl中的命令 目的是模拟http的GET请求,GET函数底层就是调用了open处理open存在命令执行,并且还支持file函数新学会的函数pathinfo代码审计前面的代码返回了我的ip,和orange一起进行md5加密。通过url参数输入的内容会以GET命令执行,命令执行的结果会被存入我们以filename参数的值命名的文件里<?php if (isset原创 2020-10-03 13:41:57 · 6146 阅读 · 2 评论 -
[BUUCTF]第一天训练
文章目录[BSidesCF 2019]Futurella[BJDCTF 2nd]duangShell反弹姿势1(未成功)反弹姿势2[BSidesCF 2019]Futurella好久没看过这么简单的题目了,哇哇哇整了个火星文,看不懂查看源代码[BJDCTF 2nd]duangShell点进去发现是swp源码泄露利用vim -r index.php.swp恢复文件这里我知道了exec函数与system类似但是没有回显,所以我传入的参数girl_friend=print_r(scandir(原创 2020-09-29 23:33:14 · 5024 阅读 · 0 评论 -
[代码审计][PHAR]巅峰极客babyphp2学习压缩过滤器触发phar
前言:我要当赛棍!!!文章目录序列化与反序列化基本介绍PHP反序列化漏洞原理常用的魔法函数__wakeup()绕过:CVE-2016-7124__set:巅峰极客babyphp2bypass phar:// 不能出现在首部本题关键源码Phar利用参考文章序列化与反序列化基本介绍序列化是将变量转换为可保存或传输字符串的过程反序列化就是在适当的时候把这个字符串再转化成之前的变量来使用php进行序列化的目的是保存一个对象方便以后重用php提供了serialize和unserialize函数用以进行原创 2020-09-29 17:41:14 · 4204 阅读 · 0 评论 -
[CTF][高校战疫]php-session反序列化题目
文章目录前置知识session 的存储机制利用session.upload_progress进行文件包含和反序列化渗透wp前置知识session 的存储机制php中的session中的内容并不是放在内存中的,而是以文件的方式来存储的,存储方式就是由配置项session.save_handler来进行确定的,默认是以文件的方式存储。存储的文件是以sess_sessionid来进行命名的php : 默认使用方式,格式 键名|键值(经过序列化函数处理的值)php_serialize: 格式 经过序列原创 2020-09-29 09:10:37 · 6402 阅读 · 1 评论 -
[BUUOJ][MRCTF2020]Ezpop
文章目录代码审计阶段Modifier类Show类Test类构造pop链代码审计阶段按照步骤一步一步分析Modifier类首先第一个Modifier类class Modifier { protected $var; public function append($value){ include($value); } public function __invoke(){ $this->append($this->var);原创 2020-09-22 00:40:07 · 5218 阅读 · 0 评论 -
[代码审计][攻防世界][NSCTF]Web2
打开题目,哦代码审计啊,看着要解密的亚子,看我的笔记吧<?php $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; function encode($str){ $_o=strrev($str); //字符反转 for($_0=0;$_0<strlen($_o);$_0++){ //函数功能是把每一位的对应ASCII码值+1然后转换为字符原创 2020-08-08 14:10:25 · 6040 阅读 · 1 评论