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

今天早上起来上网发现公司网站又被注入了,郁闷死了,赶快还原!!!

不过也多亏这注入,让我知道怎么简单的分析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>");
                    }
                }

            }
        }
    }
}

把代码记录下来,以备后用!

时间: 2024-12-23 04:34:23

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

如何得到一个dataset中某一个表的字段的名称和该数据的数据类型的长度

问题描述 如何得到一个dataset中某一个表的字段的名称和该数据的数据类型的长度(因为sizeof())不能用) 解决方案 解决方案二:这个简单啊,网上搜一下就得到答案了.

关系数据库-如何提取A表中某列中在B表某列中存在的数据

问题描述 如何提取A表中某列中在B表某列中存在的数据 A表有一数据列数据Aa B表有一列数据Ba 筛选条件是如果Aa的某个值在Ba中存在 那么取出来.不知道怎么写 求大神提拔? 解决方案 可以使用子查询 select Aa from A where Aa in (select Ba from B) 解决方案二: 要求从表A查数据插入到表B中,并且要求如果表A中已存在的数据,就不要重复插入怎样把同一个库中的源表A的数据导入到目的表B中A表和B表的差异数据

解析如何查看Oracle数据库中某张表的字段个数_oracle

Oracle中查询某个表的总字段数,要用SQL语句,或者在PL/SQL里面 复制代码 代码如下: select count(column_name) from user_tab_columns where table_name='T_B_AUDITOR' 能够查出来指定的那张表的字段数.下面是通过大致查看:select   tname,count(*)   from   col   group   by   tname; 复制代码 代码如下: 64 T_A_BOOKSTAGEINFO 465 T

如何删除datagridview中的某个表的字段

问题描述 我构建的datagridview中列是由两个表构建成的:dataTable中字段有:regionID.regionName.字段a.字段b.字段c.字段c两个表分别是:regions和A表regions包含字段:regionID.regionNameA表包含字段:regionID.字段a.字段b.字段c.字段d而我的datagridview显示时为了方便用户填报,我让regionID不显示.我的设计是如何删除A表当我选择datagridview中某些行时,具体的实现过程不用,我个人理解

【ASP】ASP创建数据库,新建数据表、字段

在已有数据库中创建表 <% set conn=server.CreateObject("adodb.connection") sql="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("BOOK.mdb") conn.open sql Conn.Execute("create table bbb(id AUTOINCREMENT(1,1),p_id

如何批量更改mysql库中100张表的字段位数

输入查看当前库中表的字段位数: mediumint(6) [root@db-master ~]# sh alter_table.sh alter table user_campaign_0 modify current_stage mediumint(6) unsigned not null default 0 comment '当前关卡'; 0 finished. alter table user_campaign_1 modify current_stage mediumint(6) uns

mysql-将一个a数据库中的一个表移动到b数据库

问题描述 将一个a数据库中的一个表移动到b数据库 如何做到将一个a数据库中的一个表移动到b数据库当中呢?该表只有字段没有记录,b数据库当中没有一张表 解决方案 直接在b数据库用create table建表,a中用drop table删除表. 解决方案二: SQL将一个数据库的某一张表移动到另外一个数据库中(表的结构不变)mysql 怎样清空一个数据库中的所有表在VS2010中一个MySql的数据库表的创建 解决方案三: 数据库右键选项里,任务,导出:可以将一个数据库的表转换成excl. txt等

mysql-数据库中的关系表有什么作用 求大神解惑

问题描述 数据库中的关系表有什么作用 求大神解惑 其中一张表叫做关系表,它内部只有两个字段,但全是id,一个是cid,一个是uid 其中两个id都是其他表的主键 我只想问这样记录下他们的id有什么用 或者 说这样关系表存在的意义是什么啊 真心求大神解答 解决方案 实现了一个1:1的关系,这种设计可能是为了把一个表拆开,也可能有历史原因而需要保持原来表的结构不变而增加新的字段. 解决方案二: 可以实现1对多和多对多的关联 例如:a表为用户表 b表为角色表 c表为关系表 通过c表可以实现 一个用户有

mysql 怎么查询整个数据库中某个特定值所在的表和字段?

问题描述 mysql 怎么查询整个数据库中某个特定值所在的表和字段? 比如说有 person表中有name="苹果",goods表中有label="苹果" 那么根据"苹果"怎么确认person 与 goods这两张表及各自对应的是name与label字段呢? 解决方案 查询整个数据库中某个特定值所在的表和字段的方法查询整个数据库中某个特定值所在的表和字段的方法查询整个数据库中某个特定值所在的表和字段的方法 解决方案二: 如果,你说的Pseron里