Question Comment envoyer des données POST avec LWP?


Je veux faire un programme qui communique avec http://www.md5crack.com/crackmd5.php. Mon but est d'envoyer un hash au site (md5) et j'espère que le site pourra le déchiffrer. Après, je voudrais afficher le texte en clair du hachage. Mon problème est d'envoyer les données au site. J'ai cherché des articles sur l'utilisation de LWP mais je suis toujours perdu. À l'heure actuelle, le hachage n'est pas envoyé, d'autres données indésirables sont. Comment pourrais-je envoyer une chaîne de données particulière sur le site?

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


origine


Réponses:


Vous affichez les mauvaises données car vous prenez le code HTML pour spécifier le widget et le fusionner avec les données qu'il envoie réellement. Les données corrigées seraient simplement d'envoyer le nom du widget et sa valeur:

term: 098f6bcd4621d373cade4e832627b4f6

Au lieu de cela, les données qui sont actuellement envoyées à POST sont:

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

Programme corrigé:

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;

Vous pouvez aussi utiliser LWP::UserAgentméthode post ():

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;

Rappelez-vous toujours de use strict et use warnings. Cela est considéré comme une bonne pratique et vous permettra de gagner du temps.


28
2017-10-01 04:52



Autrefois, les crackers trouvaient ce genre de choses en lisant. Il existe des exemples dans HTTP :: Request :: Common, que LWP :: UserAgent vous demande de récupérer pour l'envoi de données POST. Il vous suffit d'envoyer les données du formulaire, et non les métadonnées qui l'accompagnent.

Vous pourriez avoir plus de facilité à utiliser WWW :: Mechanize car il a une interface beaucoup plus humaine.


6
2017-10-01 17:43