本文有助于你深度了解 WordPress 主题和插件的 PHP 加载顺序,学习 Hook(钩子)Action(动作钩子) Filters(过滤钩子)的概念,弄懂 WordPress 重要函数:do_action、add_action、apply_filters 和 add_filter。
钩子是编程里一个常见概念,非常的重要。它使得系统变得非常容易拓展,(而不用理解其内部的实现机理,这样可以减少很多工作量)。 可以理解为当一个玻璃球从空中落下,即将砸到人的时候,有个事件会提前发生.例如告诉那个被砸的人,球已经在下落过程中, 告诉就是一个事件,一个钩子,我们可以针对不同的人做出不同的相应,如果是男人我们告诉他这个球砸到人不疼,如果是女人则告诉她很疼;
0x01 背景 团队大佬在做PHP代码审计的时候发现PHP代码是被混淆过的。虽然可以通过自己手动解密可以还原原先的PHP代码,但是混淆过程比较复杂且自己写脚本还原非常麻烦。所以,我这边通过PHP底层的操作对混淆后的PHP代码进行还原。 0x02 PHP代码混淆原理 PHP代码混淆一般来说有两种方法: 需要PHP扩展 无需PHP扩展 本文我们主要讲解无需PHP扩展的代码混淆的解密。大多数的无需扩展的php代码混淆原理上都是使用eval进行代码的执行。如果我们能够得到eval函数的参数,即可获得解密后的代码
作为一个 y 版本发布,此次更新也包含了不兼容的修改以及许多的新功能,下面就来看一看都有哪些改动?
对"钩子"这个概念其实不熟悉,最近看到一个php框架中用到这种机制来扩展项目,所以大概来了解下。 所谓Hook机制,是从Windows编程中流行开的一种技术。其主要思想是提前在可能增加功能的地方埋好(预设)一个钩子,这个钩子并没有实际的意义,当我们需要重新修改或者增加这个地方的逻辑的时候,把扩展的类或者方法挂载到这个点即可。
团队大佬在做PHP代码审计的时候发现PHP代码是被混淆过的。虽然可以通过自己手动解密可以还原原先的PHP代码,但是混淆过程比较复杂且自己写脚本还原非常麻烦。所以,我这边通过PHP底层的操作对混淆后的PHP代码进行还原。
在协程相关的内容中,最后我们要讲的就是这个一键协程化的功能。这玩意又是什么意思呢?我们先看下面的例子。
在你的站点目录建立一个目录hook,我这里站点目录为:/home/www/web/,所有hook文件路径为:/home/www/web/hook,在hook目录新建index.php文件
本文实例讲述了PHP设计模式之模板方法模式定义与用法。分享给大家供大家参考,具体如下:
LD_PRELOAD 是 Linux 系统中的一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。如果你是个 Web 狗,你肯定知道 LD_PRELOAD,并且网上关于 LD_PRELOAD 的文章基本都是绕过 disable_functions,都快被写烂了。
sudo nohup php7.2 think queue:work --daemon --queue createAdminLogQueue --tries 2 > out.file 2>&1 &
插件,亦即Plug-in,是指一类特定的功能模块(通常由第三方开发者实现),它的特点是:当你需要它的时候激活它,不需要它的时候禁用/删除它;且无 论是激活还是禁用都不影响系统核心模块的运行,也就是说插件是一种非侵入式的模块化设计,实现了核心程序与插件程序的松散耦合。一个典型的例子就是 WordPress中众多的第三方插件,比如Akimet插件用于对用户的评论进行Spam过滤。
目前我们正在对ShadowBrokers公开的利用工具以及脚本等进行了全方位的分析和分类工作,所以写一篇关于Linux下“envisioncollision”漏洞利用的简单介绍是非常值得的。我们之前已经对所公开文件中的PHPBB漏洞进行披露,当时的文章中提到这个漏洞非常受网络犯罪组织的欢迎,因为很多web论坛都存在“有效”的SIGINT目标,所以接下来披露另一个web论坛漏洞合情合理。 基本介绍 对于“envisioncollision”,我们不仅发现了工具本身,还发现了一个用户手册 - “user.too
随着Web应用攻击手段变得复杂,基于请求特征的防护手段,已经不能满足企业安全防护需求。在2012年的时候,Gartner引入了“Runtime application self-protection”一词,简称为RASP,属于一种新型应用安全保护技术,它将防护功能“ 注入”到应用程序中,与应用程序融为一体,使应用程序具备自我防护能力,当应用程序遭受到实际攻击伤害时,能实时检测和阻断安全攻击,而不需要进行人工干预。
WordPress插件开发手册:https://developer.wordpress.org/plugins/
在 Swoole 官网增加了 在线运行 的按钮,可以直接运行首页提供的一些示例代码,当然也可以手动输出一些 PHP 代码进行测试。
hook的配置文件在tp的应用目录的tags.php文件; 在框架初始化过程会引入该文件中的配置;
每次打开后台,WordPress会启动更新检测和自动更新功能,检查程序、主题和插件是否有新版本,但国内一直无法顺畅的连接 WordPress 更新服务器,可能这就是经常有人说WordPress慢的原因了,这个锅不在WordPress。
目录简述(脱壳前学习的知识、壳的历史、脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述Apk文件结构Dex文件结构壳史壳的识别Apk文件结构
Hyperf 1.1.0 更新内容比较多,但总的来说框架越来越完善。这次更新新增了 Validation 验证器 基于 Laravel,同时增加了大量的单侧。
类似于 go 语言的 chan,Channel 可为多生产者协程和多消费者协程模式提供支持。底层自动实现了协程的切换和调度。 Channel 与 PHP 的数组类似,仅占用内存,没有其他额外的资源申请,所有操作均为内存操作,无 I/O 消耗,使用方法与 SplQueue 队列类似。 Channel 主要用于协程间通讯,当我们希望从一个协程里返回一些数据到另一个协程时,就可通过 Channel 来进行传递。
首先来看两张图,默认回帖样式和优化后的回帖样式; 图一XiunoBBS默认样式; image.png 图二优化后的样式; image.png 是不是好看多了,下面附件分享已修改过的文件,也可自行修改自己喜欢的样式,找到文件:/view/htm/thread_list.inc.htm 修改即可; 05骑士 CMS 远程代码执行分析续师傅前些天跟我说骑士 CMS 更新了一个补丁,assign_resume_tpl 这个全局函数出现了问题,让我分析看看能不能利用,我看了下官网公告:03Swoole 一键协程化设置 flags 的问题从 Swoole4 版本开始,提供了一键协程化的功能,采用 Hook 原生 PHP 函数的方式实现协程客户端,通过一行代码就可以让原来的同步 IO 的代码变成可以协程调度的异步 IO,即一键协程化。03WordPress插件开发教程一:创建、停用、删除插件在wp-content/plugins创建一个文件夹,命名最好加前缀,WordPress官方现在应该收录了有五万多的插件,所以要起一个特殊的名称,防止插件和别人重名02PHP & Git 最简单的自动部署最近比较喜欢用bitbucket,因为要用私有库又不舍得交钱给Github只能这样了,虽然自己也用gitolite搭了git server,但是毕竟仅仅是一个git server。03Swoole 4.4:支持 CURL 协程化在4.4之前的版本中,Swoole一直不支持CURL协程化,在代码中无法使用curl。由于curl使用了libcurl库实现,无法直接hook它的socket,4.4版本使用Swoole\Coroutine\Http\Client模拟实现了curl的API,并在底层替换了curl_init等函数的C Handler。01如何在WordPress中禁用更新通知您是否为不需要任何更新的客户创建WordPress网站?然后,您可能希望在WordPress中禁用更新通知。更新通知对客户端来说有点吓人,因此删除它是一个更好的主意。03PHP函数unserialize()漏洞浅析简单提一下,PHP的unserialize()函数采用一个字符串并将其转换回PHP对象。02Thinkphp5框架简单实现钩子(Hook)行为的方法示例本文实例讲述了Thinkphp5框架简单实现钩子(Hook)行为的方法。分享给大家供大家参考,具体如下:032022最新wordpress禁止程序插件主题自动检测更新的代码汇总2022最新Wordpress禁止程序插件主题自动检测更新的代码汇总使用wordpress会感觉到后台比较慢,主要原因是wordpress会自动远程连接官网来检测程序、插件、主题是否存在新版本,由于我们这边访问wordpress网站很慢,所以检测更新的远程连接一直在尝试连接,这就导致使用后台的感觉很卡。解决这个问题的方法是禁止wordpress程序、插件、主题的更新检测以及自动更新。02Swoole 4.4 正式版已发布向下不兼容改动 和 PHP 官方保持一致, 不再支持 PHP7.0 (@matyhtf) 移除 Serialize 模块, 在单独的 ext-serialize 扩展中维护. 废弃原因: 由于 PHP 内核频繁变更, 导致无法实现稳定可用的模块, 与 php serialize 相比没有太大差异化定位 移除 PostgreSQL 模块,在单独的 ext-postgresql 扩展中维护. 废弃原因: PostgreSQL 使用了异步回调方式实现协程调度, 不符合目前内核协程化的统一规划。另外 Postgre02XDCTF2015代码审计全解WEB2是一个大题,一共4个flag,分别代表:获取源码、拿下前台管理、拿下后台、getshell。01为啥会内存泄漏?一个免费的检测工具来了首先,传统的跑在 FPM 下的 PHP 代码是没有“内存泄漏”一说的,所谓的内存泄漏就是忘记释放内存,导致进程占用的物理内存(附1)持续增长,得益于 PHP 的短生命周期,PHP 内核有一个关键函数叫做php_request_shutdown此函数会在请求结束后,把请求期间申请的所有内存都释放掉,这从根本上杜绝了内存泄漏,极大的提高了 PHPer 的开发效率,同时也会导致性能的下降,例如单例对象,没必要每次请求都重新申请释放这个单例对象的内存。(这也是Swoole等cli方案的优势之一,因为 cli 请求结束不会清理内存)。04关闭WordPress自动更新和后台更新检查的代码,管理员后台界面修改在使用的主题 functions.php 文件添加如下代码就可以关闭 WordPress 自动更新和后台更新检查00thinkphp5.1 框架钩子和行为用法实例分析本文实例讲述了thinkphp5.1 框架钩子和行为用法。分享给大家供大家参考,具体如下:02Widgetize 侧边栏的登录窗口前面介绍了如何在侧边拦设置登录窗口,其中 Brezeck 由于使用 Widget 不好使用这个插件,于是今天去查了下怎么写 Widget 插件(可能需要代理才能访问),花了1个小时写了这个 Widget 插件,由于时间仓促,可能存在些错误,如果你发现,请向我 report 下。05WordPress插件设计如果是Php开发的同学,或者对博客和CMS有一定了解的同学都知道这个,以下是百度的解释:03WordPress 定时作业监控管理插件:WP-CrontrolWordPress 一个非常的强大的特性就是可以安排定时作业,这个功能就是 WP_Cron 。但是对于普通用户来说这个功能显得很神秘,不知道自己的后台有哪些定时作业在跑,如果不懂编程,添加一个定时作业也是非常难的,毕竟操作 WP_Cron 的 API 是比较繁杂的。所以一个能对定时作业进行监控和管理的插件是很有必要的。01正确使用 template_redirect 和 template_includetemplate_redirect 是非常常用的一个 WordPress 接口,当然运行的时候,WordPress 已经运行了主循环,所有的对象都已经被实例化了,但是还没有把结果输出到浏览器。这是最后一个 hook 可以将用户导向其他的地方了,当然也是需要所有查询对象都实例化之后重定向的最好地方。但是这个 hook 最好不要用于加载一个其他模板文件。03使用 Webhooks 将 Linux 服务器上的项目自动部署到 GitHub我们的项目一般都会托管在类似 Github 和 Coding 之类的平台上,当项目部署在服务器上之后,如果发现需要更改一处地方,需要在本地更改之后提交到 Github,然后再登录服务器拉取 Github 上的代码,可以说操作非常麻烦了,我们可以使用 Github 上的 Webhooks 实现本地提交之后服务器上自动更新。03Plugin Hook 设计与实现Plugin 跟 Hook 有什么区别,我的理解是编译语言更多使用 Plugin 一词,而动态语言更喜欢使用 Hook 一次。它们的功能都是扩展当前应用软件的功能。改变软件内部的运行逻辑。Plugin 对于编译语言是非常重要的,而动态语言显得不那么重要,因为动态语言出现是为了互补编译语言本身存在缺陷而设计的。 本文接选自《Netkiller Architect 手札》 作者:netkiller 出处:http://www.netkiller.cn/architect/index.html 14.6. Pl07漏洞预警:知名WordPress主题Pagelines和Platform存在高危漏洞使用Pagelines和Platform主题的WordPress用户注意了,请尽快更新主题的版本。我们在一次对WAF例行审计时,偶然发现了两个严重漏洞:一个权限提升漏洞(影响Pagelines和Platform),以及一个远程代码执行漏洞(影响Platform)。 漏洞简介 某个WordPress网站如果使用了Platform主题(版本号小于1.4.4),黑客就可以轻易取得该网站的权限。 黑客可以利用恶意软件、SEO垃圾邮件以及其他方式,执行PHP代码来感染你的网站。在使用了主题Pagelines(版本号05LD_PRELOAD 后门 | bypass disable_functions动态链接库加载过程中会先加载 LD_PRELOAD 指向的变量,这样我们可以利用这个先加载来进行劫持正常的函数和命令04php中钩子(hook)的原理与简单应用demo示例本文实例讲述了php中钩子(hook)的原理与简单应用。分享给大家供大家参考,具体如下:02PHP钩子实现方法解析钩子是编程里一个常见的概念,非常的重要。它使得系统变得非常容易拓展(而不用理解其内部的实现机理,这样可以减少很多工作量)。只要有一个钩子样本,能很容易仿照第一个钩子快速的编写第二个钩子,这里对钩子进行一个简单的理解。03CGI & FastCGI最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我接收你的处 理结果给客户端。那这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,根本不是什么语言。下面图可以看到流程03CGI与FastCGI最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我接收你的处 理结果给客户端。那这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,根本不是什么语言。下面图可以看到流程02apache rewritecond_hfile数据格式中的data字段用于RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。01
续师傅前些天跟我说骑士 CMS 更新了一个补丁,assign_resume_tpl 这个全局函数出现了问题,让我分析看看能不能利用,我看了下官网公告:
从 Swoole4 版本开始,提供了一键协程化的功能,采用 Hook 原生 PHP 函数的方式实现协程客户端,通过一行代码就可以让原来的同步 IO 的代码变成可以协程调度的异步 IO,即一键协程化。
在wp-content/plugins创建一个文件夹,命名最好加前缀,WordPress官方现在应该收录了有五万多的插件,所以要起一个特殊的名称,防止插件和别人重名
最近比较喜欢用bitbucket,因为要用私有库又不舍得交钱给Github只能这样了,虽然自己也用gitolite搭了git server,但是毕竟仅仅是一个git server。
在4.4之前的版本中,Swoole一直不支持CURL协程化,在代码中无法使用curl。由于curl使用了libcurl库实现,无法直接hook它的socket,4.4版本使用Swoole\Coroutine\Http\Client模拟实现了curl的API,并在底层替换了curl_init等函数的C Handler。
您是否为不需要任何更新的客户创建WordPress网站?然后,您可能希望在WordPress中禁用更新通知。更新通知对客户端来说有点吓人,因此删除它是一个更好的主意。
简单提一下,PHP的unserialize()函数采用一个字符串并将其转换回PHP对象。
本文实例讲述了Thinkphp5框架简单实现钩子(Hook)行为的方法。分享给大家供大家参考,具体如下:
2022最新Wordpress禁止程序插件主题自动检测更新的代码汇总使用wordpress会感觉到后台比较慢,主要原因是wordpress会自动远程连接官网来检测程序、插件、主题是否存在新版本,由于我们这边访问wordpress网站很慢,所以检测更新的远程连接一直在尝试连接,这就导致使用后台的感觉很卡。解决这个问题的方法是禁止wordpress程序、插件、主题的更新检测以及自动更新。
向下不兼容改动 和 PHP 官方保持一致, 不再支持 PHP7.0 (@matyhtf) 移除 Serialize 模块, 在单独的 ext-serialize 扩展中维护. 废弃原因: 由于 PHP 内核频繁变更, 导致无法实现稳定可用的模块, 与 php serialize 相比没有太大差异化定位 移除 PostgreSQL 模块,在单独的 ext-postgresql 扩展中维护. 废弃原因: PostgreSQL 使用了异步回调方式实现协程调度, 不符合目前内核协程化的统一规划。另外 Postgre
WEB2是一个大题,一共4个flag,分别代表:获取源码、拿下前台管理、拿下后台、getshell。
首先,传统的跑在 FPM 下的 PHP 代码是没有“内存泄漏”一说的,所谓的内存泄漏就是忘记释放内存,导致进程占用的物理内存(附1)持续增长,得益于 PHP 的短生命周期,PHP 内核有一个关键函数叫做php_request_shutdown此函数会在请求结束后,把请求期间申请的所有内存都释放掉,这从根本上杜绝了内存泄漏,极大的提高了 PHPer 的开发效率,同时也会导致性能的下降,例如单例对象,没必要每次请求都重新申请释放这个单例对象的内存。(这也是Swoole等cli方案的优势之一,因为 cli 请求结束不会清理内存)。
在使用的主题 functions.php 文件添加如下代码就可以关闭 WordPress 自动更新和后台更新检查
本文实例讲述了thinkphp5.1 框架钩子和行为用法。分享给大家供大家参考,具体如下:
前面介绍了如何在侧边拦设置登录窗口,其中 Brezeck 由于使用 Widget 不好使用这个插件,于是今天去查了下怎么写 Widget 插件(可能需要代理才能访问),花了1个小时写了这个 Widget 插件,由于时间仓促,可能存在些错误,如果你发现,请向我 report 下。
如果是Php开发的同学,或者对博客和CMS有一定了解的同学都知道这个,以下是百度的解释:
WordPress 一个非常的强大的特性就是可以安排定时作业,这个功能就是 WP_Cron 。但是对于普通用户来说这个功能显得很神秘,不知道自己的后台有哪些定时作业在跑,如果不懂编程,添加一个定时作业也是非常难的,毕竟操作 WP_Cron 的 API 是比较繁杂的。所以一个能对定时作业进行监控和管理的插件是很有必要的。
template_redirect 是非常常用的一个 WordPress 接口,当然运行的时候,WordPress 已经运行了主循环,所有的对象都已经被实例化了,但是还没有把结果输出到浏览器。这是最后一个 hook 可以将用户导向其他的地方了,当然也是需要所有查询对象都实例化之后重定向的最好地方。但是这个 hook 最好不要用于加载一个其他模板文件。
我们的项目一般都会托管在类似 Github 和 Coding 之类的平台上,当项目部署在服务器上之后,如果发现需要更改一处地方,需要在本地更改之后提交到 Github,然后再登录服务器拉取 Github 上的代码,可以说操作非常麻烦了,我们可以使用 Github 上的 Webhooks 实现本地提交之后服务器上自动更新。
Plugin 跟 Hook 有什么区别,我的理解是编译语言更多使用 Plugin 一词,而动态语言更喜欢使用 Hook 一次。它们的功能都是扩展当前应用软件的功能。改变软件内部的运行逻辑。Plugin 对于编译语言是非常重要的,而动态语言显得不那么重要,因为动态语言出现是为了互补编译语言本身存在缺陷而设计的。 本文接选自《Netkiller Architect 手札》 作者:netkiller 出处:http://www.netkiller.cn/architect/index.html 14.6. Pl
使用Pagelines和Platform主题的WordPress用户注意了,请尽快更新主题的版本。我们在一次对WAF例行审计时,偶然发现了两个严重漏洞:一个权限提升漏洞(影响Pagelines和Platform),以及一个远程代码执行漏洞(影响Platform)。 漏洞简介 某个WordPress网站如果使用了Platform主题(版本号小于1.4.4),黑客就可以轻易取得该网站的权限。 黑客可以利用恶意软件、SEO垃圾邮件以及其他方式,执行PHP代码来感染你的网站。在使用了主题Pagelines(版本号
动态链接库加载过程中会先加载 LD_PRELOAD 指向的变量,这样我们可以利用这个先加载来进行劫持正常的函数和命令
本文实例讲述了php中钩子(hook)的原理与简单应用。分享给大家供大家参考,具体如下:
钩子是编程里一个常见的概念,非常的重要。它使得系统变得非常容易拓展(而不用理解其内部的实现机理,这样可以减少很多工作量)。只要有一个钩子样本,能很容易仿照第一个钩子快速的编写第二个钩子,这里对钩子进行一个简单的理解。
最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我接收你的处 理结果给客户端。那这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,根本不是什么语言。下面图可以看到流程
RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。
领取专属 10元无门槛券
手把手带您无忧上云