很多甲方会觉得,技术行业很赚钱,做一个网站、APP或者系统,可能
几天就完成了,为什么报价却不低?
其实技术赚钱,并不是简单的“写几行代码就收钱"。
技术真正赚钱的地方,在于解决问题的能力和项目背后的整体投入。
一个项目从开始到上线,并不是把页面做出来就结束了。前期需要分析需求、规划功能、设计数据库和系统架构,中间需要开发前端、后端、接口、管理后台,还需要不断测试、修改BUG、处理兼容性问题,最后还涉及服务器部署、域名、HTTPS、安全、维护以及后续功能升级。
甲方看到的可能只是最终的一个网站或者APP,但技术人员实际交付的
是一整套解决方案。
比如甲方提出一个需求,看起来只是"加一个功能",但技术需要考虑这个功能会不会影响原来的系统、数据怎么存、用户量大了服务器能不能承受、会不会出现安全问题、手机和电脑是否都能正常使用。
所以技术收费,并不是单纯按照代码数量"收费,而是按照技术难度,开发时间、解决问题的能力和项目承担的责任收费。
真正赚钱的技术项目,一般集中在几个方面:
第一,是定制开发。根据甲方的业务需求,从零开始搭建网站、APP、
小程序或者管理系统。
第二,是系统和平台。如果技术团队自己开发出成熟产品,可以服务多
个客户,后续收入空间会更大。
第三,是长期维护。项目上线以后并不是结束,还需要服务器维护、
BUG修复、安全更新和功能升级。
第四,也是最重要的,就是技术能够帮助甲方创造价值。如果一个系
统能够帮助企业减少人工、提高效率、获得更多客户,甚至直接产生收入,那么这个技术本身就具有商业价值。
所以技术行业确实可以赚钱,但不是因为“做技术的人随便写写代码就很赚钱",而是因为技术可以把复杂的问题变成系统,把人工操作变成自动
化,把一个想法真正落地成产品。
甲方购买的不是几段代码,而是一个能够正常运行、能够解决问
题、能够长期使用的产品和技术服务。
几天就完成了,为什么报价却不低?
其实技术赚钱,并不是简单的“写几行代码就收钱"。
技术真正赚钱的地方,在于解决问题的能力和项目背后的整体投入。
一个项目从开始到上线,并不是把页面做出来就结束了。前期需要分析需求、规划功能、设计数据库和系统架构,中间需要开发前端、后端、接口、管理后台,还需要不断测试、修改BUG、处理兼容性问题,最后还涉及服务器部署、域名、HTTPS、安全、维护以及后续功能升级。
甲方看到的可能只是最终的一个网站或者APP,但技术人员实际交付的
是一整套解决方案。
比如甲方提出一个需求,看起来只是"加一个功能",但技术需要考虑这个功能会不会影响原来的系统、数据怎么存、用户量大了服务器能不能承受、会不会出现安全问题、手机和电脑是否都能正常使用。
所以技术收费,并不是单纯按照代码数量"收费,而是按照技术难度,开发时间、解决问题的能力和项目承担的责任收费。
真正赚钱的技术项目,一般集中在几个方面:
第一,是定制开发。根据甲方的业务需求,从零开始搭建网站、APP、
小程序或者管理系统。
第二,是系统和平台。如果技术团队自己开发出成熟产品,可以服务多
个客户,后续收入空间会更大。
第三,是长期维护。项目上线以后并不是结束,还需要服务器维护、
BUG修复、安全更新和功能升级。
第四,也是最重要的,就是技术能够帮助甲方创造价值。如果一个系
统能够帮助企业减少人工、提高效率、获得更多客户,甚至直接产生收入,那么这个技术本身就具有商业价值。
所以技术行业确实可以赚钱,但不是因为“做技术的人随便写写代码就很赚钱",而是因为技术可以把复杂的问题变成系统,把人工操作变成自动
化,把一个想法真正落地成产品。
甲方购买的不是几段代码,而是一个能够正常运行、能够解决问
题、能够长期使用的产品和技术服务。
Media is too big
VIEW IN TELEGRAM
今天看到一个视频 通过telegram开源制作的定制版飞机
我觉得很有想法 这样别人编辑消息 双删 拉黑 信息记录都会保存
还可以把单个客户端软件登录账号数拉到 24个
有没有人有想法 我搞一个你们会用吗🤓🤓
我觉得很有想法 这样别人编辑消息 双删 拉黑 信息记录都会保存
还可以把单个客户端软件登录账号数拉到 24个
有没有人有想法 我搞一个你们会用吗🤓🤓
❤1👍1
PHP2Shell 为什么是近几年最危险的 PHP 漏洞
CVE-2026-109618 / CVE-2026-109619(合称 PHP2Shell,CVSS 9.2)的可怕之处不在分数,而在位置——它在 PHP 解释器的请求生命周期里,在你的框架、鉴权、WAF 应用层规则运行之前。你的代码零漏洞,照样被接管。
PHP worker 是常驻进程,一个 worker 顺序处理成千上万个请求。整个模型建立在一个假设上:每个请求结束时,状态会被完整清理。
打破它的是 OOM 处理。内存不足时,Zend 引擎用 longjmp()(zend_bailout)直接跳出当前执行流。它跳过了正在运行的 C 代码的回滚逻辑——而那些代码已经把“半成品状态”发布出去了。
以 109618 的已确认路径为例,_zend_hash_str_add_or_update_i 先执行 nNumUsed++ 把新 bucket 标记为“存活”,然后才分配 key 的内存。如果分配恰好触发 OOM 并 bailout,key 和 value 的初始化被跳过;请求关闭时,析构逻辑按计数遍历 HashTable,把未初始化的 bucket 当作合法 zval 去析构、释放其中的指针。
攻击者控制那块内存里残留什么,就等于控制了后续被释放/调用的指针。这是内存破坏原语,不是逻辑漏洞,没有“输入过滤”能救。
触发 OOM 也不需要超大请求:multipart 解析阶段,无 Content-Length 的流式 body、单 part 无限 header、不计入 max_file_uploads 的空文件字段,都能在默认限制内把内存顶爆。而 multipart 解析发生在请求启动期——在任何一行 PHP 业务代码执行之前。
109619:跨请求的 Use-After-Free
109619 是同一根因的另一个方向。序列化器、session upload progress、fatal error backtrace 的全局指针指向请求堆内存。它们本应由下一个请求的 RINIT 清零,但请求体的解析和 upload-progress 回调运行在模块 RINIT 之前。
于是:请求 A 因 OOM/致命错误 bailout,留下一个指向已释放堆的悬垂全局指针;请求 B 落到同一个 worker,在初始化重置它之前先踩中它。
session.upload_progress 默认开启,且不需要应用调用 session_start() 就会在上传解析时运行。也就是说,“我们站不用 session”不构成任何保护。
两洞可组合:一个负责塑形已释放内存的内容,一个负责让后续请求消费它,最终指向指令指针控制。
被低估的危害:先于 RCE 的内存泄露
很多人只盯着 RCE,但 109618 一条已确认路径是纯信息泄露:悬垂的 session ID 指针会使 PHP 把 worker 堆内存的内容编码进 PHPSESSID Cookie 直接回传。
worker 内存里有什么?同一进程刚处理过的其他请求的 session token、数据库连接密码、API 密钥、用户隐私数据。
这类泄露不写文件、不触发异常页面、业务无感知。在共享主机和多租户 FPM 环境下,它天然跨租户:你泄露的不一定只是你自己的数据。
RCE 之后:补丁救不了已发生的入侵
拿到 RCE = 拿到 Web worker 的执行权限。标准链条:读取 wp-config.php /.env → 数据库凭证 → 拖库;在可写目录或主题/插件文件中植入 webshell 持久化;电商场景植入支付页面盗刷脚本;再以服务器为跳板探测内网与云元数据服务。
这里有个关键认知差:升级 PHP 只关闭入口,不清理由此已植入的后门。如果在 10 月 17 日(蜜罐首次记录到利用尝试)到你打补丁之间已被打穿,“已升级”会给你虚假的安全感。正确顺序是:升级 + 重启全部 worker(不重启,旧代码还在内存里跑)+ 按可能已失陷处理:查异常 multipart 请求、HTTP 500 激增、异常 PHPSESSID、PHP 进程拉起 shell/下载行为,并轮换该机上的全部凭证。
诚实的限定条件
它不是一键通杀。CVSS 向量里攻击复杂度为 High:需要精确的堆塑形、需要污染与触发落在同一 worker,成功率随 SAPI、构建选项、池配置而变。mod_php 风险最高,默认配置下单请求、应用代码运行前即可 RCE,已获官方确认;PHP-FPM 上 109619 路径已验证,109618 的完整 FPM 利用尚未公开演示。
但“复杂度高”这次不等于“窗口期长”。本次发现方明确借助前沿 AI 模型完成了漏洞发现、利用开发与跨版本适配——过去把一个内存原语适配到不同 PHP 版本/内存布局需要数周,现在以小时计。补丁一经发布,diff 本身就会被反向用来定位漏洞点。攻防两边的时间常数同时被压缩,最终拼的是谁的资产清单和自动更新更快。
谁的风险被低估了
1)还在跑 PHP 7.4/8.0/8.1 的站:这些分支已 EOL,没有官方修复版,只有源码 backport,而 7.4 恰是现网最常见的分支之一;
2)共享主机/cPanel/Plesk 用户:你主站不是 PHP,不代表同机没有 phpMyAdmin、Roundcube 和邻居的 PHP 站点;
3)长驻型运行时(队列 worker、Octane/RoadRunner 等):升级了包却忘了重启的进程,等于没修;
4)把 WAF 当修复的团队:WAF 只能挡已知路径,官方定性很清楚——临时缓解不完整,升级是唯一安全选择。
修复版本:8.2.35 / 8.3.36 / 8.4.27 / 8.5.12。无法立即升级的,先在服务端配置(不是 ini_set)关闭 session.upload_progress、收紧 post_max_size,并把排查窗口拉到 10 月 17 日。
PHP2Shell 的教训不只属于 PHP:任何“常驻 worker + 非本地跳转跳过清理”的运行时,都该重新审视自己的 bailout 路径。内存安全债不会消失,它只会等到利用成本足够低的那一天被一次性兑现——而 AI 正在把那一天提前。
#PHP2Shell #CVE2026109618 #CVE2026109619 #信息安全
CVE-2026-109618 / CVE-2026-109619(合称 PHP2Shell,CVSS 9.2)的可怕之处不在分数,而在位置——它在 PHP 解释器的请求生命周期里,在你的框架、鉴权、WAF 应用层规则运行之前。你的代码零漏洞,照样被接管。
PHP worker 是常驻进程,一个 worker 顺序处理成千上万个请求。整个模型建立在一个假设上:每个请求结束时,状态会被完整清理。
打破它的是 OOM 处理。内存不足时,Zend 引擎用 longjmp()(zend_bailout)直接跳出当前执行流。它跳过了正在运行的 C 代码的回滚逻辑——而那些代码已经把“半成品状态”发布出去了。
以 109618 的已确认路径为例,_zend_hash_str_add_or_update_i 先执行 nNumUsed++ 把新 bucket 标记为“存活”,然后才分配 key 的内存。如果分配恰好触发 OOM 并 bailout,key 和 value 的初始化被跳过;请求关闭时,析构逻辑按计数遍历 HashTable,把未初始化的 bucket 当作合法 zval 去析构、释放其中的指针。
攻击者控制那块内存里残留什么,就等于控制了后续被释放/调用的指针。这是内存破坏原语,不是逻辑漏洞,没有“输入过滤”能救。
触发 OOM 也不需要超大请求:multipart 解析阶段,无 Content-Length 的流式 body、单 part 无限 header、不计入 max_file_uploads 的空文件字段,都能在默认限制内把内存顶爆。而 multipart 解析发生在请求启动期——在任何一行 PHP 业务代码执行之前。
109619:跨请求的 Use-After-Free
109619 是同一根因的另一个方向。序列化器、session upload progress、fatal error backtrace 的全局指针指向请求堆内存。它们本应由下一个请求的 RINIT 清零,但请求体的解析和 upload-progress 回调运行在模块 RINIT 之前。
于是:请求 A 因 OOM/致命错误 bailout,留下一个指向已释放堆的悬垂全局指针;请求 B 落到同一个 worker,在初始化重置它之前先踩中它。
session.upload_progress 默认开启,且不需要应用调用 session_start() 就会在上传解析时运行。也就是说,“我们站不用 session”不构成任何保护。
两洞可组合:一个负责塑形已释放内存的内容,一个负责让后续请求消费它,最终指向指令指针控制。
被低估的危害:先于 RCE 的内存泄露
很多人只盯着 RCE,但 109618 一条已确认路径是纯信息泄露:悬垂的 session ID 指针会使 PHP 把 worker 堆内存的内容编码进 PHPSESSID Cookie 直接回传。
worker 内存里有什么?同一进程刚处理过的其他请求的 session token、数据库连接密码、API 密钥、用户隐私数据。
这类泄露不写文件、不触发异常页面、业务无感知。在共享主机和多租户 FPM 环境下,它天然跨租户:你泄露的不一定只是你自己的数据。
RCE 之后:补丁救不了已发生的入侵
拿到 RCE = 拿到 Web worker 的执行权限。标准链条:读取 wp-config.php /.env → 数据库凭证 → 拖库;在可写目录或主题/插件文件中植入 webshell 持久化;电商场景植入支付页面盗刷脚本;再以服务器为跳板探测内网与云元数据服务。
这里有个关键认知差:升级 PHP 只关闭入口,不清理由此已植入的后门。如果在 10 月 17 日(蜜罐首次记录到利用尝试)到你打补丁之间已被打穿,“已升级”会给你虚假的安全感。正确顺序是:升级 + 重启全部 worker(不重启,旧代码还在内存里跑)+ 按可能已失陷处理:查异常 multipart 请求、HTTP 500 激增、异常 PHPSESSID、PHP 进程拉起 shell/下载行为,并轮换该机上的全部凭证。
诚实的限定条件
它不是一键通杀。CVSS 向量里攻击复杂度为 High:需要精确的堆塑形、需要污染与触发落在同一 worker,成功率随 SAPI、构建选项、池配置而变。mod_php 风险最高,默认配置下单请求、应用代码运行前即可 RCE,已获官方确认;PHP-FPM 上 109619 路径已验证,109618 的完整 FPM 利用尚未公开演示。
但“复杂度高”这次不等于“窗口期长”。本次发现方明确借助前沿 AI 模型完成了漏洞发现、利用开发与跨版本适配——过去把一个内存原语适配到不同 PHP 版本/内存布局需要数周,现在以小时计。补丁一经发布,diff 本身就会被反向用来定位漏洞点。攻防两边的时间常数同时被压缩,最终拼的是谁的资产清单和自动更新更快。
谁的风险被低估了
1)还在跑 PHP 7.4/8.0/8.1 的站:这些分支已 EOL,没有官方修复版,只有源码 backport,而 7.4 恰是现网最常见的分支之一;
2)共享主机/cPanel/Plesk 用户:你主站不是 PHP,不代表同机没有 phpMyAdmin、Roundcube 和邻居的 PHP 站点;
3)长驻型运行时(队列 worker、Octane/RoadRunner 等):升级了包却忘了重启的进程,等于没修;
4)把 WAF 当修复的团队:WAF 只能挡已知路径,官方定性很清楚——临时缓解不完整,升级是唯一安全选择。
修复版本:8.2.35 / 8.3.36 / 8.4.27 / 8.5.12。无法立即升级的,先在服务端配置(不是 ini_set)关闭 session.upload_progress、收紧 post_max_size,并把排查窗口拉到 10 月 17 日。
PHP2Shell 的教训不只属于 PHP:任何“常驻 worker + 非本地跳转跳过清理”的运行时,都该重新审视自己的 bailout 路径。内存安全债不会消失,它只会等到利用成本足够低的那一天被一次性兑现——而 AI 正在把那一天提前。
#PHP2Shell #CVE2026109618 #CVE2026109619 #信息安全