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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18
131  Programación / PHP / Fuerza bruta método POST [PHP] en: 31 Diciembre 2013, 16:35 pm
Hola buenas. Os explico...

Tenemos una base de datos, dónde hay un usuario llamado Aitor. Dicho usuario tiene una contraseña comprendida entre el 0 y el 10. Se utiliza el método POST... Ahora bien, yo creo un diccionario.

Código:
01
02
03
04
...
10

Ahora bien, la pregunta del millon, ¿cómo narices haces para que el archivo.text se inserte en el formulario?

Para no hacer nada ilegal, yo tengo montado un servidor de apache en el cuál tengo montado lo siguiente;

BruteForce.html
Código
  1. <html>
  2. <head><title>BruteForce</title></head>
  3. <body>
  4. <form method="post" action="BruteForce.php">
  5. <input type="text" name="user" /><br />
  6. <input type="password" name="password" /><br />
  7. <input type="submit" value="Log in" />
  8. </form>
  9. </body>
  10. </html>
  11.  

BruteForce.php
Código
  1. <?php
  2.  
  3. $user = $_POST['user'];
  4. $password = $_POST['password'];
  5.  
  6. if(isset($user) && strlen($user)>0 &&
  7. isset($password)&& strlen($password)>0) {
  8.  
  9. try {
  10.    $con = new PDO('mysql:host=localhost;dbname=bruteforce', "root", "XXXXXXX");
  11.    $return = $con->query("SELECT PASSWORD FROM BruteForce WHERE USER = '$user'")->fetchColumn();
  12. if($return==false){
  13. echo "El usuario no se encontró en la base de datos.";
  14.  
  15. }else if($return !== $password){
  16.  
  17. echo "Contraseña incorrecta";
  18.  
  19. }else if($return === $password){
  20.  
  21. $_SESSION['user'] =  $user;
  22. echo "Contraseña correcta";
  23. header("Location:start.php");
  24.  
  25. }}catch (PDOException $e) {
  26.  
  27.    print "Error!: " . $e->getMessage() . "<br/>";
  28.  
  29.    die();
  30. }}else{
  31.  
  32. echo "Campos vacios";
  33. }
  34.  

Start.php
Código
  1. <?php
  2.  
  3. if(isset($_SESSION['user'])){
  4.  
  5. echo "Welcome " . $_SESSION['user'] . "<br><a href=close.php>Log out </a><p></p>";
  6. }else{
  7.  
  8. echo "Esto lo ves si no iniciaste sesión";
  9. }
  10.  
  11. ?>
  12.  

Close.php
Código
  1. <?php
  2. header("Location:start.php");
  3.  
  4. ?>
  5.  

Como podéis observar es un formulario con dos cajas de texto y un submit, que pasa los datos a una página PHP, que conecta con una base de datos.

Si lo escrito en el formulario coincide con lo que hay en la base de datos entonces entras en la sesion.

La base de datos tiene lo siguiente:

Código:
ID ||   USER || PASSWORD ||
----------------------------------
1   || Aitor || 8       ||
----------------------------------
2   || Admin || 10      ||
----------------------------------

Quizá me estoy complicando demasiado y para hacer una prueba bastaría con un

Formulario.html
Código
  1. <html>
  2. <head><title>BruteForce</title></head>
  3. <body>
  4. <form method="post" action="Comprobacion.php">
  5. <input type="text" name="user" /><br />
  6. <input type="password" name="password" /><br />
  7. <input type="submit" value="Log in" />
  8. </form>
  9. </body>
  10. </html>
  11.  

Comprobacion.php
Código
  1. <?php
  2.  
  3. $user = $_POST['user'];
  4. $password = $_POST['password'];
  5.  
  6. if($user === "Aitor" && $password == 10){
  7.    echo "Correcto";
  8. }else{
  9.    echo "Incorrecto";
  10. ?>
  11.  

Sea como fuere, esto lo pregunté hace tiempo (cuando apenas sabía php). y la respuesta fue;

Citar
para hacer un script que crackee el login, teniendo el campo de usuario y clave, necesitas, identificar el método por el cual se envían los campos (GET o POST) ahí ya te vas haciendo la idea...

Ahora la pregunta sería más bien.

  • ¿Qué lenjuage necesitaría usar?
  • ¿Podríais darme algún ejemplo?
  • ¿Existe algún programa que haga esta función?

Un saludo y gracias.

132  Foros Generales / Dudas Generales / Re: ¿Cuál es la edad mínima para tener un blog? en: 30 Diciembre 2013, 12:10 pm
Y si en AdSense pongo el nombre y cuenta de mis padres (también tengo yo mismo cuenta bancaria, por si sirve de algo) y en el blog y correo el mio, podrían detectar algo o no dejarme utilizar AdSense?

Muchas gracias.

Yo diría que no ponen pegas, al fin y al cabo les estás saliendo beneficioso. Aún así deberías hablarlo con tus padres si no lo has hecho ya, son temas algo 'serios.' de todas formas, la fecha de nacimiento con la que te registraste en el blog debería ser editable.

Saludos.
133  Programación / PHP / Re: Mysql, Php, pdo y goto. en: 30 Diciembre 2013, 10:57 am
PDO fetchColumn():  Devuelve una única columna, de la siguiente fila de un conjunto de resultados, siempre retorna una sola columna y es la primera columna(NOMBRE).

Código
  1. $prueba = $con->query("SELECT * from pruebas WHERE USER = '$usuario'")->fetchColumn(1); // Puede aceptar un parametro para mostrar otra columna...
  2.  

Si ques obtener la fila completa podes utilizar fetch()
http://www.php.net/manual/es/pdostatement.fetch.php

Si queres obtener mas de una fila podes utilizar fetchall()
http://www.php.net/manual/es/pdostatement.fetchall.php

Creo que asi es... sino corrijanme vengo muy insolado por el sol.  ;D

Perfecto, esta mañana al levantar me preguntaba si podría aceptar parámetros

Muchas gracias por la ayuda a todos. ;P
134  Programación / PHP / Re: Mysql, Php, pdo y goto. en: 29 Diciembre 2013, 17:17 pm
En esos casos tenes que saber que valor tiene $prubea, en este es un objeto y siempre va a ser valido.

Código
  1. $usuario = $_POST['user'];
  2.  
  3. try {
  4.    $con = new PDO('mysql:host=localhost;dbname=pruebas', "root", "XXXXXXXXXX");
  5.  
  6.    $prueba = $con->query("SELECT * from pruebas WHERE USER = '$usuario'")->fetchColumn(); // Solo necesitas saber si existe o no, fetchColumn retornara algo si exite en caso contrario no
  7.    if ($prueba){  // Con eso es suficiente
  8.  
  9.        echo "El nombre de usuario ya existe.";
  10.  
  11.    }else{
  12.  
  13. $con->query("INSERT INTO pruebas (ID,USER) VALUES ('','$usuario')");
  14.        echo "Cuenta creada";
  15.  
  16.        $gbd = null;
  17.    }
  18. } catch (PDOException $e) {   // Si utilizar try debes utilizar catch en este caso se usa para saber si realizo la conexion a la base de datos
  19.        echo 'No se pudo conectar: ' . $e->getMessage();
  20. }
  21.  
  22. // Más código bla bla bla.
  23.  

fetchColumn()
http://es.php.net/manual/en/pdostatement.fetchcolumn.php

Gracias, funciona a la perfeción, aunque sigo sin entender, porque al no encontrar un resultado, no retorna false, como con fetchColumn().

A proposito, según el manual de PDO fetchColumn()  Devuelve una única columna de la siguiente fila de un conjunto de resultados. No comprendo muy bien, pues he estado haciendo pruebas, y siempre devuelve datos de la primera columna, me explico.

Ejemplo de la base de daatos;

Código
  1.  
  2. // Nombre de la base de datos, pruebas, nombre de tabla pruebas01
  3.  
  4.  
  5. NOMBRE |  USER | EMAIL                           | CP
  6. _______________________________________
  7. Aitor       | mr9    | ejemplo@example.es   |40401
  8. _______________________________________
  9. Shiro      | shr3   | fuego@fuego.es           |78787
  10.  
  11. [table][td][/td][/table]
  12.  
Código
  1. $prueba = $con->query("SELECT * from pruebas01 WHERE user ='mr9'")->fetchColumn();
  2.  
  3. echo $prueba;
  4.  

Devuelve Aitor.

Código
  1. $prueba = $con->query("SELECT * from pruebas01 WHERE user ='shr3'")->fetchColumn();
  2.  
  3. echo $prueba;
  4.  

Devuelve shiro.

Código
  1. $prueba = $con->query("SELECT * from pruebas01 WHERE email ='ejemplo@example.es'")->fetchColumn();
  2.  
  3. echo $prueba;
  4.  

Devuelve Aitor.

Como podéis ver siempre devuelve de la columna Name, y según
http://es1.php.net/manual/es/pdostatement.fetchcolumn.php

No debería ser así, o al menos así lo entiendo.

Como nota final, si utilizas PDO o MySQLi utiliza sentencias preparadas.
http://at1.php.net/manual/es/pdo.prepared-statements.php

Saludos

Lo estoy echando un vistazo, gracias por el detalle.

Y de nuevo, gracias a los dos.

Un saludo.
135  Programación / PHP / Re: Mysql, Php, pdo y goto. en: 29 Diciembre 2013, 15:14 pm
hay estas obteniendo tooodos los registros de la tabla lo que no es conveniente... existen clausulas en mysql para hacer una busqueda minuciosa y mas exacta.

Código
  1. SELECT *                                              //Seleccionar todo
  2. FROM tabla_usuarios                                   //de tabla_usuarios
  3. WHERE nombre = 'Aitor';                               //donde el nombre sea igual a ...
  4.  



Código
  1.  
  2. $usuario = $_POST['user'];
  3.  
  4. try {
  5.    $con = new PDO('mysql:host=localhost;dbname=pruebas', "root", "XXXXXXXXXX");
  6.  
  7. $prueba = $con->query("SELECT * from pruebas WHERE USER = '$usuario'");
  8.   if ($prueba == true){
  9.  
  10. echo "El nombre de usuario ya existe.";
  11.  
  12. }else{
  13.  
  14. $con->query ("INSERT INTO pruebas (ID,USER) VALUES ('','$usuario')");
  15.  
  16. echo "Cuenta creada";
  17.  
  18.    $gbd = null;
  19. }
  20.  
  21. // Más código bla bla bla.
  22.  

Se supone que cuando la consulta que realizo, encuentra datos ('Select * from pruebas where user = "$usuario"');

debería retornar falso, cuando no se encuentra y true cuando se encuentra, pero por alguna razón, indepentientemente de si el usuario está en la base de datos, entra en el if. es decir, siempre retorna true, aunque no lleve ningún valor...

¿A qué se debe? ¿Qué hago mal?
136  Programación / PHP / Mysql, Php, pdo y goto. en: 29 Diciembre 2013, 02:01 am
Buenas, hasta hace unos días usaba mysql la sintaxis que está obsoleta para PHP. No obstante al leer la documentación que php.net ofrece informaba de que en un futuro, sería eliminado de Php. Y que quedaban como alternativa a ésta, dos opciones. o Mysqli o PDO. Dado que según lo que he leido, y he entendido, Mysqli sólo sirve para bases de datos Mysql, y si en algún momento, decidia cambiar de base de datos, me tocaría cambiar todo el script, cosa que con PDO no.

Finalmente decidí aprender (o hacer intento de aprender) PDO.  Así pues, intenté traducir los scripts que ya tenía, a PDO como buenamente pude.

Total, al grano... yo tenía este script.

Código
  1.  
  2. $con=mysql_connect($host,$user,$pw)or die("Problems with servers. ");  
  3. // Conecta con mysql
  4.  
  5. mysql_select_db($db,$con)or die ("Problems with Data Base");  
  6. // Conecta con la base de datos.
  7.  
  8. $sel=mysql_query("SELECT USER FROM registro",$con);
  9. // Seleciona la columna user.
  10.  
  11. $sesion=mysql_fetch_array($sel);
  12. // Lo almacena en un array.
  13.  
  14. $user = $_POST['user']; // Se almacena en la variable '$user' lo escrito en el formulario anterior.
  15. $userB = $sesion['USER']; // Se almacena en la variabe '$userB' toda la columna user.
  16.  
  17. do { // Ciclo do while
  18.  
  19. $DATO = $sesion['USER']; // Recorre el array
  20.  
  21. }
  22.  
  23. while($sesion= mysql_fetch_array($sel) or $dato === $user); // Hasta que no retorne falso o $dato sea igual a $user no se rompe el ciclo.
  24.  
  25.  
  26. if($user === $DATO){ // Comprueba si la variable user TIENE un valor IGUAL y es del mismo tipo de variable que alguna de las filas de la columna USER.
  27. echo "El usuario ya existe"; // Si la comprobacion retorna True imprime por pantalla que el Usuario existe.
  28.  
  29. }else{
  30.  
  31. // Código si no se cumple la condición bla bla bla...
  32.  
  33. }
  34.  

No obstante, en PDO me atasque, pues no sabía como comparar para saber si el usuario ya existia. Intenté con do while, pero no dejaba argumentando que estaba tratando con arrays y no con strings.

Asi pues la solución más simple, era poner un if en el foreach que fuese recorriendo uno a uno todos los arrays y los comparase. Y una vez los comparase dependiendo del resultado hacer un salto (con salto me refiero a un goto) o seguir con el código.

Código
  1. <?php
  2.  
  3.  
  4. try {
  5.    $con = new PDO('mysql:host=localhost;dbname=pruebas', "root", "XXXXXXX");
  6.    foreach($con->query('SELECT * from pruebas') as $fila) {
  7.  
  8.  
  9. if($fila['USER'] == "Aitor"){
  10.  
  11. goto SALTAR;
  12. }
  13.  
  14.  
  15.    }
  16.  
  17.  
  18.  
  19.  $con->query ("INSERT INTO pruebas (ID,USER)
  20. VALUES ('','Aitor')");
  21.  
  22.  
  23.    $gbd = null;
  24. } catch (PDOException $e) {
  25.    print "¡Error!: " . $e->getMessage() . "<br/>";
  26.    die();
  27. }
  28.  
  29. SALTAR:
  30. echo "Ya existe el usuario";
  31. ?>
  32.  
  33.  

Como podéis ver no es la misma tabla ni base de datos, pero el funcionamiento es el mismo.

No obstante, a lo que quiero llegar, es que seguramente hay una forma más 'fácil' o corta, de comprobar si el usuario que se va a registrar ya esta en la base de datos. Y no tenga que usar el goto para saltarme el codigo en caso de que la comprobación sea correcta.

Un saludo y gracias.
137  Programación / PHP / Re: Cursos gratuitos y de pago PHP en: 28 Diciembre 2013, 13:59 pm
Aprende PHP a fondo y cuando lo domines toma la certificación Zend.

http://www.zend.com/services/certification/php-certification/

Saludos

Uh! Ya se me había olvidado este tema que yo mismo cree.

Estuve mirando sobre lo que me comentabas de zend, me gustaría sacarme la certifiación zend pero tocará prácticar muchísimo más PHP e inglés.

Así, como dato adicional, para los que sois de España, y querráis hacer el examen, recordad que solo está (por lo que he leido) en Salamanca y Madrid, y el examen es en inglés. De todas formas informaos mejor.

Un saludo y gracias.
138  Programación / PHP / Re: ayuda con auditoria php en: 27 Diciembre 2013, 19:51 pm
Querras decir que te lo solucionaron en otros 2 foros... espero que sea por un trabajo de la secundaria y que no sea por un trabajo que intentes cobrar dinero por esto   ;).

A pruebas me remito Click aquí

esta bien no me ayudes, es para un trabajo que me mandaron hacer no puedo ponerme a estudiar desde cero porque no me daria tiempo, ya se que ese no es tu problema...nadie te obliga a ayudarme....

Y me parece aún más despreciable que intentes dar pena con lo anteriormente citado. (O al menos esa es mi impresión)

Si quieres que te hagan la tarea, me temo que este no es el lugar adecuado, vuelve cuando estés interesado en aprender. Y como te han dicho, esperemos que sea un trabajo de escuela, y no un trabajo en el que te pagen por ello.

Un saludo... >:(

139  Programación / Desarrollo Web / Re: escriba como escriba el codigo no va en: 26 Diciembre 2013, 18:10 pm
¿Has probado a usar Mysql desde la shell de ubuntu?

Hace tiempo que no tocó GNU/Linux, y cuando lo toqué no recuerdo haber usado MYSQL para trabajar, asique no puedo ayudarte.

Te diría eso, que probases si te funciona el poder insertar datos mediante la consola, o que pruebes a hacer updates o montar de nuevo el apache y todo el jaleo... Lamento no poder ayudarte la verdad.  :rolleyes:

¡Saludos!
140  Programación / PHP / Re: ayuda con auditoria php en: 26 Diciembre 2013, 16:08 pm
Hola otra vez Shitoman, he visto cantidades de temas creados por ti en el foro, de los caules, si no estoy equivocado, yo te he respondido dos. Como te ha dicho aquí arriba el compañero, son errores muy básicos, recuerda que uno de los temas a los que te contesté, o que al menos, leí, era sobre como introducir un condicional en php.

Y estoy seguro de habertelo dicho en al menos un tema de los dos a los que te respondí, intenta aprender por tu cuenta, pero empieza por lo bajo, no quieras correr sin saber andar, y si tienes dudas, te ayudamos a comprenderlas, no a resolverlas.. qué sentido tiene darte el código, más que hacer el trabajo, que sólo a ti, te pertenece...

Un saludo, y planteaate estudiar PHP desde 0...

www.php.net
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines