临沭信息网

  • 0539-6999990 业务变更:本站整体出售!
  • 打造本地最大生活服务平台
搜索
猜你喜欢
查看: 578|回复: 0
打印 上一主题 下一主题

批量替换消除论坛被注入广告,两种方法MYsq技术

[复制链接]
跳转到指定楼层
楼主
发表于 2016-8-5 07:51:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
老方法:DZ论坛贴子被大量植入广告批量执行SQL删除的办法
          1、  首先打开服务器上\config\config_global.php这个文件
                 查找:$_config['admincp']['runquery'] = 0; 把值改成1
           2、 然后进入论坛后台,在 站长——数据库——升级
  1. UPDATE pre_forum_post SET message=REPLACE(message,'要删除的代码','替换后的内容或者直接留空删除');
复制代码




新方法:非正则表达式方式

进后台常规管理,突然看到回收站里有几千贴.....几千贴,啥情况?赶快查下后台,原来是贴子被其中一名管理员编辑了,这种情况应该是使用简单密码被暴力穷举了,想起之前几天才让他改了密码来,估计怕自己忘掉使用了比较简单的密码,打电话告知事件后把他的密码改成稍复杂一些的。

        贴子怎么办呢?第一反应就是使用正则表达式来解决,通过查询,把正则表达式写出来了才发现原来update居然不支持正则表达式,没办法,再百度吧。工夫不负有心人啊,终于给我查到类似的语句,下面详细给大家说说步骤供大家参考:

第零步:用编辑贴子功能取出被注入样品,注意这三行都有三个变量

  1. "[b][url] [img] [url=http://www.138073.com]www.138073.com[/url] [/img] [size=6][color=red]SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投め注任何游戏顶级信用め提现即时到账SO.CC[/color][/size] [/url][/b]"
  2. "[b][url] [img] [url=http://www.138193.com]www.138193.com[/url] [/img] [size=6][color=red]SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投╳注任何游戏顶级信用╳提现即时到账SO.CC[/color][/size] [/url][/b]"
  3. "[b][url] [img] [url=http://www.138206.com]www.138206.com[/url] [/img] [size=6][color=red]SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投ケ注任何游戏顶级信用ケ提现即时到账SO.CC[/color][/size] [/url][/b]"
复制代码


第一步:把前、中、后的确定字符串替换为易判断内容,中间变量留下,目的是减少字符好计算字符量。
使用 UPDATE pre_forum_post SET message=REPLACE(message,'要删除的代码','替换后的内容或者直接留空删除');
其中pre_forum_post是数据库的数据表名称,如果你的不是这个请改为自己的数据表

  1. UPDATE pre_forum_post SET message=REPLACE(message,'[b][url] [img] [url=http://www.]www.','wycfl'[/url]);
  2. UPDATE pre_forum_post SET message=REPLACE(message,'.com [/img] [size=6][color=red]SO娱乐城:真_人.足球.彩票齐全| 开户送10元.首存送58元.手机可投','wygcfl');
  3. UPDATE pre_forum_post SET message=REPLACE(message,'提现即时到账SO.CC[/color][/size] [/url][/b]','cwfczb');
复制代码



前面用"wycfl",中间用"wygcfl",后面用"cwfczb",这三个是随意取的不容易重复的词,语句变成:


  1. wycfl109&wygcfl&cwfczb
  2. wycfl206ケwygcflケcwfczb
  3. wycfl206ケwygcflケcwfczb
  4. wycfl9153wygcfl3cwfczb
  5. wycfl076┭wygcfl┭cwfczb
复制代码



第二步:
如果可以支持正则表达式的话,可以这样写来表示更改过后的内容:"^wycfl[0-9]{3}.wygcfl.cwfczb$"
可惜update貌似不能支持,只能取头取尾来判断字符了,注意前面个字符长度为5,所以有个“+5”的行为


  1. update pre_forum_post set message = replace(message, substring(message, locate('wycfl', message),locate('cwfczb', message)-locate('wycfl'+5, message)),'') where locate('wycfl', message)>1;
复制代码


至此,应该一切搞定!其实如果你能把字符数得很清楚的话,你根本不需要第一步,直接写第二步就可以了。
但实际上貌似还漏了一些,我也不知道为什么...只好再来一次:
  1. update pre_forum_post set message = replace(message, substring(message, locate('任何游戏顶级信用', message),locate('cwfczb', message)-locate('任何游戏顶级信用'+8, message)),'') where locate('任何游戏顶级信用', message)>1;
复制代码

影响了 60395 行。 ( 查询花费 29.9961 秒 )
还没弄完...晕,再来
  1. update pre_forum_post set message = replace(message, substring(message, locate('gcfl', message),locate('cwfczb', message)-locate('gcfl'+7, message)),'') where locate('cwfczb', message)>1;
复制代码

影响了 33379 行。 ( 查询花费 7.0126 秒 )
看了下,貌似这样差不多了,不知道后面两次是缓存没有清干净还是什么别的原因造成...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 !wechat_share!!wechat_share!
收藏收藏 转播转播 分享分享 分享淘帖
使用 高级模式(可批量传图、插入视频等)
您需要登录后才可以回帖 登录 | 立即注册

关闭

技术支持:临沂恒通信息技术上一条 /1 下一条

快速回复 返回顶部 返回列表