Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Perl] SMF Manager 0.1

  • 3 Respuestas
  • 1948 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil
« en: Diciembre 07, 2012, 03:03:58 pm »
Traduccion a Perl (mega buggeada) del script que hizo Javier de PortalHacker para poder leer los mensajes privados y listar las categorias de un foro SMF.

El codigo

Código: Perl
  1. #!usr/bin/perl
  2. #SMF Manager 0.00001
  3. #Coded By Doddy H
  4.  
  5. #ppm install http://www.bribes.org/perl/ppm/HTML-Strip.ppd
  6.  
  7. use LWP::UserAgent;
  8. use HTTP::Cookies;
  9.  
  10. use HTML::Strip;
  11.  
  12. my $nave = LWP::UserAgent->new(
  13.     cookie_jar            => HTTP::Cookies->new(),
  14.     requests_redirectable => [],
  15.     timeout               => 5,
  16.     agent =>
  17. "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
  18. );
  19.  
  20.   @@@   @     @  @@@@@    @     @                                  
  21.  @   @  @     @  @        @     @                                  
  22.  @      @@   @@  @        @@   @@                                  
  23.  @      @@   @@  @        @@   @@   @@@  @ @@   @@@   @@@@  @@@  @@
  24.   @@@   @ @ @ @  @@@@     @ @ @ @      @ @@  @     @ @   @ @   @ @
  25.      @  @ @ @ @  @        @ @ @ @   @@@@ @   @  @@@@ @   @ @@@@@ @
  26.      @  @  @  @  @        @  @  @  @   @ @   @ @   @ @   @ @     @
  27.  @   @  @  @  @  @        @  @  @  @   @ @   @ @   @ @   @ @   @ @
  28.   @@@   @     @  @        @     @   @@@@ @   @  @@@@  @@@@  @@@  @
  29.                                                          @        
  30.                                                      @@@@          
  31.  
  32. );
  33.  
  34. print "\n\n[+] Page : ";
  35. chomp( my $url = <stdin> );
  36.  
  37. print "\n[+] Username : ";
  38. chomp( my $usera = <stdin> );
  39.  
  40. print "\n[+] Password : ";
  41. chomp( my $passa = <stdin> );
  42.  
  43. ## Login
  44.  
  45. print "\n[+] Connecting ....\n\n";
  46.  
  47. my $code = $nave->post(
  48.     $url . "/index.php?action=login2",
  49.     {
  50.         "user"         => $usera,
  51.         "passwrd"      => $passa,
  52.         "cookielength" => "9000",
  53.         "hash_passwrd" => "",
  54.         "submit"       => "submit"
  55.     }
  56. );
  57.  
  58. if ( $code->is_redirect ) {
  59.  
  60.     #print $code->header('location'),"\n";
  61. }
  62. elsif ( $code->is_success ) {
  63.     print $code->as_string, "\n";
  64. }
  65. else {
  66.     print STDERR $code->status_line, "\n";
  67. }
  68.  
  69. my $code = toma( $url . "/SSI.php?ssi_function=welcome" );
  70.  
  71. if ( $code =~ /Hola, <strong>(.*)<\/strong>/ ) {
  72.     my $name = $1;
  73.     print "[+] Welcome $name\n";
  74. }
  75. else {
  76.     print "[-] Error\n";
  77. }
  78.  
  79. ##
  80.  
  81. while (1) {
  82.  
  83.     print "\n[+] Options\n\n";
  84.  
  85.     print "1 - See MP\n";
  86.     print "2 - Navegate\n";
  87.     print "3 - Exit\n";
  88.  
  89.     print "\n[+] Option : ";
  90.     chomp( my $op = <stdin> );
  91.  
  92.     if ( $op eq "3" ) {
  93.         exit(1);
  94.     }
  95.  
  96.     if ( $op eq "1" ) {
  97.  
  98.         print qq(
  99.  @     @  @@@@@
  100.  @     @  @    @
  101.  @@   @@  @    @
  102.  @@   @@  @    @
  103.  @ @ @ @  @@@@@
  104.  @ @ @ @  @    
  105.  @  @  @  @    
  106.  @  @  @  @    
  107.  @     @  @    
  108.  
  109. );
  110.  
  111.         mps($url);
  112.     }
  113.  
  114.     if ( $op eq "2" ) {
  115.         print qq(
  116.  @    @                                        
  117.  @@   @                                @      
  118.  @@   @                                @      
  119.  @ @  @   @@@  @   @  @@@   @@@@  @@@  @@  @@@
  120.  @ @  @      @ @   @ @   @ @   @     @ @  @   @
  121.  @  @ @   @@@@  @ @  @@@@@ @   @  @@@@ @  @@@@@
  122.  @   @@  @   @  @ @  @     @   @ @   @ @  @    
  123.  @   @@  @   @   @   @   @ @   @ @   @ @  @   @
  124.  @    @   @@@@   @    @@@   @@@@  @@@@  @  @@@
  125.                                @              
  126.                            @@@@                
  127.  
  128.  
  129. );
  130.  
  131.         my $chau2 = 0;
  132.  
  133.         while ( $chau2 eq 0 ) {
  134.  
  135.             print "\n[+] 1 - List Categories\n";
  136.             print "[+] 2 - Exit\n";
  137.  
  138.             print "\n[+] Option : ";
  139.             chomp( my $op = <stdin> );
  140.  
  141.             if ( $op eq "1" ) {
  142.  
  143.                 print "\n[+] Searching ...\n\n";
  144.  
  145.                 my $code = toma($url);
  146.  
  147.                 while ( $code =~
  148. /<a class=\"subject\" href=\"(.*?)\" name=(.*?)>(.*?)<\/a>/migs
  149.                   )
  150.                 {
  151.                     print "[+] ID : $2 [+] Name : $3\n";
  152.                 }
  153.  
  154.             }
  155.             else {
  156.                 $chau2 = 1;
  157.             }
  158.  
  159.         }
  160.  
  161.     }
  162.  
  163. }
  164.  
  165. #gets_list_mp();
  166. #gets_msg_mp();
  167. #gets_msg_now();
  168.  
  169. sub mps {
  170.  
  171.     my $url = shift;
  172.  
  173.     my $chau = "0";
  174.  
  175.     print "\n[+] Searching pages ..\n";
  176.  
  177.     my @founds = gets_list_mp($url);
  178.  
  179.     my $count = int(@founds);
  180.  
  181.     print "\n[+] Pages Found : $count\n";
  182.  
  183.     while ( $chau eq 0 ) {
  184.  
  185.         print "\n[+] 1 - Get List Messages\n";
  186.         print "[+] 2 - Read Message\n";
  187.         print "[+] 3 - Exit\n";
  188.  
  189.         print "\n[+] Option : ";
  190.         chomp( my $op = <stdin> );
  191.  
  192.         if ( $op eq "1" ) {
  193.  
  194.             print "\n[+] Number Page : ";
  195.             chomp( my $op = <stdin> );
  196.  
  197.             print "\n[+] Searching ..\n";
  198.  
  199.             gets_msg_mp( $founds[ $op - 1 ] );
  200.  
  201.         }
  202.         elsif ( $op eq "2" ) {
  203.  
  204.             print "\n[+] Number Page : ";
  205.             chomp( my $n = <stdin> );
  206.  
  207.             print "\n[+] ID : ";
  208.             chomp( my $id = <stdin> );
  209.  
  210.             print "\n[+] Reading ...\n";
  211.  
  212.             gets_msg_now( $founds[ $n - 1 ], $id );
  213.  
  214.         }
  215.         else {
  216.             $chau = 1;
  217.         }
  218.  
  219.     }
  220. }
  221.  
  222. sub gets_msg_now {
  223.  
  224.     my $url = toma( $_[0] );
  225.  
  226.     my $id = "msg_" . $_[1];
  227.  
  228.     if ( $url =~ /<div class=\"inner\" id=\"$id\">(.*?)<\/div>/mig ) {
  229.  
  230.         my $uno = HTML::Strip->new( emit_spaces => 1 );
  231.         my $final = $uno->parse($1);
  232.         $final =~ s/^[\t\f ]+|[\t\f ]+$//mg;
  233.  
  234.         print "\n[START]\n\n";
  235.         print $final;
  236.         print "\n\n[END]\n\n";
  237.  
  238.     }
  239.  
  240. }
  241.  
  242. sub gets_msg_mp {
  243.  
  244.     my $url = toma( $_[0] );
  245.  
  246.     my @ids;
  247.     my @asunto;
  248.     my @nombre;
  249.  
  250.     while ( $url =~ /<td><a href=\"#msg(.*?)\">(.*?)<\/a><\/td>/migs ) {
  251.  
  252.         #print "$1 $2\n";
  253.         push( @ids,    $1 );
  254.         push( @asunto, $2 );
  255.     }
  256.  
  257.     while ( $url =~ /Ver perfil de (.*?)">/migs ) {
  258.  
  259.         #print "$1\n\n";
  260.         push( @nombre, $1 );
  261.     }
  262.  
  263.     my $total = int(@ids) - 1;
  264.  
  265.     for my $num ( 0 .. $total ) {
  266.         print "[+] ID : "
  267.           . $ids[$num]
  268.           . " [+] Asunto : "
  269.           . $asunto[$num]
  270.           . " [+] De : "
  271.           . $nombre[$num] . "\n";
  272.     }
  273.  
  274. }
  275.  
  276. sub gets_list_mp {
  277.  
  278.     my $url = shift;
  279.  
  280.     my @paginas;
  281.     my $code = toma( $url . "/index.php?action=pm" );
  282.  
  283.     push( @paginas, $url . "/index.php?action=pm" );
  284.  
  285.     while ( $code =~ /<a class="navPages" href="(.*?)">(.*?)<\/a>/migs ) {
  286.         push( @paginas, $1 );
  287.     }
  288.  
  289.     my @paginas = repes(@paginas);
  290.  
  291.     return @paginas;
  292.  
  293. }
  294.  
  295. sub repes {
  296.     my @limpio;
  297.     foreach $test (@_) {
  298.         push @limpio, $test unless $repe{$test}++;
  299.     }
  300.     return @limpio;
  301. }
  302.  
  303. sub toma {
  304.     return $nave->get( $_[0] )->content;
  305. }
  306.  
  307. sub tomar {
  308.     my ( $web, $var ) = @_;
  309.     return $nave->post( $web, [ %{$var} ] )->content;
  310. }
  311.  
  312. #The End ?
  313.  

AVISO : Solo esta probado en el foro PortalHacker.

Desconectado s3cur1tyr00t

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #1 en: Diciembre 07, 2012, 08:25:27 pm »
Para correrlo en Mac, o derivados de bsd, lo primero que hay que hacer es descargar HTML-Strip del siguiente enlace:

Código: [Seleccionar]
http://search.cpan.org/~kilinrax/HTML-Strip/
Luego descomprimen el archivo, se posicionan en el directorio  y ejecutan lo siguiente:

Código: [Seleccionar]
sudo perl Makefile.PL
sudo make
sudo make install

Seguramente en derivados de UNIX la instalacion sea igual.

Sobre el script:

1.- El código deberia revisarse.

2.- Hay funcionalidades que no caminan correctamente.
« Última modificación: Diciembre 07, 2012, 08:31:40 pm por andresg888 »

Desconectado Sanko

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    0%
  • Reputación 0
  • ¿Puedes?
    • Ver Perfil
    • Underc0de
« Respuesta #2 en: Diciembre 07, 2012, 09:24:29 pm »
Buen complemento andresgg
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil
« Respuesta #3 en: Diciembre 07, 2012, 09:40:12 pm »
solo lo hice para traducir un codigo que me gusto en portalhacker por eso le faltan todos los controles en las expresiones regulares ademas de que hay problemas con los cookies que no pude arreglar.

igual gracias por las sugerencias.

« Última modificación: Diciembre 07, 2012, 09:44:52 pm por Doddy »

 

¿Te gustó el post? COMPARTILO!



Tutorial perl desde cero By: Black Poision & Painboy

Iniciado por ProcessKill

Respuestas: 2
Vistas: 3459
Último mensaje Septiembre 02, 2011, 09:43:36 pm
por blozzter
[Perl] Verificando si es root para correr un script

Iniciado por c1st

Respuestas: 1
Vistas: 1714
Último mensaje Octubre 07, 2012, 06:01:39 pm
por ANTRAX
DoSing IP 1.0 - [Creado por SkillmaX] + Source [PERL]

Iniciado por SkillmaX

Respuestas: 0
Vistas: 1558
Último mensaje Julio 04, 2010, 10:14:31 am
por SkillmaX
Funciones más utilizadas en la programación de un perl script

Iniciado por Dragora

Respuestas: 0
Vistas: 767
Último mensaje Enero 06, 2019, 01:01:06 am
por Dragora
[Uniscan] Scanner de vulnerabilidades WEB hecho en Perl

Iniciado por tar3kw0rm3d

Respuestas: 0
Vistas: 1812
Último mensaje Junio 02, 2013, 08:01:28 pm
por tar3kw0rm3d