Foro de elhacker.net

Programacin => Desarrollo Web => Mensaje iniciado por: Vaagish en 5 Febrero 2014, 23:32 pm



Título: Como ver un request HTTP?
Publicado por: Vaagish en 5 Febrero 2014, 23:32 pm
Hola amigos,, quizas este no sea el lugar indicado,, pero ya no se como..

Alguien me puede decir como puedo armar un request? O como lo puedo ver? la idea es enviar un request a un servidor, el request tiene que enviar una imagen..


Título: Re: Como ver un request HTTP?
Publicado por: dRak0 en 5 Febrero 2014, 23:45 pm
Mira  , no te entendi muy bien , te respondo a lo que entendi. Conectate con el putty por el puerto 80 a donde queres hacer el request y listo... Supongo que sabras utilizar los comandos del protocolo http.


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 6 Febrero 2014, 00:08 am
Se,, es difcil hasta de buscar..

Explico.. estoy haciendo un programa en c++ que enva requests a un servidor,, luego tengo un PHP que lee esas request y devuelve determinados valores, o realiza determinadas tareas dependiendo del request,, una de las request tiene que ser enviar desde el programa c++ una imagen al servidor.. entonces se me ocurri simular que mi programa c++ esta enviado un formulario con la susodicha imagen,, luego en mi PHP la guardo con $_FILES.. etc etc..

No se manejar putty, pero si me decs que puedo "sniffar" el request (formulario) que sube la foto, yo seria muy feliz!

Saludos!!


Título: Re: Como ver un request HTTP?
Publicado por: #!drvy en 6 Febrero 2014, 04:58 am
Para chrome no he mirado pero seguro que alguno debe existir. Para firefox esta el HTTP Live Headers (https://addons.mozilla.org/es/firefox/addon/live-http-headers/) que es de los mas sencillos y potentes que hay. Simplemente lo pones a capturar, simulas la consulta y te da todos los request.

Solia ser famoso en aquellos dias en los que podias subir una shell cambiando la extension a .jpg y repitiendo la consulta cambiando devuelta a .php xD

Saludos


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 6 Febrero 2014, 05:46 am
Citar
Solia ser famoso en aquellos dias en los que podias subir una shell cambiando la extension a .jpg y repitiendo la consulta cambiando devuelta a .php xD

Hu.. no llegue a esa poca con la programacin web jeje con estas soluciones y otras que me dieron en el subforo de C++ creo que lo puedo resolver..

Muchas gracias!!!

Saludos!!


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 6 Febrero 2014, 21:36 pm
Buenas,, aca estoy de vuelta molestando.. use el HTTP Live Headers al final,, y me dio como resultado esto al subir una imagen al servidor desde un formulario:

Citar
http://localhost/Proyectos/Uploads/uploader.php

POST /Proyectos/Uploads/uploader.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost/Proyectos/Uploads/
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------225471198928204
Content-Length: 3222
-----------------------------225471198928204
Content-Disposition: form-data; name="uploadedfile"; filename="auto.jpg"
Content-Type: image/jpeg


HTTP/1.1 200 OK
Date: Thu, 06 Feb 2014 20:22:03 GMT
Server: Apache/2.2.4 (Win32) PHP/5.2.2
X-Powered-By: PHP/5.2.2
Content-Length: 40
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
----------------------------------------------------------

Por ahi, en una parte aparece esto:
Bueno,, llegue a la deduccin que eso es mi archivo,, mejor dicho, el inicio de mi archivo jpg (no se ve mas del contenido binario porque al parecer el HTTP Live Headers trunca la cadena cuando encuentra caracteres raros).
Ahora,, cual seria la request que tengo que armar yo??

Todo esto quizs?:
Citar
POST /Proyectos/Uploads/uploader.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost/Proyectos/Uploads/
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------225471198928204
Content-Length: 3222
-----------------------------225471198928204
Content-Disposition: form-data; name="uploadedfile"; filename="auto.jpg"
Content-Type: image/jpeg


Saludos!! Y gracias!


Título: Re: Como ver un request HTTP?
Publicado por: x64core en 6 Febrero 2014, 22:17 pm
@Vaagish lo que estas buscando es un sniffer, en google pone HTTP sniffer, de preferencia que use un modulo de kernel
para interceptar los datos.


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 6 Febrero 2014, 22:27 pm
Citar
@Vaagish lo que estas buscando es un sniffer, en google pone HTTP sniffer, de preferencia que use un modulo de kernel
para interceptar los datos.

jejeje sii,, ya busque hace rato.. termine optando por el de EffeTech,, que parece completo,, el asunto es que no muestra informacin para localhost! y ademas no vi que mostrara las request's literales,, muestra partes, desarmadas.. yo necesito la request literal! un '\r\n' hace la diferencia entre funcionar o no funcionar!

Ya estoy cerca de hacerlo funcionar.. pero no estoy seguro de cuales son request del navegador y cuales del servidor..  :rolleyes:

Saludos!


Título: Re: Como ver un request HTTP?
Publicado por: dRak0 en 6 Febrero 2014, 23:03 pm
Buenas,, aca estoy de vuelta molestando.. use el HTTP Live Headers al final,, y me dio como resultado esto al subir una imagen al servidor desde un formulario:

Por ahi, en una parte aparece esto:
Bueno,, llegue a la deduccin que eso es mi archivo,, mejor dicho, el inicio de mi archivo jpg (no se ve mas del contenido binario porque al parecer el HTTP Live Headers trunca la cadena cuando encuentra caracteres raros).
Ahora,, cual seria la request que tengo que armar yo??

Todo esto quizs?:
Saludos!! Y gracias!


Supongo que tendrias q cambiar el Content-Length a la cantidad de tu jpg. Y pasar el jpg tuyo en vez de otro.

Podrias examinar si el server tiene habilitado el comando PUT , si lo tiene puedes subir exes , etc...(Muy raro que lo tenga habilitado)


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 8 Febrero 2014, 22:21 pm
Sigo sin poder resolver esto.. esta es la cadena que le envio al servidor:

Código
  1. char A[64] = "POST /Proyectos/Uploads/uploader.php HTTP/1.1\nhost: localhost\r\n";
  2. char B[27] = "Content-type: image/jpeg\r\n";
  3. char C[23] = "Content-Length: 3024\r\n";
  4. char D[3] = "\r\n";

Ya que eso es C++ y estamos en Desarollo web, me explico.. Esas cadenas las uno formando un string largoo con esa informacin.. el asunto es que no funciona.. segn tengo entendido seria as:

Citar
HTTP/1.1 200 OK\r\n
Content-Type: image/gif\r\n
Content-Length: [length in bytes of the image]\r\n
\r\n
[binary data of your image]

Pero no funciona.. algn sniffer master que pueda dar una mano?? jeje

Saludos!


Título: Re: Como ver un request HTTP?
Publicado por: ivancea96 en 9 Febrero 2014, 00:17 am
Citar
"Content-Length: 3024\r\n"

Despus de el ltimo \r\n, envia los 3024 bytes, y listo.


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 9 Febrero 2014, 00:34 am
Ojala!! Ya lo intente todo! todooo!! Vos crees que el header este bien? El tamao del archivo esta correcto,, lo nico que dudo es si solo se enva el tamao del archivo en Content-Length, o el tamao del archivo mas el tamao del request.. no se si me explico.. (Igual ya lo intente de las dos formas..)

Saludos!


Título: Re: Como ver un request HTTP?
Publicado por: ivancea96 en 9 Febrero 2014, 01:33 am
Citar
POST /Proyectos/Uploads/uploader.php HTTP/1.1\nhost: localhost

Tengo entendido que no importa en algunos servidores enviarles \n sin el \r, pero podras probar:

Citar
POST /Proyectos/Uploads/uploader.php HTTP/1.1\r\nHost: localhost

EDITO: Si no te va, prueba acambiar localhost por tu IP local.


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 9 Febrero 2014, 05:13 am
Citar
POST /Proyectos/Uploads/uploader.php HTTP/1.1\r\nHost: localhost

No me habia percatado de ese \r,, pero igual no funciona..

Esto es lo que le envio literalmente al servidor:

Citar
POST /Proyectos/Uploads/uploader.php HTTP/1.1
host: localhost
Content-type: image/jpeg
Content-Length: 3024

JFIF            

   


 "" $(4,$&1'-=-157:::#+?D?8C49:7




7%%77777777777777777777777777777777777777777777777777  \ {"               B           !1A"Qa2qB#3brRT$5Cs                          A   ? :M\{P+}B.@߭suYu(e\ɿޣ?cUm]1U+s }(OE+ K9R~ ng|֬2~o;V 
 k#w   OLf$cv{]EvZEϿN .y\Ffmie *:YS zL߻v5]?m+w% +8I?    Qqj|#Re'|m"Tؓ?U   &5_ ;jP0.ǦBϣ~SNDʿII_U?BS
_]IܟL4iJmKL<^P>fypw`*jFnYIZN6Qq@G _NycveZ84 e>!^g nU GO~q4Ό '$k]A
~f<) Itq8   vȎ93ʗZŦsI:0aJ[tŭ!yE8]|+..e'ßÏpb'5<Ghj8nEH   `{}>A8[}^$ W8r#*)!zsT3@A>mnf4)aqU/*_K9h8jǃģcʿ3L4Sl0H.B_2:+>Iou6!c7]\kZ+u;?/;|Y;dM"۾1noք(n(IN uߪoˆRDW}*bS   ciݼn2X8ʐs~wq$c?NKh݆9Am\JbkH Ol Yb׵Ir[$ʹvib];YQ)[vd #
;U kךrmf!m0>F;U@ @$T:c>xbq"9] c֫Supऱ l `i"y]dwV N<wؚ oDV ŭ-r ]8 )?hKwA,jWf,3cOzM .[H
1فI_c$52 :+{Z[Zl$c I}|;a5{+2rp߀ڛӭ3I!
2ǐtfc{gr    5), -m %`9N¤tkK);
<X$yz۝SޝZKӑ$ 1;oT CҮшHZH$Dp6#88Zۋշ<$q(b<kYgp~3Er(Qש2p75.$ִ PN|oԝڃ;if{EvPŎ2=>vk x)FB}Y.tđycϡTQ6yז4ۺwqMլZ˩i|@,ls@Mݣ/^lo[ˈP‘Fb2m(:7{cȧk[W <O*($)99l6Gg4Y^`JWd+g Jٷ.llJ>;[Y+DVHA #rq"hYiܐs}=R{++KH7SyݾR#nTlN򴐪 0K}m`<S   qiZkki   ,6YlsqǾM#PyG_R|pMToaDFeh̖.H|SYKg 8:m9RQENՔwJ'EbQWGoǍŁTȧ R>8'"넮p[,Y&61bT("1ۛV29i   d8q ^#NlyIC Tm5(]YxugKlylbRKU)'|Y\d/Gj
Y,^3Γ\m|n   pP'׽{FӉ9 0[nQG~a7zsI<1:?&zs"OrMp%Xk   f_rLlxۉuH pR';~ f-"rjNqMԚ H%2N䞴lpm QzVD<!Ԁl-CE ڢS#Q@@>GlQ@
N3%cҤTr+z
hialʑQ|ImwP? `;@7[Elb(lj,o|,E[
' ґ   L v cwǜmzVQk?AoMmuLf繕?}2*
P
p|BDoW-$@4G1p)ZT2Bd,u+u/IF;3CNW.k=7)d^] UtP?4oo

Esta clarisimo cual es la imagen,, no intenten copiar y pegar a ver si esta bien el binario, porque les va a dar error,, pero si lo hago yo,, con mi archivo funciona bien..


Título: Re: Como ver un request HTTP?
Publicado por: ivancea96 en 9 Febrero 2014, 14:22 pm
Mira que cabecera enva el navegador al enviar una imgen, por ejemplo.

PD: Una imagen, se le enva con una varible en el method POST:

Código:
\r\n\r\n
var=<los datos de la imagen>


Título: Re: Como ver un request HTTP?
Publicado por: dRak0 en 9 Febrero 2014, 15:08 pm
Proba abriendo con fopen la imagen , abrila con 'rb'  , leela toda y guardala . Manda la informacion desde esa variable.


Título: Re: Como ver un request HTTP?
Publicado por: ivancea96 en 9 Febrero 2014, 16:36 pm
Perdon por lo que dije de la variable, me confund :3

Cog con WPE los paquetes del envo de una imagen, y esta fue la cabecera,si te sirve:

Código:
POST /XXX.php HTTP/1.1
User-Agent: XXXXXXXXXX
Host: XXXX.es
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: es,en;q=0.9,es-ES;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://XXX/XXX.html
Connection: Keep-Alive
Content-Length: 170457
Content-Type: multipart/form-data; boundary=----------HCnR65lo15kSYiPLN9Rgw9....------------HCnR65lo15kSYiPLN9Rgw9
Content-Disposition: form-data; name="file"; filename="XXXXX.png"
Content-Type: image/png

<AQUI LA IMAGEN>

Muchos campos de la cabecera son innecesarios, pero bueno, te la pongo entera.

Y bueno, como dijo jednak, la imgen abrela desde el programa, y ve enviando su contenido, no la abras como txt y la copies ni nada as jaja

PD: Si la abres, abrela como BINARIO.


Título: Re: Como ver un request HTTP?
Publicado por: #!drvy en 9 Febrero 2014, 20:08 pm
@Ivancea, hasta ah el haba llegado e.e

Vaagish, tienes que enviar mucho mas no solo eso. Tienes que enviar connection, content-length, content-type (2 veces), boundary, content-disposition, accept... y recuerda que despus de content-type van 2 \r\n y al final tambin de todo tambin.

Ademas te vendra bien imprimir los headers y el contenido que te devuelve..

Saludos


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 10 Febrero 2014, 00:34 am
Citar
Cog con WPE los paquetes del envo de una imagen, y esta fue la cabecera,si te sirve:

Gracias,, yo haba echo algo parecido y obtenido una cabecera parecida..

 
Citar
Vaagish, tienes que enviar mucho mas no solo eso. Tienes que enviar connection, content-length, content-type (2 veces), boundary, content-disposition, accept... y recuerda que despus de content-type van 2 \r\n y al final tambin de todo tambin.

Ademas te vendra bien imprimir los headers y el contenido que te devuelve..

El boundary ese me esta volviendo loco! --> http://stackoverflow.com/questions/4656287/what-rules-apply-to-mime-boundary

Estuve probando con todos esas cabeceras y tampoco... He llegado a una conclusin: No es para nada aconsejable (sin estar completamente seguro) hacer esto como lo estoy haciendo yo,, por lo que veo, un servidor puede requerir ciertas cabeceras obligatorias, y a lo mejor otro servidor, otras.. yo aunque copie todas esas cabeceras, es probable que me falte un \r o un \n.. y solo por eso,, o por un espacio,, o por el mas mnimo detalle,, no funciona.. no me parece para nada practico,, vaya a saber uno como se la ingenia el navegador,, pero le sale bien su trabajo jejeje

Al final voy a enviar el archivo como una secuencia de datos binarios,, y despus lo voy a unir con PHP y escribir el archivo en disco. Lo nico que me preocupa es que el mtodo POST acepte caracteres raros.. Asi me evito todas esas cabeceras complicadas..

Saludos!! Gracias por su tiempo!  ;D



EDITO: No es posible hacer lo que queria,, tenia la ilusion de poder hacer algo asi:

POST /Proyectos/Uploads2/uploader.php?PARTE1=[DATOS BINARIOS] HTTP/1.1\r\nHOST: localhost\r\n\r\n

POST /Proyectos/Uploads2/uploader.php?PARTE2=[DATOS BINARIOS] HTTP/1.1\r\nHOST: localhost\r\n\r\n

...

O sea, enviar el archivo por partes, pero [DATOS BINARIOS] NO es una opcion dentro de una variable...


Título: Re: Como ver un request HTTP?
Publicado por: #!drvy en 10 Febrero 2014, 03:35 am
No tienes alguna libreria que lo haga por ti ? Por ejemplo curl es bastante famosa y esta en varios lenguajes.. con un par de lineas subes archivos o parseas paginas _

Saludos


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 10 Febrero 2014, 04:03 am
Citar
No tienes alguna libreria que lo haga por ti ? Por ejemplo curl es bastante famosa y esta en varios lenguajes.. con un par de lineas subes archivos o parseas paginas _

Y.. si,, voy a tener que usar algo de eso.. es que queria algo "unico" para saltar las firmas,, pero bue.. es lo que hay!  >:(

Saludos!!  ;D


Título: Re:
Publicado por: ivancea96 en 10 Febrero 2014, 08:17 am
Todo es probar. Mirar hoy cuando pueda que cabeceras son imprescindibles :p

Enviado desde mi ST21i mediante Tapatalk


Título: Re: Como ver un request HTTP?
Publicado por: Vaagish en 12 Febrero 2014, 00:44 am
Bueno gente,, no quera dejar el asunto as colgado, les voy a contar lo que pasa..

No encontraba forma de enviar esas ***** cabeceras,, entonces termine copiando literalmente el contenido de una cabecera bien echa,, y al enviarla con mi programa, cha channnn!! No funciona,, as que es probable que las cabeceras estuvieran bien desde un principio,, (hace 2 semanas que estoy con esto,, 8hs al da) con lo cual, mi estado anmico acaba de derrumbarse,, (naa,, na pa tanto)

Bueno,, en fin,, segun HTTP Live Headers esto es una cabecera correcta:

Citar
http://localhost/Proyectos/Uploads/uploader.php

POST /Proyectos/Uploads/uploader.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost/Proyectos/Uploads/index.html
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------3093158725401
Content-Length: 3218
-----------------------------3093158725401
Content-Disposition: form-data; name="uploadedfile"; filename="auto.jpg"
Content-Type: image/jpeg

JFIF            

   


 "" $(4,$&1'-=-157:::#+?D?8C49:7




7%%77777777777777777777777777777777777777777777777777  \ {"               B           !1A"Qa2qB#3brRT$5Cs                          A   ? :M\{P+}B.@߭suYu(e\ɿޣ?cUm]1U+s }(OE+ K9R~ ng|֬2~o;V 
 k#w   OLf$cv{]EvZEϿN .y\Ffmie *:YS zL߻v5]?m+w% +8I?    Qqj|#Re'|m"Tؓ?U   &5_ ;jP0.ǦBϣ~SNDʿII_U?BS
_]IܟL4iJmKL<^P>fypw`*jFnYIZN6Qq@G _NycveZ84 e>!^g nU GO~q4Ό '$k]A
~f<) Itq8   vȎ93ʗZŦsI:0aJ[tŭ!yE8]|+..e'ßÏpb'5<Ghj8nEH   `{}>A8[}^$ W8r#*)!zsT3@A>mnf4)aqU/*_K9h8jǃģcʿ3L4Sl0H.B_2:+>Iou6!c7]\kZ+u;?/;|Y;dM"۾1noք(n(IN uߪoˆRDW}*bS   ciݼn2X8ʐs~wq$c?NKh݆9Am\JbkH Ol Yb׵Ir[$ʹvib];YQ)[vd #
;U kךrmf!m0>F;U@ @$T:c>xbq"9] c֫Supऱ l `i"y]dwV N<wؚ oDV ŭ-r ]8 )?hKwA,jWf,3cOzM .[H
1فI_c$52 :+{Z[Zl$c I}|;a5{+2rp߀ڛӭ3I!
2ǐtfc{gr    5), -m %`9N¤tkK);
<X$yz۝SޝZKӑ$ 1;oT CҮшHZH$Dp6#88Zۋշ<$q(b<kYgp~3Er(Qש2p75.$ִ PN|oԝڃ;if{EvPŎ2=>vk x)FB}Y.tđycϡTQ6yז4ۺwqMլZ˩i|@,ls@Mݣ/^lo[ˈP‘Fb2m(:7{cȧk[W <O*($)99l6Gg4Y^`JWd+g Jٷ.llJ>;[Y+DVHA #rq"hYiܐs}=R{++KH7SyݾR#nTlN򴐪 0K}m`<S   qiZkki   ,6YlsqǾM#PyG_R|pMToaDFeh̖.H|SYKg 8:m9RQENՔwJ'EbQWGoǍŁTȧ R>8'"넮p[,Y&61bT("1ۛV29i   d8q ^#NlyIC Tm5(]YxugKlylbRKU)'|Y\d/Gj
Y,^3Γ\m|n   pP'׽{FӉ9 0[nQG~a7zsI<1:?&zs"OrMp%Xk   f_rLlxۉuH pR';~ f-"rjNqMԚ H%2N䞴lpm QzVD<!Ԁl-CE ڢS#Q@@>GlQ@
N3%cҤTr+z
hialʑQ|ImwP? `;@7[Elb(lj,o|,E[
' ґ   L v cwǜmzVQk?AoMmuLf繕?}2*
P
p|BDoW-$@4G1p)ZT2Bd,u+u/IF;3CNW.k=7)d^] UtP?4oo
-----------------------------3093158725401--


Lo unico que me genera una duda es que al enviar dos (o mas) veces el formulario, (la imagen en si) siempre cambia el Content-Length.. cosa curiosa, porque la imagen siempre es la misma..
En fin.. voy a arreglar primero el programa para despues poder hacerme el canchero y enviar el request...

Saludos!