查找数据库中的某表某字段中是否有注入脚本

简介: 今天早上起来上网发现公司网站又被注入了,郁闷死了,赶快还原!!! 不过也多亏这注入,让我知道怎么简单的分析IIS日志了,呵呵,原来只要ctrl+f查找20%字符串就行,查到到如下东西 /forum/show.
今天早上起来上网发现公司网站又被注入了,郁闷死了,赶快还原!!!

不过也多亏这注入,让我知道怎么简单的分析IIS日志了,呵呵,原来只要ctrl+f查找20%字符串就行,查到到如下东西

/forum/show.aspx titleid=318 &caid =20%20And%20Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)%20as%20varchar(1))%2Bchar(124)=1 80 - 117.32.250.106 Mozilla/4.0 302 0 0
呵呵,原来show.aspx这个页面没有经过验证,赶快补上。。。
然后自己用.NET做了个检测数据库中的表中的字段中的内容有没有注入脚本的页面,看来以后每天都得要运行这个页面检测一次哦!!!
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.IO;
using  System.Data;

public   partial   class  niunantest : System.Web.UI.Page
{
    
protected   void  Page_Load( object  sender, EventArgs e)
    {

    }
    
protected   void  Button1_Click( object  sender, EventArgs e)
    {
        
string  sql_tbName  =
            
" SELECT name FROM sysobjects  "   +
            
" WHERE xtype = 'U' AND OBJECTPROPERTY (id, 'IsMSShipped') = 0  "   +
            
" order by name " ;
        
//  获取数据库中所有的用户表
        DataTable dt_tbName  =  myClass.myDataGet.getTable(sql_tbName);
        
foreach  (DataRow row  in  dt_tbName.Rows)
        {
            
string  tbName  =  row[ " name " ].ToString();
            
string  sql_tbColName  =
                
" select column_name,data_type from information_schema.columns  "   +
                
" where table_name =' "   +  tbName  +   " '   " ;
            
//  获取表中所有的字段
            DataTable dt_tbColName  =  myClass.myDataGet.getTable(sql_tbColName);
            
foreach  (DataRow row2  in  dt_tbColName.Rows)
            {
                
string  tbColName  =  row2[ " column_name " ].ToString();
                
string  tbColType  =  row2[ " data_type " ].ToString();

                
if  (tbColType  ==   " char "   ||  tbColType  ==   " nchar "   ||  tbColType  ==   " varchar "
                    
||  tbColType  ==   " nvarchar "   ||  tbColType  ==   " text " )
                {
                    
string  sql_count  =
                        
" select COUNT(*) from [ "   +  tbName  +   " ] where [ "   +  tbColName  +   " ] like '%<script%'  " ;
                    
//  判断该表该字段中是否含有script脚本
                     int  count  =   int .Parse(myClass.myDataGet.getDataScalar(sql_count).ToString());
                    
if  (count  >   0 )
                    {
                        Response.Write(tbName 
+   "  表中的  "   +  tbColName  +
                            
"  字段含有脚本!<br>SQL语句:<span style='color:blue;'> "   +  HttpUtility.HtmlEncode(sql_count)  +   " </span><br><br> " );
                    }
                }

            }
        }
    }
}
把代码记录下来,以备后用!
目录
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
OceanBase数据库常见问题之脚本执行失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
14天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
30 0
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
5天前
|
Oracle Unix 关系型数据库
AIX数据库启动和停止脚本
AIX数据库启动和停止脚本
10 1
|
8天前
|
SQL 存储 Oracle
C#利用IDbCommand实现通用数据库脚本执行程序
C#利用IDbCommand实现通用数据库脚本执行程序
|
14天前
|
数据库
数据库字段
数据库字段
|
15天前
|
分布式计算 关系型数据库 大数据
MaxCompute产品使用合集之怎么才可以将 PostgreSQL 中的 geometry 空间类型字段同步到 MaxCompute 或另一个 PostgreSQL 数据库
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
15天前
|
弹性计算 NoSQL Shell
一键安装 MongoDB 数据库脚本
【4月更文挑战第29天】
18 4
|
25天前
|
SQL 关系型数据库 MySQL
mysql 数据库查询 查询字段用逗号隔开 关联另一个表并显示
mysql 数据库查询 查询字段用逗号隔开 关联另一个表并显示
20 2
|
1月前
|
小程序 数据库
【微信小程序7】云数据库:利用Field获取指定字段的值。
【微信小程序7】云数据库:利用Field获取指定字段的值。
40 2