So.... hier mal die wesendlichen problematischen code blocke, die plaintext abfrage dazu, und der jeweilige URL Encoded string. Letzteren posste ich vor allem weil einige sachen nicht das zu sein scheinen wonach sie aussehen.
->
script.php?k=%3D%27%3E%3Cscript%3Ealert%28%22You+Suck%22%29%3B%3C%2Fscript%3E
->
script.php?k=%27%3BDROP%09TABLE%09search%3B--
Anm: das sind keine spaces, sondern tabs, wird also von deinem splitting ignoriert und 1:1 an die DB weiter geleitet.
->
script.php?k=%3Cscript%3Ewhile%281%29+%7B+alert%28%22nix+is%22%29%3B+%7D%3C%2Fscript%3E
Code quality: 10 WTFs/min oder so
Wozu die variablen? - die werden nirgendwo verwendet und nur wieder überschrieben.PHP:$terms = explode(" ", $k); $query = "SELECT * FROM search WHERE ";
script.php?k='><script>alert("You Suck");</script>PHP:<input type='text' name='k' size='50' value='<?php echo $_GET['k']; ?>' />
->
script.php?k=%3D%27%3E%3Cscript%3Ealert%28%22You+Suck%22%29%3B%3C%2Fscript%3E
Kürzer ->>PHP:foreach ($terms as $each){ $i++; if ($i == 1)
PHP:
foreach($terms as $i => $each) {
if($i == 0)
script.php?k=';DROP TABLE search;--PHP:if ($i == 1) $query .= "keywords LIKE '%$each%' "; else $query .= "OR keywords LIKE '%$each%' ";
->
script.php?k=%27%3BDROP%09TABLE%09search%3B--
Anm: das sind keine spaces, sondern tabs, wird also von deinem splitting ignoriert und 1:1 an die DB weiter geleitet.
script.php?k=<script>while(1) { alert("nix is"); }</script>PHP:echo "No results found for \"<b>$k</b>\"";
->
script.php?k=%3Cscript%3Ewhile%281%29+%7B+alert%28%22nix+is%22%29%3B+%7D%3C%2Fscript%3E
Code quality: 10 WTFs/min oder so