存储过程的注入及解决

访客4年前黑客文章874

由于存储过程中存在用于字符串连接的 + 号连接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')' 附近有语法错误。

  解决方案:

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

 

标签: 好话题

相关文章

上交所将设科创板 新版块将如何设计?_攻击者

导读:证监会和上交所在下午进行了答记者问,科创板将如何设计?“新板块”、“有门槛”、“试点注册制”几大关键词不容错过。 首届中国国际进口博览会于11月5日上午在国家会展中心(上海)开幕,国家主席...

微信怎么悄悄定位别人的位置(安卓手机定位好友位置)?

随着微信的用户量的增加,定位功能逐渐的成为我们经常使用的一个应用,定位好友的位置相信还有很多的人不会操作,尤其是安卓的用户,今天就告诉你们安卓手机如何悄悄的定位别人的位置而不被对方所察觉到。 微信怎...

如何不被对方发现的情况下关闭微信验证选项?

一些小伙伴为了保护自己的微信号,开启了对微信号的辅助验证,可以提高自己的微信号的安全性。但有些同伴认为这是个麻烦,时间一过就会关闭,但我并没有想办法那么如何在对方不知道的情况下关闭微信验证选项是一个问...

安卓微信好友恢复软件哪个好(三分钟学会怎么找回删除的好友)

大多数时间我们都是通过微信联系关系好的朋友,在用微信交流过程中与朋友发生口角,一气之下删掉对方好友或者清空微信聊天记录,事后想要恢复回来用着招,轻松恢复聊天记录! 微信使用小技巧:关闭朋友圈烦...

黑客接单平台教你如何查老婆的微信记录_腾讯科技

解决来历不明的U盘得加一万个当心都随便你,要了解有许多U盘都不可以草率插进自身的笔记本,不然得不偿失。不但包含填满恶意程序插进就会嵌入病毒的U盘,下边这个但是行之有效的面组毁坏式U盘--它有个最让人望...

手机触屏失灵怎么办

手机触屏失灵怎么办...