禁用HTTP请求中的URL编码

时间:2011-05-16 14:18:23

标签: perl http url request urlencode

我正在编写一个小的perl工具,它可以帮助我在盲目的SQL注入攻击期间加速某些进程(这是一个道德工具。这是我的工作)。

我的脚本管理HTTP请求已经使用十六进制值(%xx)进行网址编码。 因此,当我使用HTTP::Request将其发送到Web浏览器时,我的请求会被编码两次。

我使用这种代码:

my $ua = LWP::UserAgent->new;
my $httpreq = new HTTP::Request GET => 'http://192.168.0.1/lab/sqli.php?id=1%20and%20(select%20ascii(substring(user,3,1))%20from%20mysql.user%20limit%201)>100%23';
my $res = $ua->request($httpreq)

如何在请求中禁用perl URL编码?

1 个答案:

答案 0 :(得分:5)

HTTP :: Request不会修改提供的URL。

任何URL编码必须在汇编URL之前完成 - 它实际上是被编码的URL组件 - 因此HTTP :: Request期望编码已经完成。

>perl -MHTTP::Request -e"print HTTP::Request->new(GET => 'http://192.168.0.1/lab/sqli.php?id=1%20and%20(select%20ascii(substring(user,3,1))%20from%20mysql.user%20limit%201)>100%23')->as_string;"
GET http://192.168.0.1/lab/sqli.php?id=1%20and%20(select%20ascii(substring(user,3,1))%20from%20mysql.user%20limit%201)%3E100%23