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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Codigo PHP vulnerable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Codigo PHP vulnerable  (Leído 2,809 veces)
Juanpi123321

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Codigo PHP vulnerable
« en: 6 Junio 2018, 01:08 am »

hola que tal quisiera saber que esta mal en el siguiente codigo, osea cuales serian las debilidades, referidas al tema de la seguridad y un poco sobre el tema SQL Injection.
Le puse puntos xq no me deja identar correctamente.



Codigo PHP vulnerable

Código
  1. <?
  2. $mysqli = new mysqli('localhost','root', ,'seguridad');
  3. if($mysqli->connect_errno){
  4.    echo 'error db';
  5. }
  6.  
  7. $id=$_GET['id'];
  8. if(isset($id) && !empty($id)){
  9.  
  10.    $sql = "SELECT text,title FROM news where id=" $id;
  11.    #echo $sql;
  12.  
  13.    $q = $mysqli->query($sql) or mysql_error();
  14.    $row = $q->fetch_assoc();
  15.  
  16.    if(isset($row['title'])){
  17.        echo 'Titulo: '  $row['title'];
  18.        echo "<br>";
  19.        echo 'Texto: ' $row['text'];
  20.        echo "<br>";
  21.    }
  22.  
  23. }
  24. else{
  25.    echo 'pase algun valor en la variable id';
  26. }
  27.  
  28. ?>


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 6 Junio 2018, 03:45 am por #!drvy » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Codigo PHP vulnerable
« Respuesta #1 en: 6 Junio 2018, 01:17 am »

Código:
$id=$_GET['id'];
$sql = "SELECT text,title FROM news where id=".$id;

allí se puede filtrar una peticion (y ese codigo tiene errores)

estudia sobre sql injection pero podría pasar solo viendolo sin mucho detalle

Código:
url,com/id?1' or '1'='1

esto hará que los datos detornados sean de todos los id... es el clasico codigo de principios de los 2000 para mostrar como una pagina era vulnerable


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
LaThortilla (Effort)

Desconectado Desconectado

Mensajes: 234


¿En que vida harás lo que en esta no?


Ver Perfil WWW
Re: Codigo PHP vulnerable
« Respuesta #2 en: 23 Agosto 2018, 00:24 am »

Código:
$id=$_GET['id'];
$sql = "SELECT text,title FROM news where id=".$id;

allí se puede filtrar una peticion (y ese codigo tiene errores)

estudia sobre sql injection pero podría pasar solo viendolo sin mucho detalle

Código:
url,com/id?1' or '1'='1

esto hará que los datos detornados sean de todos los id... es el clasico codigo de principios de los 2000 para mostrar como una pagina era vulnerable

Exactamente por eso debes utilizar http://php.net/manual/es/mysqli.real-escape-string.php
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Codigo PHP vulnerable
« Respuesta #3 en: 23 Agosto 2018, 01:40 am »

- Aprende a utilizar sentencias preparadas.
- Intenta tener un control (más o menos) sobre los datos que manejas. Si usas el ID únicamente como un integro, asegúrate que es un integro.
- Usar isset y empty viene a ser algo así como comprobar que tienes las llaves en el bolsillo y sacarlas del bolsillo para comprobar que las tienes... a la vez.
- Aprende a utilizar Try/Catch en vez de usar el "OR ELSE".

Código
  1. <?php
  2.  
  3. mysqli_report(MYSQLI_REPORT_STRICT | MYSQLI_REPORT_ALL);
  4. $mysqli = new mysqli('localhost', 'root', 'contraseña','seguridad');
  5.  
  6. if($mysqli->connect_errno){
  7.    die('error db');
  8. }
  9.  
  10.  
  11. if(!empty($_GET['id'])){
  12.  
  13.    // con (int) te aseguras que manejas un integro.
  14.    $id = (int) $_GET['id'];
  15.  
  16.    // sentencia preparada
  17.    $query = "SELECT text,title FROM news where id=?";
  18.  
  19.    try {
  20.  
  21.        $stmt = $mysqli->prepare($query);
  22.        $stmt->bind_param('i', $id); // i de integer.
  23.        $stmt->execute();
  24.        $result = $stmt->get_result();
  25.        $stmt->close();
  26.  
  27.  
  28.        // Si la consulta devuelve 1 o más resultados...
  29.        // recogemos el resultado.
  30.  
  31.        if($result->num_rows > 0){
  32.            $result = $result->fetch_assoc();
  33.        } else {
  34.            $result = false;
  35.        }
  36.  
  37.    // Si hay error en la consulta...
  38.    } catch(Exception $e){
  39.        die('Error con la consulta -> '. $e->getMessage());
  40.    }
  41.  
  42.  
  43.    // Resultado.
  44.    if($result){
  45.        print_r($result);
  46.    } else {
  47.        echo 'No hay resultados.';
  48.    }
  49.  
  50. } else {
  51.    echo 'Haga una consulta al ID.';
  52. }
  53.  


Referencias:
http://php.net/manual/es/mysqli.prepare.php
http://php.net/manual/es/language.types.integer.php (#Conversión de numeros a enteros).
http://php.net/manual/en/mysqli-stmt.bind-param.php
http://php.net/manual/es/mysqli-stmt.get-result.php
http://php.net/manual/es/class.exception.php

Saludos
« Última modificación: 23 Agosto 2018, 01:45 am por #!drvy » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No es vulnerable? « 1 2 »
Nivel Web
bizco 10 6,469 Último mensaje 7 Septiembre 2010, 16:58 pm
por bizco
Codigo JS en router ClearAcess, vulnerable?
Java
CloudswX 0 2,201 Último mensaje 7 Septiembre 2011, 05:26 am
por CloudswX
AYUDA - Subir avatar con código php (Foro vulnerable)
Nivel Web
Ch3z7er 0 2,157 Último mensaje 18 Noviembre 2013, 08:15 am
por Ch3z7er
¿Es vulnerable a SQL Injection este código?
PHP
romerixo 6 4,358 Último mensaje 26 Septiembre 2014, 22:44 pm
por Yaldabaot
Web vulnerable a XSS
Nivel Web
llAudioslavell 9 4,640 Último mensaje 3 Enero 2015, 07:42 am
por dimitrix
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines