架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7107|回复: 0

[资料] 巧用触发器防止SQL注入数据库挂马

[复制链接]
发表于 2015-2-8 12:29:37 | 显示全部楼层 |阅读模式

被挂马的网站特征是网站文件并没有多出可疑文件,而且被挂马的网站基本都是asp+sqlserver的架构。从企业管理器打开数据库,可以看到数据库的表里字段字符型的字段都被加上了script木马。
  打开网站日志,可以看到代码是通过sql注入加上的。

  没办法,先通过查询分析器把脚本去掉,幸亏黑客挂马的还是比较规律,可以一次性清除,在查询分析器里把对数据库里各表的清除脚本写好,然后一次执行,好了,打开网站,世界清净了。下面给出清除脚本:

UPDATE 表名 set 字段名= REPLACE(字段名,黑客网址 ,)

   如果被感染字段是text的话,比较麻烦,要通过convert函数把text类型转化成varchar(8000)转化过程中,可能会丢失部分数据

   清除完毕,将清除sql脚本保存,是否万事大吉呢,过了两个小时,网站又被挂马了!

   只好又运行起查询分析器,把脚本运行,清除完毕。真是清的快,但是人总是要睡觉的,不能和黑客在那捉秘藏吧。

   突然想到这是sqlserver库啊,微软一定有解决办法的,我们不能阻止住它望数据库里挂木马,但是我们可以让它挂不成功。那就是用触发器!

   熟悉触发器的都知道,sql2000插入数据和修改数据其实都是先放在inserted临时表里,然后才实际去放到对应表里。阻击黑客的脚步就这个临时表里!

  黑客挂马的代码里都带有 这个字样,因为只有这样才能达到客户端打开网站的同时,打大黑客网站,那我们就从这里入手。

   下面给出触发器代码:



      

CREATE  trigger 触发器名

on 表名
for update,insert
as
declare @a varchar(100) --存储字段1

declare @b varchar(100) --存储字段2

declare @c varchar(100) --存储字段3

select @a=字段1,@b=字段2,@c=字段3 from inserted
if(@a like %script% or @b like %script% or @c like %script%)
begin   
      ROLLBACK   transaction   
end



这段触发器的意思是,先定义三个变量,分别存储放在inserted表里的三个容易被

黑客下手的字符串型字段,然后用like模糊判断值中是否含有script字样,如果有,就回滚事务,不报错,以麻痹黑客,让他误以为已经挂好马了,

各位被挂马的朋友可以把这段脚本拿去,对应着修改,应该可以保证网站不被挂马。另外容易被挂马的字段还有text型,但是这个类型处理比较麻烦点,而且观察发现黑客挂一个表往往是好几个字段同时挂,所以只要一个字段不成功,整个表都是不成功的




上一篇:码农网注册帐号收不到邮件验证码或者激活链接
下一篇:iPhone锁屏密码只设4位数字?10分钟就破解
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-3-28 17:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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