论坛风格切换
您好,欢迎光临本站!   登录 注册新用户
  • 8662阅读
  • 29回复

[原创文章]ASPX防注入程序 V1.0 [复制链接]

上一主题 下一主题
 
发帖
7
黑豆
85
威望
67
贡献值
0
交易币
0
红豆
1
只看楼主 倒序阅读 0 发表于: 2009-07-29
— 本帖被 一剑西来 设置为精华(2009-07-30) —
虽然说ASP.NET属于安全性高的脚本语言,但是也经常看到ASP.NET网站由于过滤不严造成注射.由于ASP.NET基本上配合MMSQL数据库架设 如果权限过大的话很容易被攻击. 再者在网络上找不到好的ASP.NET防注射脚本,所以就自己写了个. 在这里共享出来旨在让程序员免除SQL注入的困扰.

我写了两个版本,VB.NET和C#版本方便不同程序间使用.





描述:
       1. XP + IIS5.1 + Access + MSSQL2000 下测试通过。
       2. 由于考虑到ASPX大多数和MMSQL数据库配合使用,在此增加了MMSQL关键字。
      3. 放到数据库连接代码处即可,和ASP用法类似。


C#Code:

    public void JK1986_CheckSql()
    {
        string jk1986_sql = "exec夢select夢drop夢alter夢exists夢union夢and夢or夢xor夢order夢mid夢asc夢execute夢xp_cmdshell夢insert夢update夢delete夢join夢declare夢char夢sp_oacreate夢wscript.shell夢xp_regwrite夢'夢;夢--夢%";
        string[] jk_sql = jk1986_sql.Split('夢');
        foreach (string jk in jk_sql)
        {
            // -----------------------防 Post 注入-----------------------
            if (Page.Request.Form != null)
            {
                for (int k = 0; k < Page.Request.Form.Count; k++)
                {
                    string getsqlkey = Page.Request.Form.Keys[k];
                    string getip;
                    if (Page.Request.Form[getsqlkey].ToLower().Contains(jk) == true)
                    {
                        Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )防注入程序提示您,请勿提交非法字符!↓\\n\\nBloghttp://hi.baidu.com/ahhacker86 \\n\\nBy:夢幻★剑客 && JK1986');</" + "script>");
                        Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
                        if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
                        {
                            getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                        }
                        else
                        {
                            getip = Page.Request.ServerVariables["REMOTE_ADDR"];
                        }
                        Response.Write("操 作 I P :" + getip + "<br>");
                        Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
                        Response.Write("操 作 页 面:" + Page.Request.ServerVariables["URL"] + "<br>");
                        Response.Write("提 交 方 式:P O S T " + "<br>");
                        Response.Write("提 交 参 数:" + jk + "<br>");
                        Response.Write("提 交 数 据:" + Page.Request.Form[getsqlkey].ToLower() + "<br>");
                        Response.End();
                    }
                }
            }
            // -----------------------防 GET 注入-----------------------
            if (Page.Request.QueryString != null)
            {
                for (int k = 0; k < Page.Request.QueryString.Count; k++)
                {
                    string getsqlkey = Page.Request.QueryString.Keys[k];
                    string getip;
                    if (Page.Request.QueryString[getsqlkey].ToLower().Contains(jk) == true)
                    {
                        Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )防注入程序提示您,请勿提交非法字符!↓\\n\\nBloghttp://hi.baidu.com/ahhacker86 \\n\\nBy:夢幻★剑客 && JK1986');</" + "script>");
                        Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
                        if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
                        {
                            getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                        }
                        else
                        {
                            getip = Page.Request.ServerVariables["REMOTE_ADDR"];
                        }
                        Response.Write("操 作 I P :" + getip + "<br>");
                        Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
                        Response.Write("操 作 页 面:" + Page.Request.ServerVariables["URL"] + "<br>");
                        Response.Write("提 交 方 式:G E T " + "<br>");
                        Response.Write("提 交 参 数:" + jk + "<br>");
                        Response.Write("提 交 数 据:" + Page.Request.QueryString[getsqlkey].ToLower() + "<br>");
                        Response.End();
                    }
                }
            }
            // -----------------------防 Cookies 注入-----------------------
            if (Page.Request.Cookies != null)
            {
                for (int k = 0; k < Page.Request.Cookies.Count; k++)
                {
                    string getsqlkey = Page.Request.Cookies.Keys[k];
                    string getip;
                    if (Page.Request.Cookies[getsqlkey].Value.ToLower().Contains(jk) == true)
                    {
                        Response.Write("<script Language=JavaScript>alert('ASP.NET( C#版本 )防注入程序提示您,请勿提交非法字符!↓\\n\\nBloghttp://hi.baidu.com/ahhacker86 \\n\\nBy:夢幻★剑客 && JK1986');</" + "script>");
                        Response.Write("非法操作!系统做了如下记录 ↓" + "<br>");
                        if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null )
                        {
                            getip = this.Page.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                        }
                        else
                        {
                            getip = Page.Request.ServerVariables["REMOTE_ADDR"];
                        }
                        Response.Write("操 作 I P :" + getip + "<br>");
                        Response.Write("操 作 时 间:" + DateTime.Now.ToString() + "<br>");
                        Response.Write("操 作 页 面:" + Page.Request.ServerVariables["URL"] + "<br>");
                        Response.Write("提 交 方 式: Cookies " + "<br>");
                        Response.Write("提 交 参 数:" + jk + "<br>");
                        Response.Write("提 交 数 据:" + Page.Request.Cookies[getsqlkey].Value.ToLower() + "<br>");
                        Response.End();
                    }
                }
            }

        }    
    }    



ASP.NET( C#版本 )防注入程序 下载地址:

ASPXSQL.rar (3 K) 下载次数:5

ASP.NET( VB.NET版本 )防注入程序 下载地址:

ASPXSQLVB.rar (3 K) 下载次数:5


原文地址:http://hi.baidu.com/ahhacker86/blog/item/1846e895b9c7fe17d21b70ed.html

有什么问题请及时反馈给我 期待与你交流.

发帖
396
黑豆
3
威望
1252
贡献值
0
交易币
0
红豆
5
只看该作者 2 发表于: 2009-07-30
论坛真冷清。 这好帖子也没人顶起来
发帖
230
黑豆
11
威望
394
贡献值
0
交易币
0
红豆
0
只看该作者 3 发表于: 2009-07-30
经典啊  手下了谢谢

发帖
1525
黑豆
140
威望
4803
贡献值
0
交易币
0
红豆
5
只看该作者 4 发表于: 2009-07-30
经典的东西

不顶

   LZ要心寒···

发帖
463
黑豆
826
威望
811
贡献值
0
交易币
0
红豆
4
只看该作者 5 发表于: 2009-07-30
呵呵··给你这大学生··这么一搞·以后想拿站就难了··呵呵··是一种进步的精神·

接下来就要找其他方法拿站了·· 好贴·!!
发帖
7
黑豆
85
威望
67
贡献值
0
交易币
0
红豆
1
只看该作者 6 发表于: 2009-07-30
回 1楼(wyy) 的帖子
谢谢版主赞赏
发帖
7
黑豆
85
威望
67
贡献值
0
交易币
0
红豆
1
只看该作者 7 发表于: 2009-07-30
回 4楼(qq695214125) 的帖子
有了兄弟们的支持 我很开心
发帖
7
黑豆
85
威望
67
贡献值
0
交易币
0
红豆
1
只看该作者 8 发表于: 2009-07-30
回 5楼(周良度) 的帖子
呵呵,那没办法了.还是那句话说的好啊,在攻与防的对立统一中寻求突破

发帖
3288
黑豆
3
威望
16729
贡献值
287
交易币
0
红豆
0
只看该作者 9 发表于: 2009-07-30
有防才能有攻
快速回复
限100 字节
 
上一个 下一个