elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Cómo evitar inyección SQL?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cómo evitar inyección SQL?  (Leído 3,780 veces)
exelovin

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Cómo evitar inyección SQL?
« en: 8 Abril 2013, 16:36 pm »

Hola gente del foro, quiero contarles mi problema. resulta que tengo un script en el cual me hackean con la cuenta admin, osea si yo no creo un usuario con privilegios de admin no me pueden hackear, creo que es inyección SQL. mí pregunta es cómo soluciono eso? gracias.


« Última modificación: 8 Abril 2013, 16:55 pm por exelovin » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Cómo evitar inyección SQL?
« Respuesta #1 en: 8 Abril 2013, 18:11 pm »

Lo que has puesto literalmente es:

Hola amigos, resulta que un ladrón entra a casa y me roba con el pin del sistema de alarma. Creo que es un ladron mi pregunta es como soluciono eso ?

Si no das detalles (como creas la cuenta, como la validas, como entras con ella etc..) poco se te puede ayudar y solo se puede especular..

Saludos


En línea

BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Cómo evitar inyección SQL?
« Respuesta #2 en: 8 Abril 2013, 19:33 pm »

Activa magic quotes, eso, a los lammer, les echa para atrás xD
En línea

- Pásate por mi web -
https://codeisc.com
exelovin

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Cómo evitar inyección SQL?
« Respuesta #3 en: 9 Abril 2013, 00:07 am »

$query = mysql_query("SELECT id, activacion, ban, nick FROM usuarios WHERE nick = '".no_injection(trim($_POST['nick']))."' and password = '".no_injection(md5($_POST['pass']))."'") or die(mysql_error());


hay algo inseguro ahí? creo que por ahí me hackean...
« Última modificación: 9 Abril 2013, 08:43 am por exelovin » En línea

el-brujo
ehn
***
Desconectado Desconectado

Mensajes: 21.586


La libertad no se suplica, se conquista


Ver Perfil WWW
Re: Cómo evitar inyección SQL?
« Respuesta #4 en: 10 Abril 2013, 16:35 pm »

¿Ya has leído algo sobre SQLi?

¿limpias o validas la variable $nick o $pass?

¿cómo evitar inyección sql en php?
http://foro.elhacker.net/php/iquestcomo_evitar_inyeccion_sql_en_php-t307274.0.html
En línea

l337*


Desconectado Desconectado

Mensajes: 1.016


I've been thinking...


Ver Perfil
Re: Cómo evitar inyección SQL?
« Respuesta #5 en: 10 Abril 2013, 23:49 pm »

Hola gente del foro, quiero contarles mi problema. resulta que tengo un script en el cual me hackean con la cuenta admin, osea si yo no creo un usuario con privilegios de admin no me pueden hackear, creo que es inyección SQL. mí pregunta es cómo soluciono eso? gracias.

siempre pon tus queries dentro de las comas simples o las atravesadas

$sql = "SELECT `id` FROM `tabla` WHERE id='".$_GET['id']."'"  ;

la otra seria, si esperas un id numerico:

if(isset($_GET['id']) && is_numeric($_GET['id'])) {
//ejecutar query
} else {
//return error y die();
}

si es en un script de inserts, update, delete, etc. limpia las variables con mysql_real_escape_string();

http://php.net/manual/en/function.mysql-real-escape-string.php
« Última modificación: 10 Abril 2013, 23:51 pm por l337* » En línea

exelovin

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Cómo evitar inyección SQL?
« Respuesta #6 en: 13 Abril 2013, 12:33 pm »

Así está bien?

Código:
$query = mysql_query("SELECT `id`, `activacion`, `ban`, `nick` FROM `usuarios` WHERE `nick` = '".mysql_real_escape_string(trim($_POST['nick']))."' and password = '".mysql_real_escape_string(md5($_POST['pass']))."'") or die(mysql_error());


Acá dejo el código entro...

Citar
<?php
require_once("header.php");

$user = mysql_real_escape_string($_POST["nick"]);
$pass = mysql_real_escape_string($_POST["pass"]);

if(empty($user) or empty($pass)){
   die('0: Faltan Datos');
}
$pass = md5($pass);
// Comprobamos los datos
$query = mysql_query("SELECT `id`, `activacion`, `ban`, `nick` FROM `usuarios` WHERE `nick` = '".mysql_real_escape_string(trim($_POST['nick']))."' and password = '".mysql_real_escape_string(md5($_POST['pass']))."'") or die(mysql_error());

if (!$data = mysql_fetch_array($query)){
   die('0: Datos no validos');
}

if($data["activacion"] != '1'){
   die('0: Activa Tu Usuario');
}

$baneo   =   "SELECT *
         FROM suspendidos
         WHERE nick='$user'";
$bane   =   mysql_query($baneo, $con);
$bane2   =   mysql_fetch_array($bane);

function ToUnix($string){
   $string = str_replace("/","-",$string);
    return strtotime($string);
}

  $baneo = $bane2['fecha2'];
 $dia = 60*60*24;
  $baneo2 = $baneo*$dia;
 $fechaone = ToUnix($bane2['fecha1']);
  $fechaone2 = $fechaone;
  
  if(date("d/m/Y",$baneo2+$fechaone2) == date("d/m/Y") and is_numeric($bane2['fecha2'])){
    mysql_query("UPDATE usuarios SET ban = 0 WHERE nick = '$user'");
   mysql_query("DELETE FROM suspendidos WHERE nick = '$user'");
}
  

if($data["ban"]=='1' and date("d/m/Y",$baneo2+$fechaone2) !== date("d/m/Y")){

    /*
   * Desarrollado por timbalentimba...
   *  Puto el que lee
   */





   echo'2:

<font color="red"><b>Tu cuenta se encuentra suspendida</b></font>
<p align=left>
<b>Causa:</b> '.$bane2['causa'].'
<br/><b>Fecha:</b> '.$bane2['fecha1'].'
<br/><b>Duraci&oacute;n:</b> '.(!is_numeric($bane2['fecha2']) ? 'Indefinido' : $bane2['fecha2'].' Dia/s');
 echo '<br> <b>Rehabilitacion el :</b> '.date("d/m/Y",$baneo2+$fechaone2);

die();
}

$ip = no_i($_SERVER['REMOTE_ADDR']);

$id_A = md5(uniqid(rand(), true));
$_SESSION['user'] = mysql_real_escape_string($data['nick']);
$_SESSION['id'] = $data['id'];
$_SESSION['id2'] = $id_A;

$id_B = $data["id"]."%".$id_A."%".$ip;
setcookie('id_extreme', $id_B, time()+7776000,'/');
$query = mysql_query("UPDATE `usuarios` SET `id_extreme` = '".$id_A."' WHERE `nick` = '".mysql_real_escape_string($_POST['nick'])."'");

echo'1:';
?>

Hay otra vulnerabilidad?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como evitar la inyeccion sql
Nivel Web
CICOLO_111234 2 10,602 Último mensaje 20 Abril 2009, 01:02 am
por WHK
Evitar inyeccion SQL en mysql y redireccionar « 1 2 3 »
Nivel Web
RicRed 20 12,642 Último mensaje 18 Marzo 2010, 03:41 am
por Shell Root
Evitar Inyeccion en MySQL « 1 2 »
PHP
ZharkD 13 9,325 Último mensaje 14 Mayo 2010, 16:37 pm
por ZharkD
Se puede evitar inyección DLL ?
Análisis y Diseño de Malware
Vaagish 4 3,463 Último mensaje 29 Noviembre 2013, 22:45 pm
por Vaagish
Evitar inyeccion y burp suite java
Seguridad
kkshihack 0 1,889 Último mensaje 11 Febrero 2016, 18:57 pm
por kkshihack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines