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


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits
| | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | |-+  duda sobre reto hacking en dvwa: stripslashes()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda sobre reto hacking en dvwa: stripslashes()  (Leído 5,583 veces)
tecasoft

Desconectado Desconectado

Mensajes: 290



Ver Perfil WWW
duda sobre reto hacking en dvwa: stripslashes()
« en: 15 Octubre 2016, 14:56 »

buenas no soy muy activo en este foro pero me gustaria aprender bastante mas de lo que se.

Estoy con un reto hacking de metasploitable2 en concreto en la parte a nivel web: sql injection me he saltado el nivel low y medium pero el high no.

En concreto me salto lo normal sin proteccion y el mysqli_real_escape_string, pero el nivel high me sale con mysqli_real_escape_string() y stripslashes() habria alguna forma de saltarse esto? es que llevo mas de 1 mes intentandolo pero nada

http://php.net/manual/es/function.mysql-real-escape-string.php

http://php.net/manual/es/function.stripslashes.php


Código
  1. <?php    
  2.  
  3. if (isset($_GET['Submit'])) {
  4.  
  5.    // Retrieve data
  6.  
  7.    $id = $_GET['id'];
  8.    $id = stripslashes($id);
  9.    $id = mysql_real_escape_string($id);
  10.  
  11.    if (is_numeric($id)){
  12.  
  13.        $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
  14.        $result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
  15.  
  16.        $num = mysql_numrows($result);
  17.  
  18.        $i=0;
  19.  
  20.        while ($i < $num) {
  21.  
  22.            $first = mysql_result($result,$i,"first_name");
  23.            $last = mysql_result($result,$i,"last_name");
  24.  
  25.            echo '<pre>';
  26.            echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last;
  27.            echo '</pre>';
  28.  
  29.            $i++;
  30.        }
  31.    }
  32. }
  33. ?>
  34.  

alguien que me heche un cable? y si pudiera saltarme el phpids del dvwa tambien, pues os lo agradeceria. Gracias o guiarme un poco como lo hariais. Estamos en contacto por aqui
« Última modificación: 17 Octubre 2016, 15:37 por tecasoft » En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
Shell Root
Colaborador
***
Desconectado Desconectado

Mensajes: 3.841



Ver Perfil WWW
Re: duda sobre reto hacking en dvwa: stripslashes()
« Respuesta #1 en: 19 Octubre 2016, 14:54 »

Buenas, aquí tuve una pregunta casi similiar a la que haces

:http://www.hackingwithphp.com/4/7/12/automatically-escaping-strings
:http://foro.elhacker.net/nivel_web/duda_con_reto_de_isql-t431291.0.html;msg2000724
:http://zeroknock.blogspot.com.co/2011/08/sql-injection-php-escaping-and-like.html
« Última modificación: 19 Octubre 2016, 14:57 por Shell Root » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
tecasoft

Desconectado Desconectado

Mensajes: 290



Ver Perfil WWW
Re: duda sobre reto hacking en dvwa: stripslashes()
« Respuesta #2 en: 16 Noviembre 2016, 23:55 »

ya veo por lo que parece solo puede sacar la version de la base de datos no? otra pregunta que funciones o patrones soleis utilizar vosotros para protegeros de sql injection y demas ataques a nivel web.

por lo que he podido ver el: ctype_digit se puede utilizar para numeros[0-9], que es mejor que is_numeric que te detecta codigo hexadecimal sino me equivoco.


tambien utilizo mysqli_real_escape_string para filtrar sentencias sql injection.

alguna mas que recomendeis? patrones? algo porfa que hoy estoy motivado jejej
En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
sirdarckcat
Aspirante a supervillano
Moderador Global
***
Desconectado Desconectado

Mensajes: 7.013


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Re: duda sobre reto hacking en dvwa: stripslashes()
« Respuesta #3 en: 17 Noviembre 2016, 02:38 »

No hay ninguna vulnerabilidad en ese código.

El stripslashes no importa mucho, lo que podrias saltarte es el mysql_real_escape_string en algunos casos (si el cliente cree que esta usando un charset y el servidor otro). Sin embargo, no creo eso es lo que pasa en ese nivel de dvwa.

Y de todas formas, incluso si la vulnerabilidad con el charset fuera explorable en ese servidor, no serviria porque verifican el $id con is_numeric(). No hay (segun yo) ninguna manera de saltarse eso.
En línea

tecasoft

Desconectado Desconectado

Mensajes: 290



Ver Perfil WWW
Re: duda sobre reto hacking en dvwa: stripslashes()
« Respuesta #4 en: 17 Noviembre 2016, 19:05 »

ok, gracias otra cosa que funciones de php podria utilizar para proteger mis aplicaciones ante sql injection:

1. mysqli_real_escape_string

2. ctype_digit.

y cuales podria mas utilizar? patrones? o algo? que mis usuarios puedan dejar comentarios por ejemplo en una web
En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.050


Ingeniería inversa / MASM


Ver Perfil WWW
Re: duda sobre reto hacking en dvwa: stripslashes()
« Respuesta #5 en: 17 Noviembre 2016, 19:30 »

ok, gracias otra cosa que funciones de php podria utilizar para proteger mis aplicaciones ante sql injection:

1. mysqli_real_escape_string

2. ctype_digit.

y cuales podria mas utilizar? patrones? o algo? que mis usuarios puedan dejar comentarios por ejemplo en una web

Podrías crear un universo de caracteres válidos, en donde el parámetro ingresado por el usuario es partido (split) para obtener cada uno de los caracteres y buscarlos en el arreglo (universo) de caracteres válidos, en caso de que se no se encuentre, no interactúa con la base de datos y logeas datos del atacante, saludos.
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
sirdarckcat
Aspirante a supervillano
Moderador Global
***
Desconectado Desconectado

Mensajes: 7.013


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Re: duda sobre reto hacking en dvwa: stripslashes()
« Respuesta #6 en: 21 Noviembre 2016, 09:18 »

Prepared Statements

http://www.w3schools.com/php/php_mysql_prepared_statements.asp

 
En línea

WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.800


The Hacktivism is not a crime


Ver Perfil WWW
Re: duda sobre reto hacking en dvwa: stripslashes()
« Respuesta #7 en: 4 Diciembre 2016, 05:54 »

Pues todo depende de como esté hecha la consulta sql, por ejemplo si usas mysql_real_escape_string mas stripslashes en una consulta donde el valor es numérico, puedes inyectar con espacios en blanco sin usar comillas usando valores dword en hexadecimal.

Por ejemplo:
Código:
<?php $query = 'select * from users where id = '.mysql_real_escape_string(stripslashes($_GET['id']));

El valor numérico no está encerrado en comillas por lo cual puedes escapar así:
Código:
-1 union all select 1,2,@@version -- -

Y si te fijas, ninguno de los carácteres de la inyección necesitan ser escapados por lo cual te bypaseas todas las funciones juntas.

Pero como te dije antes, todo depende de la consulta sql, este es solo un posible escenario.

Otro escenario es que las funciones estén invertidas, por ejemplo:
Código:
<?php $query = 'select * from users where id = '.stripslashes(mysql_real_escape_string($_GET['id']));

En este caso stripslashes puede invalidar la secuencia de escape de mysql "\", por ejemplo, cuando insertamos una comilla, mysql lo asigna con backslash \', de esta manera queda escapado, pero si le eliminas el backslash entonces mysql_real_escape:string es invalidado y la inyección debiera pasar de manera simple y sin mayores problemas.

En php puedes dar como segundo argumento al mysql_real_escape_string el handler de la conexión mysql, digamos que la conexión esté configurada de manera dinámica según la codificación de caracteres entre el navegador y el servidor, entonces le pasas una cabecera en utf-7 y te bypaseas el filtro usando comillas.

Hay muchas maneras de evadir mysql_real_escape_string(), todo depende de como esté implementado.

Saludos.
« Última modificación: 4 Diciembre 2016, 06:06 por WHK » En línea

WHK
吴阿卡
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.800


The Hacktivism is not a crime


Ver Perfil WWW
Re: duda sobre reto hacking en dvwa: stripslashes()
« Respuesta #8 en: 4 Diciembre 2016, 06:18 »

Por otro lado:
https://github.com/ethicalhack3r/DVWA/blob/master/vulnerabilities/sqli/source/high.php

Código:
<?php
if( isset( $_SESSION [ 'id' ] ) ) {
// Get input
$id = $_SESSION[ 'id' ];
// Check database
$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;";
$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>Something went wrong.</pre>' );
// Get results
while( $row = mysqli_fetch_assoc( $result ) ) {
// Get values
$first = $row["first_name"];
$last  = $row["last_name"];
// Feedback for end user
$html .= "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
}
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}
?>

La inyección va en el id de sesión, supongo que en algún lado tendrás que modificar tu id de sesión para lanzar la inyección, pero por lo menos en ningún lado utiliza mysql_real_escape_string.

https://github.com/ethicalhack3r/DVWA/blob/master/vulnerabilities/sqli/session-input.php

Código:
<?php
define( 'DVWA_WEB_PAGE_TO_ROOT', '../../' );
require_once DVWA_WEB_PAGE_TO_ROOT . 'dvwa/includes/dvwaPage.inc.php';
dvwaPageStartup( array( 'authenticated', 'phpids' ) );
$page = dvwaPageNewGrab();
$page[ 'title' ] = 'SQL Injection Session Input' . $page[ 'title_separator' ].$page[ 'title' ];
if( isset( $_POST[ 'id' ] ) ) {
$_SESSION[ 'id' ] =  $_POST[ 'id' ];
//$page[ 'body' ] .= "Session ID set!<br /><br /><br />";
$page[ 'body' ] .= "Session ID: {$_SESSION[ 'id' ]}<br /><br /><br />";
$page[ 'body' ] .= "<script>window.opener.location.reload(true);</script>";
}
$page[ 'body' ] .= "
<form action=\"#\" method=\"POST\">
<input type=\"text\" size=\"15\" name=\"id\">
<input type=\"submit\" name=\"Submit\" value=\"Submit\">
</form>
<hr />
<br />
<button onclick=\"self.close();\">Close</button>";
dvwaSourceHtmlEcho( $page );
?>

Basta con enviar vía post data el id con inyección sql y listo.
« Última modificación: 4 Diciembre 2016, 06:20 por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reto hacking..
Desafíos - Wargames
MurdeR^^ 8 3,408 Último mensaje 3 Octubre 2007, 22:49
por HaDeS, -
Tengo una duda existencial sobre hacking wireless
Hacking Wireless
Milo_de_Indetectables 1 990 Último mensaje 5 Octubre 2010, 16:29
por ChimoC
[Duda] Definiciones sobre Hacking, Cracking, etc
Dudas Generales
Soul Assassin 0 1,181 Último mensaje 25 Noviembre 2010, 19:55
por Soul Assassin
Reto hacking web
Desafíos - Wargames
awesome13 3 3,955 Último mensaje 27 Junio 2011, 07:04
por SebastiánBass
Duda sobre hacking
Dudas Generales
ErosD 1 522 Último mensaje 19 Agosto 2013, 20:26
por crazykenny
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines