A. sql注入中的登陸問題
哪有那麼好注入的啊?有價值的網站不容易注入,容易注入的網站沒有價值(連基本的sql防注入都沒有做好)。
B. sql注入登錄為什麼使
如果不嚴謹的機制,一般登陸的SQL是賬號+密碼拼成的。再密碼部分添加 「' and 1=1 and 1=2」 等關鍵字 也就是強制 在SQL後面添加條件。 或者同OR 1=1 強制返回true。甚至你可以通過GO後調用函數,新建賬號,提權,獲取管理員許可權等。
C. 求SQL注入的欄位,我有帳號密碼登不了後台 解決後保證追加懸賞
路徑肯定是一個變數存放在全局文件中的,基本在config.asp中
D. 關於SQL注入的2個問題:1.怎麼使用sql注入方式登陸,用戶名輸入什麼,密碼輸入什麼,2怎麼防止sql登陸
用戶名,密碼都輸入: or 1 = 1
防止,寫個函數,調用就可以了
function GetVariable(strVariableName)
if IsEmpty(Trim(Request(strVariableName))) then
GetVariable=empty
exit Function
end if
GetVariable=Replace(Trim(Request(strVariableName)),"'","''")
GetVariable=Replace(GetVariable,"=","")
GetVariable=Replace(GetVariable,"--","")
end function
E. sql注入攻擊是怎麼在用戶名和密碼那兒登陸的時候注入SQL語句的說得通俗點,官網的太理論太籠統看不明白
比如 你的檢測語句是
select * from user where name=『「變數1」』 and password=『變數2』
如果能找到記錄則判定登陸成功。
那麼對方如果在填寫用戶名和密碼的時候寫 密碼 1' or 』1『='1 吧這個替換到 你最後形成的sql 語句就變成了
select * from user where name=『 1' or 『1』='1』 and password=『 1' or 『1』='1』
由於1=1是恆等的。也就會把所有記錄給查出來。這樣。這樣就可以達到不知道密碼或者是用戶名的情況就登陸了
F. 怎麼用SQL注入破解密碼
這篇文章對你應該有用: http://www.xue5.com/ite/200707/150732_4.html 入侵破解:SQL Server應用程序中的高級SQL注入 資料來源:學網( www.xue5.com ),原文地址: http://www.xue5.com/ite/200707/150732_4.htmlSQL SERVER自動地將整型轉化為varchar型的值。 [Second-Order SQL Injection] 即使應用程序總是過濾單引號,攻擊者依然能夠注入SQL同樣通過應用程序使資料庫中的數據重復使用。 例如,攻擊者可能利用下面的信息在應用程序中注冊: Username:admin'— Password:password 應用程序正確過濾了單引號,返回了一個類似這樣的insert語句: insert into users values(123,'admin''—','password',0xffff) 我們假設應用程序允許用戶修改自己的密碼。這個ASP腳本程序首先保證用戶設置新密碼前擁有正確的舊密碼。代碼如下: username = escape( Request.form("username") ); oldpassword = escape( Request.form("oldpassword") ); newpassword = escape( Request.form("newpassword") ); var rso = Server.CreateObject("ADODB.Recordset"); var sql = "select * from users where username = '" + username + "' and password = '" + oldpassword + "'"; rso.open( sql, cn ); if (rso.EOF) { … 設置新密碼的代碼如下: sql = "update users set password = '" + newpassword + "' where username = '" + rso("username") + "'" rso("username")為登陸查詢中返回的用戶名 當username為admin'—時,查詢語句為: update users set password = 'password' where username='admin'—' 這樣攻擊者可以通過注冊一個admin'—的用戶來根據自己的想法來設置admin的密碼。 這是一個非常嚴重的問題,目前在大型的應用程序中試圖去過濾數據。最好的解決方法是拒絕非法輸入,這勝於簡單地努力去修改它。這有時會導致一個問題,非法的字元在那裡是必要的,例如在用戶名中包含'符號,例如 O'Brien 從一個安全的觀點來看,最好的解答是但引號不允許存在是一個簡單的事實。如果這是無法接受的話,他們仍然要被過濾;在這種情況下,保證所有進入SQL查詢的數據都是正確的是最好的方法。 如果攻擊者不使用任何應用程序莫名其妙地往系統中插入數據,這種方式的攻擊也是可能的。應用程序可能有email介面,或者可能在資料庫中可以存儲錯誤日誌,這樣攻擊者可以努力控制它。驗證所有數據,包括資料庫中已經存在的數據始終是個好的方法。確認函數將被簡單地調用,例如: if(not isValid("email",request.querystring("email"))) then response.end 或者類似的方法。 [長度限制] 為了給攻擊者更多的困難,有時輸入數據的長度是被限制的。當這個阻礙了攻擊時,一個小的SQL可以造成很嚴重的危害。例如: Username:';shutdown— 這樣只用12個輸入字元就將停止SQL SERVER實例。文章整理:學網 http://www.xue5.com (本站) [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 另一個例子是: drop table 如果限定長度是在過濾字元串後應用將會引發另一個問題。假設用戶名被限定16個字元,密碼也被限定16個字元,那麼下面的用戶名和密碼結合將會執行上面提到的shutdown命令: Username:aaaaaaaaaaaaaaa' Password:'; shutdown— 原因是應用程序嘗試去過濾用戶名最後的單引號,但是字元串被切斷成16個字元,刪除了過濾後的一個單引號。這樣的結果就是如果密碼欄位以單引號開始,它可以包含一些SQL語句。既然這樣查詢看上去是: select * from users where username='aaaaaaaaaaaaaaa'' and password=''';shutdown— 實際上,查詢中的用戶名已經變為: aaaaaaaaaaaaaaa' and password=' 因此最後的SQL語句會被執行。 [審計] SQL SERVER包含了豐富的允許記錄資料庫中的各種事件的審計介面,它包含在sp_traceXXX類的函數中。特別有意思的是能夠記錄所有SQL語句,然後在伺服器上執行的T-SQL的事件。如果這種審計是被激活的,我們討論的所有注入的SQL查詢都將被記錄在資料庫中,一個熟練的資料庫管理員將能夠知道發生了什麼事。不幸地,如果攻擊者追加以下字元串: Sp_password 到一個Transact-SQL語句中,這個審計機制記錄日誌如下: --'sp_password' was found in the text of this event. -- The text has been replaced with this comment for security reasons. 這種行為發生在所有的T-SQL日記記錄中,即使'sp_password'發生在一個注釋中。這個過程打算通過sp_password隱藏用戶的密碼,但這對於一個攻擊者來說是非常有用的方法。 因此,為了隱藏所有注入,攻擊者需要簡單地在'—'注釋字元後追加sp_password,例如: Username:admin'—sp_password 事實上一些被執行的SQL將被記錄,但是查詢本身將順利地從日誌中消失。 [防範] 這部分討論針對記述的攻擊的一些防範。我們將討論輸入確認和提供一些簡單的代碼,然後我們將從事SQL SERVER鎖定。 [輸入驗證] 輸入驗證是一個復雜的題目。比較有代表性的是,自從過於嚴密地確認傾向於引起部分應用程序的暫停,輸入確認問題很難被解決,在項目開發中投入很少的注意力在輸入確認上。輸入確認不是傾向於將它加入到應用程序的功能當中,因此它一般會被忽視。 下面是一個含有簡單代碼的討論輸入確認的大綱。這個簡單的代碼不能直接用於應用程序中,但是它十分清晰地闡明了不同的策略。 不同的數據確認方法可以按以下分類: 1) 努力修改數據使它成為正確的 2) 拒絕被認為是錯誤的輸入 3) 只接收被認為是正確的輸入 第一種情況有一些概念上的問題;首先,開發人員沒必要知道那些是錯誤數據,因為新的錯誤數據的形式始終被發現。其次,修改數據會引起上面描述過的數據的長度問題。最後,二次使用的問題包括系統中已經存在數據的重新使用。 第二種情況也存在第一種情況中的問題;已知的錯誤輸入隨著攻擊技術的發展變化。 第三種情況可能是三種中最好的,但是很難實現。 從安全形度看合並第二種方法和第三種方法可能是最好的方法——只允許正確的輸入,然後搜索輸入中已知的錯誤數據。 帶有連接符號的姓名的問題對於體現合並兩種方法的必要性是一個好的例子: 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),文章整理:學網 http://www.xue5.com (本站) [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] vbtextcompare)<>0) then validate_string=false exit function end if next end function 方法三——只允許正確的輸入 function validatepassword(input) good_password_chars=」 」 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 [SQL SERVER鎖定] 在這指出的重要一點是鎖定SQL SERVER是必要的;外面的是不安全的。這是一個但創建SQL SERVER時需要做的事情的簡短的列表: 1.確定連接伺服器的方法 a.確定你所使用的網路庫是可用的,那麼使用"Network Utility" 2.確定哪些帳戶是存在的 a.為應用程序的使用創建一個低許可權的帳戶 b.刪除不必要的帳戶 c.確定所有帳戶有強壯的密碼;執行密碼審計 3.確定哪些對象存在 a.許多擴展存儲過程能被安全地移除。如果這樣做了,應該移除包含在擴展存儲過程代碼中的'.dll'文件 b.移除所有示例資料庫——例如'northwind'和'pubs'資料庫 4.確定哪寫帳戶能過使用哪些對象 a.應用程序進入資料庫所使用的帳戶應該有保證能夠使用它需要的對象的最小許可權 5.確定伺服器的補丁 a.針對SQL SERVER有一些緩沖區溢出和格式化字元串攻擊,也有一些其他的安全補丁發布。應該存在很多。 6.確定什麼應該被日誌記錄,什麼應該在日誌中結束。 [參考文獻] [1] Web Application Disassembly with ODBC Error Messages, David Litchfield http://www.nextgenss.com/papers/webappdis.doc [2] SQL Server Security Checklist http://www.sqlsecurity.com/checklist.asp [3] SQL Server 2000 Extended Stored Procere Vulnerability http://www.atstake.com/research/advisories/2000/a120100-2.txt [4] Microsoft SQL Server Extended Stored Procere Vulnerability http://www.atstake.com/research/advisories/2000/a120100-1.txt [5] Multiple Buffer Format String Vulnerabilities In SQL Server http://www.microsoft.com/technet/security/bulletin/MS01-060.asp http://www.atstake.com 資料來源:學網( www.xue5.com ),原文地址: http://www.xue5.com/ite/200707/150732_4.html
G. sql注入中的登陸問題~~
簡單一點的。
判斷:用戶或密碼
if exists(select * from tbluser where usercode=@usercode and password =@pwd)
{
return true
}
else
{
return false
}
如果你將@userCode 換成LIKE '%%'--就行了或是樓上的
註:這樣只能是SQL語句的