[webhacking.kr] 22번 문제 풀이[Blind SQL Injection]

1 분 소요

💡 Webhacking.kr challenge(old) 22번 문제에 대한 풀이입니다.

문제

문제 화면

image

join 페이지 계정 회원가입 기능이 있습니다.

image image

guest123/guest123으로 가입하고 로그인 하면 다음과 같이 비밀번호의 해시 값이 나옵니다.

image

해시길이가 16진수로 32자리 -> 16byte 인것으로 볼때, md5 해시인 것 같습니다. 따라서 guest123을 md5 해시로 암호화 해본 뒤 해시값을 비교해 봅니다.

md5(“guest123”) : ‘FCF41657F02F88137A1BCF068A32C0A3’ 로 현재 화면에 나와있는 해시 값과 다릅니다. 아마 salt가 추가적으로 기존 비밀번호에 더해지는 것 같습니다.

여기서부터는 가정이 조금 필요합니다. 원래 salt를 똑같이 사용하는 경우는 많이 없는데, 이건 wargame이니까, ‘혹시 salt를 동일하게 사용하지 않았을까?’ 이를 확인하기 위해서 쉬운 패스워드로 계정을 만들어 봅니다.

참고로 온라인 상에서는 md5 해시값의 원래 데이터를 구해주는 사이트들이 많은데, 대부분 사전을 만들어서 데이터를 제공해 주는 것이기 때문에 지금처럼 “salt” + “guest123”의 데이터를 사전에 가지고 있을 확률은 적습니다. 따라서 salt를 구하기 위해서는 쉬운 단어를 만들어서 찾아야 합니다.

새로운 계정 test11 / 1을 만들어 봅니다

image

해당 해시 값을 검색해 봅니다 md5 디코딩 사이트 : https://md5.web-max.ca/index.php#enter

한번에 찾았습니다.

image

값을 보니 salt 값은 ‘apple’인것 같습니다. 그다음은 모든 비밀번호에 대해서 동일한 salt를 이용하는지 확인해야 합니다.

test22 / 2 를 만들어 봅니다.

image

해당 해시 값을 검색해 봅니다.

image

해당 사이트의 사전파일에는 이 값이 없는 것 같습니다. 그럼 가정을 확인하기 위해서 직접 2apple 값을 md5 해시로 구해보겠습니다.

image

해시 값이 나왔습니다. 예상대로 해당 사이트는 회원가입을 하면 모두 동일한 salt 값을 사용하여 비밀번호 + apple을 해시한 값을 db에 저장하는 것 같습니다.

해당 문제를 풀려면 ‘admin’으로 로그인을 해야 하는데, 일단 ‘admin’ 계정의 비밀번호를 알아야 합니다. 첫 페이지를 보면 테이블의 컬럼명을 주었습니다. 아마 이를 이용해서 sql injection 후, admin 계정의 해시 값을 구한 다음, 해당 해시 값을 복호화 하여 로그인을 해야할 것 같습니다.

문제 풀이

우선 로그인 페이지에서 비밀번호가 틀리면 다음과 같이 Login Fail!이 나옵니다.

image

username쪽에 'or 1=1--을 입력했더니 다음과 같이 wrong password가 나옵니다

image

'or 1=2--을 입력했더니 다음과 같이 Login Fail이 나옵니다.

image

이를 이용해서 Blind Sql injection 수행이 가능해 집니다.

파이썬 코드로 구했으며, 이전 포스팅에서도 알고리즘에 대해서는 설명했으며, 동일한 코드를 그대로 사용해도 문제가 풀리기 때문에 자세한 코드에 대한 설명은 해당 포스팅을 참고 바랍니다.

image

비밀번호의 해시 값을 구했습니다

    6c9ca386a903921d7fa230ffa0ffc153

이 값을 디코딩 해봅니다.

image

해당 웹사이트에서는 제가 찾는 단어가 사전에 없나 봅니다. 이럴 때는 다른 사이트를 검색해서 추가적으로 찾아봐야 합니다.

md5 hash decrypt online같은 키워드로 구글에 검색하면 관련 사이트가 많이 나옵니다.

image

2차 실패

image

이번 사이트는 단순히 해시값만 보고 연산을 하는 것이 아닌 salt를 고려해서 해시 값을 찾아주는 것 같습니다. 해당 사이트에 salt와 hash 값을 입력해주니 wowapple이라는 결과가 나왔습니다. 따라서 admin의 비밀번호는 wow입니다.

image

admin / wow 로그인 시 클리어

image

  • 추가로 해당 사이트에서도 rainbow_table을 만들어서 디크립트를 한다고 합니다

image

댓글남기기