Pregunta ¿Cómo envío datos POST con LWP?


Quiero hacer un programa que se comunique con http://www.md5crack.com/crackmd5.php. Mi objetivo es enviar un hash (md5) al sitio y con suerte el sitio podrá descifrarlo. Después, me gustaría mostrar el texto claro del hash. Mi problema es enviar los datos al sitio. Busqué artículos sobre el uso de LWP, sin embargo, aún estoy perdido. En este momento, el hash no está enviando, algunos otros datos no deseados son. ¿Cómo voy a enviar una cadena de datos en particular al sitio?

use HTTP::Request::Common qw(POST);  
use LWP::UserAgent; 


$ua = LWP::UserAgent->new();  
my $req = POST 'http://www.md5crack.com/crackmd5.php', [ 
 maxlength=> '2048',
 name=> 'term',
 size=>'55',
 title=>'md5 hash to crack',
 value=> '098f6bcd4621d373cade4e832627b4f6',
 name=>'crackbtn',
 type=>'submit',
 value=>'Crack that hash baby!',

]; 
$content = $ua->request($req)->as_string; 

print "Content-type: text/html\n\n"; 
print $content;

16
2017-10-01 04:24


origen


Respuestas:


Está PUBLIENDO los datos incorrectos porque está tomando el HTML para especificar el widget y combinarlo con los datos que realmente envía. Los datos corregidos serían simplemente enviar el nombre del widget y su valor:

term: 098f6bcd4621d373cade4e832627b4f6

En cambio, los datos que se obtienen POSTed actualmente son:

maxlength: 2048
name:      term
size:      55
title:     md5 hash to crack
value:     098f6bcd4621d373cade4e832627b4f6
name:      crackbtn
type:      submit
value:     Crack that hash baby!

Programa corregido:

use strict;
use warnings;

use LWP::UserAgent; 
use HTTP::Request::Common qw{ POST };
use CGI;

my $md5 = '098f6bcd4621d373cade4e832627b4f6';
my $url = 'http://www.md5crack.com/crackmd5.php';

my $ua      = LWP::UserAgent->new();
my $request = POST( $url, [ 'term' => $md5 ] );
my $content = $ua->request($request)->as_string();

my $cgi = CGI->new();
print $cgi->header(), $content;

También puedes usar LWP::UserAgentMétodo de publicación ():

use strict;
use warnings;

use LWP::UserAgent;
use CGI;

my $md5 = '098f6bcd4621d373cade4e832627b4f6';
my $url = 'http://www.md5crack.com/crackmd5.php';

my $ua       = LWP::UserAgent->new();
my $response = $ua->post( $url, { 'term' => $md5 } );
my $content  = $response->decoded_content();

my $cgi = CGI->new();
print $cgi->header(), $content;

Recuerda siempre use strict y use warnings. Se considera una buena práctica y le ahorrará tiempo.


28
2017-10-01 04:52



Solía ​​ser que los crackers resolverían este tipo de cosas leyendo. Hay ejemplos en HTTP :: Request :: Common, que LWP :: UserAgent le indica que debe verificar para enviar datos POST. Solo necesita enviar los datos del formulario, no los metadatos que lo acompañan.

Es posible que le sea más fácil usar WWW :: Mecanizar ya que tiene una interfaz mucho más centrada en el ser humano.


6
2017-10-01 17:43