curl es un programa que nos permite transferir datos (o archivos) desde o hasta un servidor, a través de distintos protocolos (entre ellos HTTP, FTP, SCP, etc).

hackers usando curl para testear un SQL injection
Lo interesante (y lo más usado entre los code-monkeys de Easytech) es su uso para emular POSTs a ciertas URLs, sin tener que pasar por la página en el browser.
si no lo tienen, pueden bajarlo del link anterior, aunque tiene fama de estar en todos los repos de las distros conocidas.
En mi caso particular, curl me fue muy útil para hacer un POST a una de las webapps que desarrollamos, y poder chequear el XML que devolvía, sin complicaciones ni pasar por un web-browser.

un PM de Easytech le enseña a un junior a probar sus Forms con curl.
empecemos por lo más básico, emular un formulario. esto lo hacemos con curl -F, o curl -d (dependiendo del content-type que querramos usar). La sintáxis sería algo como:
curl -d "nombre_campo1=valor_campo1&nombre_campo2=valor_campo2&nombre_campoN=valor_campoN" url_a_donde_hacemos_el_post.com
Otro uso interesante es el de hacer upload de files, emulando un de un form html. La sintáxis:
curl -F "nombre_del_input=@path_al_file_a_subir" url_a_donde_hacemos_el_post.com
o…
curl -F "nombre_del_input=@path_al_file_a_subir;filename=nombre_del_file" url_a_donde_hacemos_el_post.com
… si queremos un nombre específico para el file.
Nótese que la arroba delante del path del file es obligatoria.
Claro que, lo que yo quería, era ver qué me devolvía la aplicación (en este caso es un upload de un file a un servidor que devolvía un XML con datos). Para hacer esto tenemos varias formas, u opciones, para pasarle al comando curl, como ser –verbose, –trace, o –trace-ascii. Cada una muestra distintas cosas, dependiendo lo que necesitemos. En mi caso, el servidor devolvía el XML con un simple fpassthru, para lo que trace-ascii venía perfecto.
La sintáxis, entonces, sería así:
curl –trace-ascii -F "nombre_del_input=@path_al_file_a_subir;filename=nombre_del_file" url_a_donde_hacemos_el_post.com
la aplicación recibió el file a uploadear como si de un form se tratase, y al devolver el XML, curl lo mostró por stdout. Ideal para debuggear desde la terminal en un servidor remoto o sin tener que pasar por la aplicación web.
Dicen por ahí que también es muy útil para testear vulnerabilidades en algunos sitios con poca validación de formularios, pero eso es demasiado oscuro para mí.

hacker sexy tipea un script con 2 joysticks.
Para ver más ejemplos, consulten acá o en el man de curl, por supuesto.