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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [54] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 ... 455
531  Programación / Programación C/C++ / Re: Crear un Programa en C que almacene N datos en un arreglo en: 19 Octubre 2018, 03:48 am
No sale mas fácil hacer un redimensionado de memoria utilizando memcpy() o malloc() de stdlib.h para c y prevenir los desbordamientos?
532  Programación / Java / Re: [Ayuda]Problema al querer leer JSON hecho PHP desde Java en: 19 Octubre 2018, 03:32 am
Mira, he limpiado un poco tu código para solucionar algunos problemas:

Código
  1. <?php
  2.  
  3. class Wservice
  4. {
  5.    private $status;
  6.    private $mysql_data;
  7.    private $mysql_handler;
  8.  
  9.    public function __construct()
  10.    {
  11.        $this->mysql_data = array(
  12.            'host'     => '127.0.0.1',
  13.            'dbname'   => 'test2',
  14.            'user'     => 'root',
  15.            'password' => ''
  16.        );
  17.  
  18.        $this->mysql_handler = new mysqli(
  19.            $this->mysql_data['host'],
  20.            $this->mysql_data['user'],
  21.            $this->mysql_data['password'],
  22.            $this->mysql_data['dbname']
  23.        );
  24.  
  25.        if($this->mysql_handler)
  26.        {
  27.            $this->status = 1; // Success
  28.        }
  29.        else
  30.        {
  31.            $this->status = -1; // Unable connect to database
  32.        }
  33.    }
  34.  
  35.    public function __destruct()
  36.    {
  37.        // Close connection
  38.        if($this->mysql_handler)
  39.        {
  40.            $this->mysql_handler->close();
  41.        }
  42.    }
  43.  
  44.    private function getData()
  45.    {
  46.        $data = array();
  47.  
  48.        $result_handler = $this->mysql_handler->query('
  49.            SELECT *
  50.            FROM usuarios -- Plural!
  51.            -- LIMIT ???? Exhaust memory vulnerability!
  52.        ');
  53.        if($result_handler)
  54.        {
  55.            while($row = $result_handler->fetch_assoc())
  56.            {
  57.                $data[] = $row;
  58.            }
  59.  
  60.            $result_handler->free();
  61.        }
  62.        else
  63.        {
  64.            $this->status = -2; // Query fail
  65.        }
  66.  
  67.        // query fail? return a empty array (prevent exceptions in java)
  68.        return $data;
  69.    }
  70.  
  71.    public function out()
  72.    {
  73.        // Set the content type
  74.        header('Content-type: application/json');
  75.  
  76.        // Prevent cache
  77.        header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
  78.        header('Cache-Control: post-check=0, pre-check=0', false);
  79.        header('Pragma: no-cache');
  80.  
  81.        // Get required data
  82.        $data = $this->getData();
  83.  
  84.        // Out the data and status
  85.        echo json_emcode(array(
  86.            'status' => $this->status,
  87.            'data'   => $data
  88.        ));
  89.    }
  90. }
  91.  
  92. $wservice = Wservice();
  93. $wservice->out();

El estado 1 indica que todo resultó ok, el -1 es porque falló la conexión a la base de datos y -2 es porque falló la consulta a la base de datos.

Recuerda darle un límite a tu consulta sql, porque si hay un millón de usuarios no podrás devolver un json con un millón de registros. Averigua sobre técnicas de scafollding, eso quiere decir que sería bueno que hagas un servicio rest para buscar un solo usuario, buscar varios usuarios con un límite (buscador), uno que elimine el usuario y otro que edite sus datos, ese orden te ayudará mucho en tu proyecto con separación de capas (como veo que lo estás haciendo). También te ayudaría mucho el uso de microservicios utilizando docker para aumentar la escalabilidad de tu proyecto ya que veo que has separado las funcionalidades en servicios rest independientes.

Recuerda desactivar los mensajes de error de php o si no cuando falle algo te arrojará un warning en html dentro de una cabecera json y todo estallará y volará por los aires destruyendo todo a su paso xD

Saludos.
533  Programación / Java / Re: [Ayuda]Problema al querer leer JSON hecho PHP desde Java en: 19 Octubre 2018, 02:54 am
Hola, mira:


Pegando el código json:
Código:
{"0":{"0":"1","id":"1","1":"user1","usuario":"user1","2":"asd","contrasenia":"asd"},"1":{"0":"2","id":"2","1":"user2","usuario":"user2","2":"dsa","contrasenia":"dsa"}}

Acá: http://json.parser.online.fr/

Citar
SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 168 of the JSON data

He copiado exactamente tu código y me he dado cuenta que hay un caracter especial invisible al final que está haciendo que el código json sea corrupto, especiifcamente son 3 bytes: %EF%BB%BF.

Código:
whk@machine:~$ echo '{"0":{"0":"1","id":"1","1":"user1","usuario":"user1","2":"asd","contrasenia":"asd"},"1":{"0":"2","id":"2","1":"user2","usuario":"user2","2":"dsa","contrasenia":"dsa"}}' | xxd
00000000: 7b22 3022 3a7b 2230 223a 2231 222c 2269  {"0":{"0":"1","i
00000010: 6422 3a22 3122 2c22 3122 3a22 7573 6572  d":"1","1":"user
00000020: 3122 2c22 7573 7561 7269 6f22 3a22 7573  1","usuario":"us
00000030: 6572 3122 2c22 3222 3a22 6173 6422 2c22  er1","2":"asd","
00000040: 636f 6e74 7261 7365 6e69 6122 3a22 6173  contrasenia":"as
00000050: 6422 7d2c 2231 223a 7b22 3022 3a22 3222  d"},"1":{"0":"2"
00000060: 2c22 6964 223a 2232 222c 2231 223a 2275  ,"id":"2","1":"u
00000070: 7365 7232 222c 2275 7375 6172 696f 223a  ser2","usuario":
00000080: 2275 7365 7232 222c 2232 223a 2264 7361  "user2","2":"dsa
00000090: 222c 2263 6f6e 7472 6173 656e 6961 223a  ","contrasenia":
000000a0: 2264 7361 227d 7def bbbf 0a              "dsa"}}....

ef bbbf, el 0a es el salto de línea que hace echo en el bash.

Estos tres bytes corresponden a la cabecera de una codificación de carácteres de utf-8 con bom, el cual no es compatible con json, solo es compatible con utf-8 simple.

Tu código php o tu clase en java está agregando mas bytes de los que corresponden. Normalmente puedes solucionarlo haciendo un substring eliminando los últimos 3 carácteres, pero en ves de eso te recomiendo buscar la fuente que está generando esos bytes y los elimines.

Como tip: puedes utilizar la palabra "contraseña" con eñe, siempre y cuando esté codificado en utf-8.

¿Donde están escrito esos bytes?: Esos bytes son de cabecera de archivo, probablemente estés utilizando un editor de texto el cual configuraste utf-8 con bom, eso debes cambiarlo a utf-8 simple, segundo... si es una cabecera de archivo ¿porqué aparece al final del json?: probablemente porque después de arrojar el código json hace algún tipo de inclusión a un archivo php el cual tiene esos caracteres basura al comienzo del script antes de la apertura del tag, por ejemplo:

app.php
Código:
<?php ... mostrar_json(); ... include('dañado.php');

dañado.php
Código:
%EF%BB%BF<?php mi código acá ...

Eso pasa mucho al no considerar la codificación de caracteres en un proyecto. Búsca en todos tus archivos de php y desde el mismo editor reemplaza la codificación a utf-8 y aparecerán caracteres basura antes de las etiquetas php, es un trabajo de limpieza que tendrás que hacer si es el caso y de pasada ir reemplazando los acentos y eñes.

Nota: Te has fijado que en tu mismo código php que has pegado en tu post, al final aparece esto?: "&#65279;", ¿qué hace ahi?, claramente el foro lo ha escapado automáticamente, pero es un caracter especial que se encuentra en tu código php.

Recomendación adicional: Si utilizas un script en php que no va a utilizar código html, como es tu caso, entonces no escribas el cierre de etiqueta, elimina las últimas líneas de tu script y ya, php solo necesita el tag de apertura, no el de cierre, eso evita muchos problemas con el escape de bytes sobrantes y el orden del envío de cabeceras http v/s el body.

También te recomiendo que tu código java sea capaz de saber si no se puede conectar al servicio, si el json es corrupto, si los datos no son correctos, etc.

Otras recomendaciones adicionales:

Código:
mysql_select_db($nombre_bd, $conexion) or die ("xD");

Acá debiera retornar código json indicando el estado fallido de la obtención de datos, sino, cómo sabrá tu código java que hubo un problema?, tendrías que procesar múltipes tipos de cabeceras. Recuerda arrojar una cabecera de tipo application/json:

Código:
header('Content-type: application/json; charset=utf-8');

También he visto que usas datos numéricos como llaves de objetos, cómo sabrás la cantidad y tipo?, en ves de eso te recomiendo que los transformes en arrays y nunca valores numéricos como llaves de objetos, eso lo vas a lograr eliminando la propiedad "JSON_FORCE_OBJECT" de tu json_encode. Si deseas transformar tu array de datos a un objeto manualmente puedes hacer esto:

Código:
$array[$i] = (object)$row;

Y te va a resultar mucho mejor la asociación de llaves si usas mysql_fetch_assoc.

Otra cosa, recuerda utilizar mysqli en ves de mysql y tener instalada tu librería mysqlnd.

Ahora si, saludos.
534  Seguridad Informática / Hacking Wireless / Re: Importancia de vulnerabilidades en redes LAN en: 18 Octubre 2018, 22:48 pm
Hola amigo como estás, absurdo es el que se queda con la duda sin preguntar, nadie nace sabiendo todas las cosas, hace mucho tiempo también me tocó hacer una infinidad de preguntas que por muy básicas que fueran me han servido mucho.

Hay dos maneras de hacer esto, utilizando procedimientos con un buen checklist o hacer todo según el criterio propio utilizando una buena base de conocimientos.

Ambas maneras son efectivas pero te llevan a caminos distintos. Una de las cosas importantes que consideraría en una revisión de seguridad dentro de una red wifi (entendiendo que ya estás conectado) es visualizar mentalmente cómo está conectado todo, por ejemplo... debe haber un punto de acceso que sirve el wifi, este a su ves puede estar repitiendo y llegar a un appliance (una caja de 1u que da wifi), por ejemplo un wifi controller el cual puede tener un portal cautivo, de ahi para tener acceso a la red o internet debe estar conectado a un firewall y este a su ves a switches y computadores o servidores.

Normalmente una red puede estar separada de manera física o lógica, esto quiere decir que un controlador wifi puede estar conectado al mismo equipo que le da acceso a la red de los computadores y servidores (o sea, todos conectados al mismo lugar por cables), pero internamente crea redes virtuales y a cada uno le asigna permisos de acceso, por ejemplo para que un pc no se pueda conectar a un servidor o alguien desde el wifi no se conecte a los pc de la red (zonas DMZ, etc).

En este caso lo más lógico es buscar credenciales por defecto y vulnerabilidades a los puntos críticos de la red y estos son los puntos de acceso o controladores de wifi, accediendo a ellos será mas facil acceder a todos los demás equipos y revisar si alguno tiene carpetas compartidas, existe un controlador ldap, etc.

Las herramientas como nmap y msf son solo herramientas, la mayor parte del buen trabajo lo hará tu cerebro, asi que mientra más información tengas de lo que quieras revisar, más efectivo va a ser tu resultado.

Te recomiendo que le des un vistazo a temas sobre como funcionan las redes y servicios, infraestructura, etc, así como le has dedicado tiempo para aprender a usar nmap, de esta manera podrás tener mejores resultados y saber por ejemplo si tu escaneo está siendo bloqueado o necesitas evadir algunas reglas de red.

saludos.
535  Sistemas Operativos / GNU/Linux / Re: Problema simple en: 16 Octubre 2018, 01:47 am
Hola, depende de que quieras hacer, una red nat en virtualbox no da ip erronea, es una interfaz de red de virtualbox, por algo es una red nat, quiere decir que debajo de tu virtualbox hay otra red que se engancha de la tuya.

No debieras tener problemas con tener acceso a internet.

Si lo que quieres es poder conectarte por ejemplo por ssh desde tu pc a kali, debes utilizar una red nat y configurar el reenvío de puertos en la sección de configuraciones de red, debes reenviar el puerto 22 hacia 2222 por ejemplo y ahora podrás conectarte vía ssh así: ssh root@localhost -p 2222

Saludos.
536  Programación / Programación General / Re: [AYUDA] ¿Cómo hacer este código más eficiente? en: 16 Octubre 2018, 00:47 am
Creo que lo que buscas es esto:

537  Foros Generales / Foro Libre / Re: Descubren el segundo ‘cerebro’ humano, que se ubica al final del intestino en: 15 Octubre 2018, 23:33 pm
Suena muy interesante... hay alguna fuente real?
538  Programación / Programación General / Re: Necesito ayuda con recursividad por favor en: 15 Octubre 2018, 23:18 pm
Fácil, en algunos lenguajes como php puedes redimensionar un array sin tener que mover la memoria, por ejemplo:

Código:
$abc = array();
$abc[] = 'valor 1';
$abc[] = 'valor 2';
$abc[] = 'valor 3';

En este caso tendrás un arreglo de 1 dimensión con un tamaño de 3.

Recursivamente, puedes crear una función que agregue un valor a la pila del arreglo y que luego se llame a si mismo, pero tendrás problemas de desbordamiento de pila si no le das un límite y esto sucede en cualquier tipo de lenguaje de programación. También te recomiendo dar pausas de 1 segundo entre cada llamada recursiva e ir imprimiendo la cantidad de valores de la pila:

Código:
<?php
$abc = array();
function add()
{
    global $abc;
    $abc[] = null;
    echo len($abc)."\n";
    sleep(1);
    add();
}
add();

Ahora que entiendes la idea, si necesitas hacerlo en otro lenguaje de programación, sea java, c, c++, c#, etc, necesitarás comprender el código y llevarlo a tu programa.

Saludos.
539  Foros Generales / Noticias / Re: Qué es .page, el nuevo nombre de dominio de Google que es seguro por defecto en: 5 Octubre 2018, 20:27 pm
Hay varios dominios que exigen ssl, por ejemplo los .app
540  Foros Generales / Noticias / Re: ¿El mayor caso de espionaje tecnológico de la historia? China ha estado ...o en: 5 Octubre 2018, 19:40 pm
Este tipo de técnicas ya es bastante antiguo, solo que ahora les están dando mas énfasis. Cerca del año 2004 me habian contado como dejar backdoor en el driver del lector de cd.
Páginas: 1 ... 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [54] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 ... 455
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines