2011-07-12 15 views
0

私は、個々のWebサイトを無料のオンラインサービスの一種としてテストするSQLI用の脆弱性スキャナを作成しています。私が実行したときに、PHPでpreg_matchでelseifを使用できますか?

  if(preg_match("You have an error in your SQL','Division by zero in|supplied argument is not a valid MySQL result resource in|Call to a member function','Microsoft JET Database|ODBC Microsoft Access Driver|Microsoft OLE DB Provider for SQL Server|Unclosed quotation mark|Microsoft OLE DB Provider for Oracle|Incorrect syntax near|SQL query failed", Connect_Host(str_replace("=", "='", $sites[2][$a])))) { 
      echo "Its vulnerable"; 
      } elseif(preg_match("mysql_num_rows()"||"mysql_fetch_array()"||"Error Occured While Processing Request"||"error"in"your"sql"syntax"||"mysql_fetch_row()"||"VBScript Runtime"||"BOF or EOF"||"mysql_fetch_object()"||"Invalid Querystring", Connect_Host(str_replace("=", "='", $sites[2][$a])))) { 
      echo "Its vulnerable"; 
      } else { 
      echo "Its not vulnerable"; 
      flush(); ob_flush(); 
      } 

をとにかく:

とにかく、私はそれが一般的に脆弱なサイトに記載されているテキストを返した場合、私はそれをスキャンしたときに、私はそうのようにこれを行うにするpreg_matchを使用しているかどうかを確認しようとしていますそれは、私がエラーを取得:この場合

Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\scanner\index.php on line 78

を、エラー(線78)上にあるコードは、これが全体の線78で、ELSEIFある:

} elseif(preg_match("mysql_num_rows()"||"mysql_fetch_array()"||"Error Occured While Processing Request"||"error"in"your"sql"syntax"||"mysql_fetch_row()"||"VBScript Runtime"||"BOF or EOF"||"mysql_fetch_object()"||"Invalid Querystring", Connect_Host(str_replace("=", "='", $sites[2][$a])))) { 

だから私は何を間違えているのですか?

+2

正しい正規表現を構成するとすぐに使用できます。あなたが書いたことはちょうど意味がありません。 – zerkms

+0

すべての一致を配列に追加し、['in_array'](http://ca3.php.net/in_array)を使って一致するかどうかを検討する必要があります。 –

+0

私はその態度に感心しますが、私は脆弱性テストがこの単純でも白くもないと思います。 – deceze

答えて

1

まず、preg_match();は通常の表現ではなく、通常のテキストであるため、(おそらく)デリミタが必要です。

  • 最初のパラメータの状態は何あなたは
  • 2番目のパラメータの状態についてあなたがそう

を検索しているを検索している、を修正し、あなたの行は次のようになります。

} elseif(preg_match("/(mysql_num_rows\(\)|mysql_fetch_array\(\)|Error Occured While Processing Request|error in your sql syntax|mysql_fetch_row\(\)|VBScript Runtime|BOF or EOF|mysql_fetch_object()|Invalid Querystring/i", Connect_Host(str_replace("=", "='", $sites[2][$a]))))) { 
0

これをラインで使用する番号78:

 
} elseif(preg_match("/(mysql_num_rows()|mysql_fetch_array()|Error Occured While Processing Request|error in your sql syntax|mysql_fetch_row()|VBScript Runtime|BOF or EOF|mysql_fetch_object()|Invalid Querystring/i", Connect_Host(str_replace("=", "='", $sites[2][$a]))))) { 

関連する問題