科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server应用程序高级SQL注入(下)(8)

SQL Server应用程序高级SQL注入(下)(8)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

一旦攻击者控制了数据库,他们就想利用那个权限去获得网络上更高的控制权。这可以通过许多途径来达到:

作者:gaoyuanan 来源:赛迪网技术社区 2007年9月7日

关键字: SQL Server SQL Server 各版本 注入 数据库

  • 评论
  • 分享微博
  • 分享邮件

从安全角度看合并第二种方法和第三种方法可能是最好的方法——只允许正确的输入,然后搜索输入中已知的错误数据。

带有连接符号的姓名的问题对于体现合并两种方法的必要性是一个好的例子:

Quentin Bassington-Bassington

我们必须在正确输入中允许连接符号,但是我们也意识到字符序列''—''对SQL SERVER很重要。

当合并修改数据和字符序列确认时,会出现另一个问题。例如,如果我们应用一个错误过滤在除去单引号之后去探测''—'',''select''和''union'',攻击者可以输入:

uni''on sel''ect version-''-

既然单引号被除去,攻击者可以简单地散布单引号在自己的错误的字符串中躲避被发现。

这有一些确认代码的例子:

方法一——过滤单引号 以下为引用的内容:

function escape(input) 
input=replace(input,"''","''''") 
escape=input 
end function

方法二——拒绝已知的错误输入

以下为引用的内容:

function validate_string(input) 
known_bad=array("select","insert","update","delete","drop","—","''") 
validate_string=true 
for i=lbound(known_bad) to ubound(known_bad) 
if(instr(1,input,known_bad(i),vbtextcompare)<>0) then 
validate_string=false 
exit function 
end if 
next 
end function

方法三——只允许正确的输入

以下为引用的内容:

function validatepassword(input) 
good_password_chars=” abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789” 
validatepassword=true 
for i=1 to len(input) 
c=mid(input,I,1) 
if(InStr(good_password_chars,c)=0) then 
validatepassword=false 
exit function 
end if 
next 
end function
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章