安装 Jenkins
[root@control-plane jenkins]# cat compose.yaml
services:jenkins:# Jenkins 2.516.2image: jenkins/jenkins:ltsports:- "8080:8080"# https://github.com/jenkinsci/docker/blob/master/README.md#connecting-agents- "50000:50000"volumes:- jenkins_home:/var/jenkins_home
volumes:jenkins_home:
安装 Docker 和 Kubernetes 插件
路径:Jenkins / 系统管理 / 插件管理 / Available
搜索:
- Docker Pipeline
- Kubernetes plugin
配置 Jenkins 与 Kubernetes 集群的连接
路径:Jenkins / 系统管理 / Clouds / New cloud
Credentials
需要创建一个凭证来认证 Jenkins 对 Kubernetes 集群的操作。通常,可以创建一个 Service Account
和相应的 ClusterRoleBinding
或 RoleBinding
。
[root@control-plane jenkins]# cat jenkins-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: jenkins-agent
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: jenkins-agent-binding
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: edit # edit 角色通常足够,它允许在命名空间内创建和管理资源
subjects:
- kind: ServiceAccountname: jenkins-agent
---
apiVersion: v1
kind: Secret
metadata:name: jenkins-agent-tokenannotations:kubernetes.io/service-account.name: jenkins-agent
type: kubernetes.io/service-account-token[root@control-plane jenkins]# kubectl apply -f jenkins-sa.yaml
serviceaccount/jenkins-agent created
rolebinding.rbac.authorization.k8s.io/jenkins-agent-binding created
secret/jenkins-agent-token created# 获取 Secret Token 并解码
[root@control-plane jenkins]# kubectl get secret jenkins-agent-token -o jsonpath="{.data.token}" | base64 --decode
在 Jenkins Master 中配置凭证
路径:Jenkins / 系统管理 / Clouds / your-cloud-name / Configure / 凭据
关键点:Kind (类型) 选择 Secret text
,将上一步获取到的 Token 填进去
配置 Pod Template
可以在 Jenkins UI 进行配置,也可以以 configuration as code
内联
Container Template
dind
要在 Pod 中使用 Docker 运行时,挂载 /var/run/docker.sock
到容器内这种做法在大多数 Kubernetes 环境下是错误的,因为 Pod 没有直接访问宿主机资源的权限。
正确的做法是使用 sidecar 容器来提供 Docker Daemon:
- 使用 docker:dind 镜像
- 去掉默认填充的
运行命令
,不要覆盖镜像的ENTRYPOINT
指令的值 - 去掉默认填充的
命令参数
。如果要访问 insecure registry,可以在这里指定--insecure-registry=192.168.31.162:5000
- 高级 -> 勾选以最高权限运行
替代方案是使用像 Kaniko
这样的无特权构建工具。因为启用特权模式虽然解决了功能问题,但它也带来了巨大的安全风险。一个特权容器理论上可以访问和修改宿主机的任何资源,包括内核。这意味着如果容器被入侵,攻击者可以轻易地从容器内部逃逸到宿主机上。
如何在 Jenkinsfile 中使用 Pod Template?
使用 agent
section 的参数 label
指定预定义的 Pod Template 或者直接内联
参考:
- Kubernetes plugin for Jenkins
- Docker Pipeline plugin
一个 Jenkinsfile 示例,包括 3 个阶段,使用 Kubernetes Pod Agent
[root@control-plane ginexample]# cat dind.yaml
apiVersion: v1
kind: Pod
spec:containers:- name: dindimage: docker:dindimagePullPolicy: Alwaysargs:- "--insecure-registry=192.168.31.162:5000"securityContext:privileged: truepipeline {agent noneenvironment {REGISTRY = '192.168.31.162:5000'REPO = '<your-namespace>/<your-image>'}stages {stage('Build Image') {agent {kubernetes {yamlFile 'dind.yaml'}}steps {container('dind') {script {docker.withRegistry("http://${env.REGISTRY}") {docker.build(env.REPO).push(env.BUILD_TAG)}}}}}stage('Test') {agent {kubernetes {yaml '''apiVersion: v1kind: Podspec:containers:- name: goimage: golang:1.24-alpinecommand:- sleepargs:- 9999999'''}}steps {container('go') {sh 'go test $(go list ./... | grep -v /vendor/)'}}}stage('Deploy') {agent {kubernetes {yaml '''apiVersion: v1kind: Podspec:serviceAccountName: jenkins-agentcontainers:- name: kubectlimage: lachlanevenson/k8s-kubectlcommand:- sleepargs:- 9999999'''}}steps {container('kubectl') {sh '''sed -i "s|${REGISTRY}/${REPO}.*|${REGISTRY}/${REPO}:${BUILD_TAG}|" deployment.yamlkubectl apply -f deployment.yaml'''}}}}
}
TroubleShooting
TLS/SSL 证书验证
问题现象:
Error testing connection https://192.168.31.162:6443: java.io.IOException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
问题分析:当配置 Jenkins 连接到 Kubernetes API Server (https://192.168.31.162:6443) 时,Jenkins 会尝试验证 API Server 的 TLS 证书。这个错误意味着 Jenkins 的 Java 运行时环境(JRE)无法信任这个证书,因为对于 kubeadm 部署的集群来说,Kubernetes 使用的是自签名证书,而Jenkins 的 JRE 信任库中没有这个自签名证书。
解决方法:将 Kubernetes CA 证书导入 Jenkins JRE 的信任库
# 获取 Kubernetes CA 证书
[root@control-plane ~]# kubectl get configmap kube-root-ca.crt -o yaml
apiVersion: v1
data:ca.crt: |-----BEGIN CERTIFICATE-----hello worldjnSxDS5KuM7e-----END CERTIFICATE-----[root@control-plane jenkins]# cat /etc/kubernetes/pki/ca.crt # 其实就是这个文件# 将证书导入 Jenkins 容器
[root@control-plane jenkins]# docker compose cp /etc/kubernetes/pki/ca.crt jenkins:/tmp/
[root@control-plane jenkins]# docker compose exec -u 0 -it jenkins /bin/bash # 以 root 用户身份进入 Jenkins 容器
root@b9fc90fc8f86:/# keytool -import -trustcacerts -keystore /opt/java/openjdk/lib/security/cacerts -storepass changeit -file /tmp/ca.crt -alias kubernetes-ca
Trust this certificate? [no]: yes
Certificate was added to keystore
containers with unready status
问题现象:
[PodInfo] default/multi-branch-test-dev-38-3zhmr-llddx-lpfknContainer [go] terminated [Completed] No messagePod [Running][ContainersNotReady] containers with unready status: [go]
问题分析:go
这个容器(启动并马上)退出了。我使用的是 golang:1.24-alpine
镜像,由于没有指定 entrypoint
或 cmd
指令,容器启动就退出了。这在 Dockerfile 中作为初始镜像没有问题,但是想作为 Go 语言环境并进入容器执行 go 命令就会有问题。
解决方法:给镜像添加 entrypoint
和 args
containers:- name: goimage: golang:1.24-alpinecommand:- sleepargs:- 9999999
process apparently never started
问题现象:
process apparently never started in /home/jenkins/agent/workspace/multi-branch-test_dev@tmp/durable-bbfa57e2
(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
问题分析:使用 bitnami/kubectl
镜像的容器无法启动 shell 进程
解决方法:换一个包含 Shell 环境的镜像,比如 lachlanevenson/k8s-kubectl
在 Pod 中无法访问集群
问题现象:
Error from server (Forbidden):
error when retrieving current configuration of:
Resource: "apps/v1, Resource=deployments", GroupVersionKind: "apps/v1, Kind=Deployment"
Name: "ginexample-deployment", Namespace: "default"
from server for: "deployment.yaml": deployments.apps "ginexample-deployment" is forbidden:
User "system:serviceaccount:default:default" cannot get resource "deployments" in API group "apps" in the namespace "default"
问题分析:Jenkins Pod 在执行 kubectl 命令时,使用的身份是 system:serviceaccount:default:default
,这个身份没有足够的权限在 default 命名空间下获取和应用资源(我的 manifest 部署在 default namespace)。如果没有在 Jenkins Kubernetes 插件中明确配置 Service Account,它会默认使用运行它的 Pod 所绑定的 Service Account。在大多数 Kubernetes 集群中,这个默认的服务账号就是 default 命名空间下的 default Service Account。
解决方法:为 Pod 指定在 配置 Jenkins 与 Kubernetes 集群的连接
一节中创建的 Service Account
apiVersion: v1
kind: Pod
spec:serviceAccountName: jenkins-agent
相关文章:
Jenkins 容器和 Kubernetes Agent
Jenkins 容器和 Kubernetes Agent安装 Jenkins [root@control-plane jenkins]# cat compose.yaml services:jenkins:# Jenkins 2.516.2image: jenkins/jenkins:ltsports:- "8080:8080"# https://github.com/jenkinsci/docker/blob/master/README.md#connecting-agen…...
LGP7916 [CSP-S 2021] 交通规划 学习笔记
LGP7916 [CSP-S 2021] 交通规划 学习笔记 Luogu Link 前言仔细读了十遍题面,硬是一个字都没和交通规划扯上关系,很有可能是出题人编了一个故事,发现编不下去了。——\(\texttt{OMG-WC}\)。题意简述 有一个 \(n\times m\) 个点的网格图。对于这个网格图的最外侧,有些网格线会…...
详细介绍:【Kubernetes】常见面试题汇总(十四)
详细介绍:【Kubernetes】常见面试题汇总(十四)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace…...
萤火虫文旅年票、为何能成为撬动万亿文旅市场的利器
萤火虫文旅年票隶属于四川红色猎人信息技术有限公司、成立于2020年7月24日、致力于为B端企业用户和C端个人用户提供超高性价比的景区门票.用互联网OTA技术整合了全国7000多家景点、用自助餐模式搭建了四款产品:省级版景区门票、大区版景区门票、全国版景区门票、以及企业定制版…...
Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用牵牛老人 已于 2025-07-25 09:24:54 修改 阅读量645 收藏 10 点赞数 11 文章链接:https://blog.csdn.net/qianniulaoren/article/details/149138758一:USB摄像头开发基础与框架 1.1 QtMultimedia的优势与局限 跨平台兼…...
详细介绍:C++(静态函数)
详细介绍:C++(静态函数)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-siz…...
2025.9.15日软件工程学习日志
HBase科技成果管理系统设计与实现 今日设计一个基于HBase的科技成果信息填报系统。 系统分析与设计思路 前端需要实现科技成果信息填报表单,包含多种输入类型和验证 后端使用HBase作为数据库存储数据 需要实现数据的增删改查功能 成果编号需要按规则自动生成 HBase表设计: 表…...
RocketMQ快速实战及核心概念
RocketMQ学习笔记 一、MQ简介 MQ定义MQ:Message Queue,消息队列Message:消息,不同进程之间传递的数据Queue:队列,具有FIFO(先进先出)特性,用于缓存数据广义上,只要能实现消息跨进程传输及队列数据缓存,都可称为消息队列MQ的作用异步例子:快递员发快递,先放到菜鸟驿站…...
【南方科技大学主办】第五届电气工程与机电一体化手艺国际学术会议(ICEEMT 2025)
【南方科技大学主办】第五届电气工程与机电一体化手艺国际学术会议(ICEEMT 2025)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…...
为什么不建议在 Docker 中跑 MySQL?
前言 今天我们来聊聊一个很有趣的话题:为什么我不建议在Docker中运行MySQL数据库? 有些小伙伴在工作中可能为了部署方便,习惯将所有组件都容器化,但数据库真的适合放在容器里吗? 今天就专门跟大家一起聊聊这个话题,希望对你会有所帮助。 一、容器化与数据库:天生的矛盾?…...
reLeetCode 热题 100-1 指针283. 移动零 - MKT
reLeetCode 热题 100-1 指针283. 移动零 class Solution { public:void moveZeroes(vector<int>& nums) {// int cout_=0;// for(int i =0; i<nums.size();i++){// if(nums[i]==0){// cout_++;// }// }// std::cout<< " 0s all …...
解决c# DocX生成的word文档wps打开排版外边距错乱微软office正常问题
public void insertBreak(DocX document, String filename) { DocX tempDocx = DocX.Create(filename); setPageMargin(tempDocx); document.InsertDocument(tempDocx);document.InsertSectionPageBreak(true); }改为public vo…...
The 2025 ICPC Asia East Continent Online Contest (II)
The 2025 ICPC Asia East Continent Online Contest (II)比赛链接 Review 这场非常有参与感哈哈,因为我签到题 C 贪心写了两小时,中间下机若干次让队友过题,写完已经完全不知道队友进度是啥了,后续就当小黄鸭被带飞了哈哈。 Solution C. Jiaxun! 那我确实需要 jiaxun 额额贪…...
工厂方法模式(Factory Method) - 指南
工厂方法模式(Factory Method) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importa…...
拾忆录
████,也即言多██,就是少点██,不容易发生██——来自于多种████的通理 择一███,遇一人██——收集自███,████ 知行合一心学理论——王阳明...
从零搭建RAG应用:跳过LangChain,掌握文本分块、向量检索、指代消解等核心技术实现
RAG(检索增强生成)本质上就是给AI模型外挂一个知识库。平常用ChatGPT只能基于训练数据回答问题,但RAG可以让它查阅你的专有文档——不管是内部报告、技术文档还是业务资料,都能成为AI的参考资源。 很多人第一反应是用LangChain或LlamaIndex这些现成框架,确实能快速搭起来。…...
python高阶技巧
闭包:在函数嵌套前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数叫做闭包 简单闭包: def outer(logo): def inner(msg): print(f"<{logo}>{msg}>{logo}") return inner fn1=outer("黑马程…...
机器视觉之图像处理篇 - 指南
机器视觉之图像处理篇 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-s…...
尝试hikari和jdbctemplate
试着基于jdbctemplate包装一个MysqlHelper类。连接池采用springboot默认的hikari。jdbctemplate提供基本的防注入,它的写法比jdbc好看,jdbc还需要putint,putstr。提供的另一个功能是结果集的转换。写完,测试代码的面貌如下:var sqlhp = new SqlHelper();sqlhp.configAddress…...
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据
要在Nginx中根据IP地址进行流量限制并返回JSON格式数据,你需要结合Nginx的 ngx_http_limit_req_module模块和一些配置技巧。这个模块允许你基于定义的键值,比如IP地址,限制请求的速率。不过在进入细节前,别忘了备份你的Nginx配置文件 划重点:配置透视战斗护甲 (limit_req_…...
回归
最近因为████导致██发生████,长期的██也不是办法,我决定以███████发文。 我的很多比如███,███都发生了██,所以██的██████视█。 重新██...
CSS纯文本渐变动效
创建一个令人印象深刻的CSS文本渐变动效就像是在文字上施展魔法。想象你的文字就像是一幅幻灯片,色彩在背后流转,让每个字母都像是被彩虹绘制过一样。 为了让这种魔法发生,你需要进入CSS的巫术领地。我们将把渐变动效的制作分解为简单步骤,这样即使你不是CSS的大师,也能轻…...
泛微流程共享
第一步: 第二步:打开合同审批数据,点击右键,选择共享。 第三步:共享权限的查看,可见Giada没有查看权限。 第四步:添加权限,依次进入下面的选项。...
MySQL报错:未知系统变量tx_isolation及隔离级别查询
MySQL在其各个版本中进行了诸多变更和优化,包括系统变量、参数命名、功能等方面的调整。在这个情况中,遇到“未知系统变量tx_isolation”这个错误是因为在MySQL 8.0及以后的版本中,系统变量 tx_isolation已经被重命名为 transaction_isolation。 如果你像老朋友一样寻找 tx_…...
Redssion
1.使用 // 设置锁定资源名称 RLock disLock = redissonClient.getLock("DISLOCK"); //尝试获取分布式锁 boolean isLock= disLock.tryLock(500, 15000, TimeUnit.MILLISECONDS); if (isLock) {try {//TODO if get lock success, do something;Thread.sleep(15000);} …...
if __name__ == __main__:
if __name__ == "__main__": 是 Python 中的一个标准代码块,用于检查一个脚本是否是直接运行的。 工作原理 当一个 Python 脚本被解释器执行时,它会自动定义一些特殊变量。其中一个就是 __name__。如果脚本是直接运行的,Python 会将 __name__ 变量的值设置为 &quo…...
提升系统可靠性:Air8000多串口硬件设计的黄金法则
串口通信的可靠性直接影响工业系统的连续性。Air8000以多串口工业级连接力赋能设备互联,而硬件设计则是其可靠性的根基。总结黄金法则,从信号隔离、阻抗匹配到热设计,全方位保障串口通信的稳定性与安全性。 本文主要从硬件设计的角度,分享串口设计中的一些关键注意点,软件…...
20250915笔记
svn 版本控制工具 一、svn介绍 二、svn安装 1、下载客户端和服务端 安装流程: (1)先安装服务端 (2)在服务端创建仓库 (3)新建用户,新建用户组 (4)设置权限,服务端安装成功 (5)安装客户端(也叫小乌龟) (6)安装桌面右键连接仓库 (7)输入账号和密码 (8)连接…...
enumerate函数
enumerate() 是 Python 中一个非常实用的内置函数,它用于在遍历一个可迭代对象(如列表、元组、字符串等)的同时,获取每个元素的索引和值。 为什么需要 enumerate()? 在没有 enumerate() 之前,如果你想同时获取索引和值,通常需要手动维护一个计数器: fruits = [apple, b…...
2025国内 HR SaaS 竞争格局:易路以AI深度融合引领行业转型
在中国企业数智化转型的浪潮中,HR SaaS 市场正经历从基础数字化向智能协同的关键跃迁。随着全球化布局与本地化合规要求的双重驱动,中大型企业对人力资源管理系统的需求已从单一模块效率提升转向全流程智能协同与全球合规管理。截至 2025 年,中国 HR SaaS 市场规模已突破 30…...
HyperWorks许可激活
在工程项目中,高效的软件工具是成功的关键。而一个顺畅的许可激活流程,则是确保这些工具能够迅速投入使用的重要环节。HyperWorks,作为一款领先的工程仿真软件,以其快速、简便的许可激活流程,为用户提供了卓越的使用体验。 一、一键激活,轻松上手 HyperWorks的许可激活流…...
f-string用法
在 Python 3.6 及更高版本中,在字符串前加上一个 f,表示这是一个 f-string(格式化字符串字面量)。 f-string 的主要作用是让你在字符串中嵌入 Python 表达式,使得格式化字符串变得非常简洁和直观。 f-string 的基本用法 你只需要在字符串开头加上 f,然后在字符串内部用花…...
OpenStack Nova instance 常见操作
1. 启动实例(start) 场景:启动处于 SHUTOFF 状态的实例 源码路径:API 层:nova/compute/api.py → start() RPC 层:nova/compute/rpcapi.py → start_instance() 执行层:nova/compute/manager.py → start_instance() 驱动层:nova/virt/libvirt/driver.py → power_on()…...
libdpi.dll libdatareport.dll libdash_plugin.dll libcurl-x86.dll libcurl-x64.dll libcurl_x64.dll - 指南
libdpi.dll libdatareport.dll libdash_plugin.dll libcurl-x86.dll libcurl-x64.dll libcurl_x64.dll - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…...
理解 Kubernetes CSI
关于 Kubernetes CSI,现在的资料已经不少,但我仍希望有一篇文档能让人轻松但不失准确地理解 CSI。 本文不涉及代码分析和详细设计。但需要如下基础:会使用至少一种容器,Docker,containerd,Kata 之类的都可以。 protobuf 和 gRPC:会用并有少量的开发经验,会用某种语言(…...
9.15
开学...
常用数学定理公式
二项式定理 \[(x + y)^n = \sum_{k=0}^n \binom{n}{k} x^{n-k} y^k \]...
线性规划
线性规划是求一个线性函数在满足一组线性等式或不等式方程条件下极值的一类数学问题的统称。要求目标函数和约束方程必须是线性函数。隐含了如下假定: 比例性假定:决策变量的变化与资源消耗成比例; 可加性假定:每个决策变量的影响独立于其他变量; 连续性假定:决…...
伪代码学习总结
伪代码学习总结 1. 什么是伪代码伪代码(Pseudocode) 是一种 算法描述语言。它既不同于自然语言(太模糊),也不是某种具体编程语言(太依赖语法)。使用伪代码的目的:使被描述的算法可以容易地翻译成任何一种编程语言(如 Pascal, C, Java, Python 等); 要求 结构清晰、可…...
20号胶 2511
...
9.13linux系统命令
Linux2系统命令 1、df 查看磁盘使用情况 (1)df 查看磁盘使用情况 Filesystem:代表该文件系统时哪个分区,所以列出的是设备名称。 1K-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变单位大小,也可以用-B来设置。 Used:已经使用的空间大小。Available:剩余的空间…...
9.15 svn git
svn版本控制工具 一、svn介绍 SVN是subversion的简称 是一个开放源代码的版本控制系统,通过采用分支管理系统的高 效管理,简而言之就是用于多个人共同开发同一个项目,实现共 享资源,实现最终集中式的管理。 SVN的作用:在项目组当中对需求规格说明书、测试用例、产品 说明书…...
PVC2601
...
利用RabbitMQ与Redis实现消息的延迟传递的策略
RabbitMQ:时间控的快递中心 让我们从RabbitMQ开始,RabbitMQ拥有一个叫做“Dead Letter Exchanges”(DLX)的机制,这个机制基本上就是一个失物招领处。当一个消息未能及时被送达,RabbitMQ会将它转移至DLX。这个DLX与一个或多个队列关联,这样就能处理这些失去方向的消息了。…...
python 按excel的经纬度提取对应栅格tif文件的数值
栅格文件 批量处理代码:# -*- coding:utf-8 -*- """ @author: suyue @file: extract_stations_from_excel.py @time: 2025/09/09 @desc: 从Excel读取站点信息并提取所有站点的CTT值 """ import rasterio import numpy as np import pandas as p…...
麒麟
麒麟点击跳转...
实现我的第一个本地文档问答机器人
本地文档问答机器人 下面是一个完整的本地文档问答机器人实现,涵盖了阶段三的所有核心概念:文档加载、文本分割、向量存储和检索增强生成(RAG)。 完整代码实现 import os.path from typing import Listfrom huggingface_hub import snapshot_download from langchain.chain…...
17、逻辑回归与分类评估 - 从连续到离散的智能判断 - 教程
17、逻辑回归与分类评估 - 从连续到离散的智能判断 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", m…...
关于32位单片机使用lwip无法访问(ping)外网,只能与同网段设备进行通信的问题解决
核心问题:MAC地址 理论依据:MAC地址是有相应的规范的MAC地址中,前3字节为组织唯一标识符,后24位由厂家自行定义。也就是说前3字节是有规定的,其中前3字节MAC中的前几位也是有着对应的含义的。MAC地址详细的介绍,大家可以在网上搜得到 出现这个问题的核心就是网关对设备mac地…...
044-WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式
044-WEB攻防-PHP应用&SQL盲注&布尔回显&延时判断&报错处理&增删改查方式 1.演示案例:➢PHP-MYSQL-SQL操作-增删改查 ➢PHP-MYSQL-注入函数-布尔&报错&延迟 ➢PHP-MYSQL-注入条件-数据回显&错误处理 ➢PHP-MYSQL-CMS案例-插入报错&删除延迟…...