Título: Sql Injection
Publicado por: ulises4 en 9 Mayo 2012, 03:39 am
Hola, me gustaria hacer sql injection a un tipo de panel llamado Flux Control Panel, tengo el codigo del panel, lo que crei importante es el Login.php mo pongo aqui: <?php if (!defined('FLUX_ROOT')) exit;
if (Flux::config('UseLoginCaptcha') && Flux::config('EnableReCaptcha')) { require_once 'recaptcha/recaptchalib.php'; $recaptcha = recaptcha_get_html(Flux::config('ReCaptchaPublicKey')); }
$title = Flux::message('LoginTitle'); $loginLogTable = Flux::config('FluxTables.LoginLogTable');
if (count($_POST)) { $server = $params->get('server'); $username = $params->get('username'); $password = $params->get('password'); $code = $params->get('security_code'); try { $session->login($server, $username, $password, $code); $returnURL = $params->get('return_url'); if ($session->loginAthenaGroup->loginServer->config->getUseMD5()) { $password = Flux::hashPassword($password); } $sql = "INSERT INTO {$session->loginAthenaGroup->loginDatabase}.$loginLogTable "; $sql .= "(account_id, username, password, ip, error_code, login_date) "; $sql .= "VALUES (?, ?, ?, ?, ?, NOW())"; $sth = $session->loginAthenaGroup->connection->getStatement($sql); $sth->execute(array($session->account->account_id, $username, $password, $_SERVER['REMOTE_ADDR'], null)); if ($returnURL) { $this->redirect($returnURL); } else { $this->redirect(); } } catch (Flux_LoginError $e) { if ($username && $password && $e->getCode() != Flux_LoginError::INVALID_SERVER) { $loginAthenaGroup = Flux::getServerGroupByName($server);
$sql = "SELECT account_id FROM {$loginAthenaGroup->loginDatabase}.login WHERE "; if (!$loginAthenaGroup->loginServer->config->getNoCase()) { $sql .= "CAST(userid AS BINARY) "; } else { $sql .= "userid "; } $sql .= "= ? LIMIT 1"; $sth = $loginAthenaGroup->connection->getStatement($sql); $sth->execute(array($username)); $row = $sth->fetch();
[b]if ($row) { $accountID = $row->account_id; if ($loginAthenaGroup->loginServer->config->getUseMD5()) { $password = Flux::hashPassword($password); }
$sql = "INSERT INTO {$loginAthenaGroup->loginDatabase}.$loginLogTable "; $sql .= "(account_id, username, password, ip, error_code, login_date) "; $sql .= "VALUES (?, ?, ?, ?, ?, NOW())"; $sth = $loginAthenaGroup->connection->getStatement($sql); $sth->execute(array($accountID, $username, $password, $_SERVER['REMOTE_ADDR'], $e->getCode()));[/b] } } switch ($e->getCode()) { case Flux_LoginError::UNEXPECTED: $errorMessage = Flux::message('UnexpectedLoginError'); break; case Flux_LoginError::INVALID_SERVER: $errorMessage = Flux::message('InvalidLoginServer'); break; case Flux_LoginError::INVALID_LOGIN: $errorMessage = Flux::message('InvalidLoginCredentials'); break; case Flux_LoginError::BANNED: $errorMessage = Flux::message('TemporarilyBanned'); break; case Flux_LoginError::PERMABANNED: $errorMessage = Flux::message('PermanentlyBanned'); break; case Flux_LoginError::IPBANNED: $errorMessage = Flux::message('IpBanned'); break; case Flux_LoginError::INVALID_SECURITY_CODE: $errorMessage = Flux::message('InvalidSecurityCode'); break; case Flux_LoginError::PENDING_CONFIRMATION: $errorMessage = Flux::message('PendingConfirmation'); break; default: $errorMessage = Flux::message('CriticalLoginError'); break; } } }
$serverNames = $this->getServerNames(); ?> creo que lo que marque en negritas es lo importante talvez en el password seria de cambiar algo para por ejemplo cierre el () y me de acceso a cualquier cuenta espero me puedan ayudar :D gracias :)
Título: Re: Sql Injection
Publicado por: ulises4 en 9 Mayo 2012, 03:40 am
olvide poner esto creo que es de gran ayuda y necesario:
http://fluxcp.googlecode.com/svn/branches/fluxcp-1.0/
Título: Re: Sql Injection
Publicado por: ulises4 en 9 Mayo 2012, 03:46 am
la verdad esque soy nuevo en esto, intente poniendo en el espacio de password lo sig: 0=0 }
si burlense y todo pero quiero aprender, la practica y el conocimiento hacen al maestro
|