Autor
|
Tema: duda sobre reto hacking en dvwa: stripslashes() (Leído 13,015 veces)
|
tecasoft
Desconectado
Mensajes: 319
Ciberseguridad tecasoft.com
|
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.phphttp://php.net/manual/es/function.stripslashes.php<?php if (isset($_GET['Submit'])) { // Retrieve data $id = $_GET['id']; $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"; $i=0; while ($i < $num) { echo '<pre>'; echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last; echo '</pre>'; $i++; } } } ?>
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 pm 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
|
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 pm por Shell Root »
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
tecasoft
Desconectado
Mensajes: 319
Ciberseguridad tecasoft.com
|
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
Desconectado
Mensajes: 7.029
No estoy loco, soy mentalmente divergente
|
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
Mensajes: 319
Ciberseguridad tecasoft.com
|
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:.
|
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)
|
|
|
|
WHK
|
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: <?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í: -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: <?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 am por WHK »
|
En línea
|
|
|
|
WHK
|
Por otro lado: https://github.com/ethicalhack3r/DVWA/blob/master/vulnerabilities/sqli/source/high.php<?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<?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 am por WHK »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Tengo una duda existencial sobre hacking wireless
Hacking Wireless
|
Milo_de_Indetectables
|
1
|
2,633
|
5 Octubre 2010, 16:29 pm
por ChimoC
|
|
|
[Duda] Definiciones sobre Hacking, Cracking, etc
Dudas Generales
|
Soul Assassin
|
0
|
2,763
|
25 Noviembre 2010, 19:55 pm
por Soul Assassin
|
|
|
Reto hacking web
Desafíos - Wargames
|
awesome13
|
3
|
6,196
|
27 Junio 2011, 07:04 am
por SebastiánBass
|
|
|
Duda sobre hacking
Dudas Generales
|
ErosD
|
1
|
2,153
|
19 Agosto 2013, 20:26 pm
por crazykenny
|
|
|
duda de explotacion DVWA command execution
Bugs y Exploits
|
yonx
|
2
|
4,258
|
16 Abril 2023, 07:50 am
por LlopoRobot
|
|