sqli-labs ————less -26a

FLy_鵬程萬里發表於2018-05-16

Less-26a

檢視一下原始碼:

查詢語句:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
過濾機制:
function blacklist($id)
{
	$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
	$id= preg_replace('/and/i',"", $id);		//Strip out AND (non case sensitive)
	$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*
	$id= preg_replace('/[--]/',"", $id);		//Strip out --
	$id= preg_replace('/[#]/',"", $id);			//Strip out #
	$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces
	$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces
	$id= preg_replace('/[\/\\\\]/',"", $id);		//Strip out slashes
	return $id;
}

這一關與26關的區別在於,這一關中的SQL語句在構建的時候新增了一個括號,同時在SQL語句執行丟擲錯誤後並不在前臺頁面輸出。所以這裡報錯注入直接排除,不可以使用,但是我們可以使用聯合查詢。

這裡我們可以使用')來閉合前面的(',之後在後面加入自己構造的SQL隱碼攻擊語句,同時在最後仍然需要閉合後面的')才可以,在這個過程中我們仍然需要繞過過濾機制,至於繞過的方法在上一節中已經有所說明了,這裡不再重複了,下面給出一個簡易payload:

http://192.168.11.136/sqli-labs/Less-26a?id=1')union%a0select%a01,user(),3||('1



相關文章