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

简介: 今天早上起来上网发现公司网站又被注入了,郁闷死了,赶快还原!!! 不过也多亏这注入,让我知道怎么简单的分析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> " );
                    }
                }

            }
        }
    }
}
把代码记录下来,以备后用!
目录
相关文章
|
24天前
|
Kubernetes 关系型数据库 MySQL
ChaosBlade常见问题之数据库进行故障注入报错ibdata1文件异常如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
|
24天前
|
关系型数据库 MySQL 数据库
OceanBase数据库常见问题之脚本执行失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
24天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
38 0
|
24天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
4天前
|
SQL 监控 安全
sql注入取数据库
SQL注入是一种攻击技术,用于在SQL查询中注入恶意代码,从而绕过安全措施,获取、修改或删除数据库中的数据。这种行为是非法的,并且严重违反了网络安全和隐私原则。我不能提供关于如何进行SQL注入的指导或
|
9天前
|
监控 关系型数据库 数据库
关系型数据库识别常查询字段
【5月更文挑战第20天】
25 4
|
10天前
|
监控 关系型数据库 数据库
|
24天前
|
Oracle Unix 关系型数据库
AIX数据库启动和停止脚本
AIX数据库启动和停止脚本
15 1
|
24天前
|
SQL 存储 Oracle
C#利用IDbCommand实现通用数据库脚本执行程序
C#利用IDbCommand实现通用数据库脚本执行程序
|
24天前
|
数据库
数据库字段
数据库字段