十六:SQL注入之查詢方式及報錯盲注
阿新 • • 發佈:2021-01-15
在很多注入時,有很多注入會出現無回顯的情況,其中不回顯的原因可能是SQL查詢語句有問題,這時候我們需要用到相關的報錯或者盲注進行後續操作,同時作為手工注入的時候,需要提前瞭解SQL語句能更好的選擇對應的注入語句。
select 查詢語句
查詢語句:
select * from news where id = $id
insert 插入資料
在網站中進行新使用者增加刪除等操作
insert into news(id,url,text) values(2,'du','tutu')
delete 輸出資料
後臺進行刪除文章
delete from news where id = $id
updata 更新資料
會員後臺中心資料同步或者進行快取等操作
update user set pwd='$p' where id=2 and username = 'admin'
order by 排序資料
一般結合表名或者列名進行資料排序操作
select * from news order by $id
select id,name,price from news order by $order
SQL注入報錯盲注
盲注就是在注入過程中,獲取的資料不能回顯至前端頁面。此時,我們需要利用一些方法進行判斷或者嘗試,這個過程稱之為盲注。
盲注分為三類:
(二)基於布林的盲注-邏輯判斷
regexp,like,ascii,left,ord,mid
(三)基於時間的盲注-延時判斷
if,sleep
select * from member where id = 1 and sleep(if(database()='pikuchu',5,0))
引號可能會被轉義,所以需要加入ascii
(一)基於報錯的SQL盲注-報錯回顯
floor,updatexml,extractvalue
updatexml(1,concat(0x7e,database()),0)
參考:
like 'ro%' #判斷or 或者ro 是否成立 regexp '^xiaodi [a-z]' #匹配xiaodi及xiaodi...等 if(條件,5,0) #條件成立,返回5 反之 返回 0 sleep(5) # SQL語句延時執行5秒 mid(a,b,c) # 從位置b開始,擷取a字串的c位 substr(a,b,c)# 從b位置開始,擷取字串a的位置 left(database(),1) # left(a,b) 從左擷取a的前b位 length(database())= 8 # 判斷資料庫名的長度 ord = ascii ascii(x)= 97 # 判斷ascii碼是否等於97 access猜解出了資料庫名,不知道列名,用偏移注入。