【问题标题】:How do I send POST data with LWP?如何使用 LWP 发送 POST 数据?
【发布时间】:2011-04-19 16:31:30
【问题描述】:

我想制作一个与http://www.md5crack.com/crackmd5.php 通信的程序。我的目标是向该站点发送一个哈希(md5),并希望该站点能够破解它。之后,我想显示哈希的明文。我的问题是将数据发送到站点。我查找了有关使用 LWP 的文章,但我仍然迷路了。现在,哈希没有发送,其他一些垃圾数据是。我将如何向网站发送特定的数据字符串?

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;

【问题讨论】:

    标签: perl post lwp


    【解决方案1】:

    您发布了错误的数据,因为您使用 HTML 来指定小部件并将其与实际发送的数据混为一谈。更正后的数据将只是发送小部件名称及其值:

    term: 098f6bcd4621d373cade4e832627b4f6
    

    相反,当前 POST 的数据是:

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

    更正的程序:

    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;
    

    你也可以使用LWP::UserAgent的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;
    

    永远记得use strictuse warnings。这被认为是一种很好的做法,可以节省您的时间。

    【讨论】:

      【解决方案2】:

      过去,破解者会通过阅读来解决这类问题。 HTTP::Request::Common 中有一些示例,LWP::UserAgent 告诉您检查发送 POST 数据。您只需要发送表单数据,而不是随附的元数据。

      您可能会更轻松地使用 WWW::Mechanize,因为它具有更加人性化的界面。

      【讨论】:

        猜你喜欢
        • 2011-05-11
        • 2022-01-03
        • 2013-05-23
        • 1970-01-01
        • 2014-07-19
        • 2012-09-10
        • 2011-03-21
        • 2016-12-05
        相关资源
        最近更新 更多