存储过程的注入及解决

访客4年前黑客文章897

由于存储过程中存在用于字符串连接的 + 号连接SQL语句,这就造成SQL注入的可能性.

  下面一个例子:

PR_UserManage_Users_BatchMove

CREATE PROCEDURE [dbo].[PR_UserManage_Users_BatchMove]
(
@UserType int = 1,
@GroupId NVarChar(500) =”,
@UserId NVarChar(4000) = ”,
@UserName NVarChar(255) = ”,
@StartUserId int = 0,
@EndUserId int = 0,
@BatchUserGroupId NVarChar(500) =”
)
AS
BEGIN
SET NOCOUNT OFF
If (@UserType = 1)
BEGIN
EXEC(’Update PE_Users set GroupID= ‘ + @GroupId +’ Where UserID in (’ + @UserId + ‘)’)
END
Else If(@UserType = 2)
BEGIN
EXEC(’Update PE_Users set GroupID= ‘ + @GroupId +’ Where UserName in (”’ + @UserName + ”’)')
END
Else If(@UserType = 3)
BEGIN
EXEC(’Update PE_Users set GroupID= ‘ + @GroupId +’ Where UserId between ‘ + @StartUserId + ‘ and ‘ + @EndUserId)
END
Else If(@UserType = 4)
BEGIN
EXEC(’Update PE_Users set GroupID= ‘ + @GroupId +’ Where GroupID in (’ + @BatchUserGroupId + ‘)’)
END
END 


  可以看出,在用户名的地方,没有过滤直接放入查询.

  调用地方:

public bool MoveByUserName(string userName, int groupId)
            {
            Parameters parmsForUsers = new Parameters();
            parmsForUsers.AddInParameter("@UserType", DbType.Int32, 2);
            parmsForUsers.AddInParameter("@UserName", DbType.String, userName);
            parmsForUsers.AddInParameter("@GroupId", DbType.Int32, groupId);
            return DBHelper.ExecuteProc("PR_UserManage_Users_BatchMove", parmsForUsers);
            }利用过程: 


  用户管理,批量移动

  指定用户名 这里加入SQL注入语句

  “/”应用程序中的服务器错误。

  --------------------------------------------------------------------------------

  字符串 'jax')' 后的引号不完整。

  'jax')' 附近有语法错误。

  说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

  异常详细信息: System.Data.SqlClient.SqlException: 字符串 'jax')' 后的引号不完整。

  'jannock')' 附近有语法错误。

  解决方案:

  由于调用时不注意,可能造成危险,所以类似于这类的存储过程,应写在程序外面,便于过滤和发现,不要写在存储过程中。

 

标签: 好话题

相关文章

如何用微信定位找人(通过手机定位找人怎么找)_微信定位

如何用微信定位找人(通过手机定位找人怎么找),微信区的二万名官兵露娜一度惊动临时。众所周知,Q区的顶级英豪,好比李白、韩信、露娜,都但是十五六千,1w7、1w8曾经属于自然屏蔽了!上赛季朋友们都承认露...

开宾馆记录多久消失( 怎么查老公在哪开过房)_开宾馆记录

开宾馆记录多久消失( 怎么查老公在哪开过房),美国《华尔街日报》2月7日征引知恋人士信息称,中国阳光保险团体已和议以每间客房逾200万美米的创记录高价回收位于纽大概曼哈顿中城的新BaccaratHot...

皮肤如何补水

你好!首先应注意体内的水份是否足够,然后再进行体外补水! 1、用矿泉水(所含的矿物质和微量米素是皮肤最需要的),把面膜贴蘸湿,然后敷在脸上15-20分钟(这。 首先应注意体内的水份是否足够,然后再进行...

微信不用短信验证怎么登陆,对方知道吗?

微信作为现当今使用最为频繁的社交软件,在互联网快速发展的当今社会是很重要的一个社交互动聊天平台,凭借自身用户优势,它发展越来越好,但是也引发了一系列的问题,微信登陆怎么不用验证码就轻而易举的登陆上去对...

可以查住宿信息吗_住宿信息怎么删除

魔客吧网站为什么打不开了? 魔客吧网站因未知原因无法打开,众多建站爱好者想要下载魔客吧资源却无法进入,甚至很多付费会员的投入也打了水漂,那么如何解决呢?很简单!可以加入虎格网! 作为业内...

怎么监控别人微信聊天记录不被发现,这个技巧非常实用-免费接单

怎么监控别人微信聊天记录不被发现,这个技巧非常实用-免费接单 据新华社报道,今年以来,北京市公安局网络安全保卫总队按照公安部“净网2019”专项行动部署,持续开展对违法违规App清理整治,共清理下架...