Durante il test manuale dell'iniezione SQL mi sono imbattuto in questo.
C'è un modo per aggirare questi filtri che presumibilmente prevengono un attacco basato su UNION
?
<?php
error_reporting(0);
include('db.inc.php');
$id=strtolower($_GET['id']);
$counter = 0;
if(strpos($id,"union")!=false){
$counter++;
}
if(strpos($id,"select")!=false){
$counter++;
}
if($counter==2) {
echo "Go Away Get a Life";
}else{
echo "<font color=green size=4>Query Coming is : ".$id."<br/></font>";
$query = "SELECT username,password FROM admin WHERE username='".$id."' ORDER BY 1";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "Username : ".$row['username']."<br/>";
echo "Password : ".$row['password']."<br/>";
}
}
?>
Inoltre, qual è il modo migliore per prevenire un attacco SQLi basato su UNION
?