1

我安装了 DVWA 并开始尝试挑战(所有数据库/配置都正确完成),本地主机上的登录凭据是 admin:password。当我尝试手动登录时,这些工作。

我想编写一个 perl 脚本来暴力破解暴力登录挑战,但是我无法访问该页面。

我使用以下代码登录login.php,但它不起作用。我正在使用 Mechanize(以前使用 UserAgent pm 但失败了,所以在无休止的谷歌搜索后移到了这个)

1 #! /usr/bin/perl
2 
3 use WWW::Mechanize ;
4 
5 my $mech = WWW::Mechanize->new(autocheck =>1);
6 $mech->credentials('admin'=>'password');
7 $mech->get('http://localhost/dvwa/login.php');
8 print $mech->content();

第 8 行打印登录页面的内容。我的代码有什么问题,我应该怎么做才能访问主页?登录后我应该手动重定向到它吗?

4

1 回答 1

1

credentials方法用于 HTTP 身份验证。这是表单提交,因此您需要先填写表单。

#!/usr/bin/perl
# ^ no space between #! and the perl binary

# always include these or I will hunt you down in your sleep:
use strict;
use warnings;

use WWW::Mechanize;

my $mech = WWW::Mechanize->new( autocheck => 1 );
$mech->get( 'http://localhost/dvwa/login.php' );

# you'll need to look at the login page HTML to get the actual field names
$mech->field( username => 'admin' );
$mech->field( password => 'password' );

$mech->submit;

print $mech->decoded_content;   # instead of ->content

如果该页面上有多个表单,您可能需要更具体地使用fieldsubmit方法;请参阅出色的Mechanize 表单处理文档

于 2013-07-13T20:37:40.723 回答