메인화면입니다.

소스보기 입니다.

"uuid", "pw"를 POST방식으로 사용 하는 것을 확인 할 수 있습니다.

먼저 가입을 해봤습니다.

"test1234/1234"

가입이 완료 되었습니다.

그럼 이번엔 로그인을 해보겠습니다.

로그인을 하자 hash 값이 표시가 되네요 ~

32개의 문자인 것으로 보아 MD5일 확률이 높은 것 같습니다.

id와 pw부분에 인젝션 시도를 해보았으나 id부분에서 인젝션이 가능했습니다.

[참일 경우]

"Wrong password!"라는 문자가 보입니다.

[거짓일 경우]

"Login Fail!"이라는 문자가 보입니다.

비밀번호가 Hash값으로 저장되어 있고 32개의 문자가 저장되어 있다는 것을 알고 있기 때문에 쿼리문이 참인지 확인하기 위해 "test1234' and pw='' or length(pw)=32#"으로 패스워드의 길이가 32인지 확인해 보겠습니다.

[결과]

결과는 참이네요 ! 인젝션이 제대로 먹히고 있습니다.

저는 총 3가지 쿼리로 id가 "test1234"인 pw의 문자열 쿼리를 시도해보았습니다.

이유는 "test1234"의 비밀번호는 "325f7e02fa1f90826b88114be7fd3f9c"로 저장되어 있으므로 첫글자를 확인하여 쿼리가 정상적으로 먹히는지 확인할 수 있기 때문입니다.

1. "test1234' and pw='' or id='test1234' and substr(pw,1,1)=3#" -> 실패

2. "test1234' and pw='' or id='test1234' and mid(pw,1,1)=3#" -> 실패

3. "test1234' and pw='' or id='test1234' and right(left(pw,1),1)=3#" -> 성공

파이썬으로 자동화 시키면 아래와 같은 결과를 얻을 수 있습니다.

"6c9ca386a903921d7fa230ffa0ffc153" 이란 결과를 얻었습니다.

이제 이 문자열을 복호화 시키면 될 것 같습니다.

그전에 저는 "test1234"의 비밀번호인 "325f7e02fa1f90826b88114be7fd3f9c"를 복호화해두었습니다.

이제 admin의 pw인 "6c9ca386a903921d7fa230ffa0ffc153"를 복호화 하겠습니다.

1234에 apple 문자열을 붙여서 MD5로 암호화 했던 것으로보아 admin의 pw는 wow인 것 같습니다.

이제 wow를 입력해보겠습니다.

챌린지 22 성공!!

소스코드도 첨부하겠습니다~

challenge22.py
0.00MB

'WAR GAME > Webhacking.kr' 카테고리의 다른 글

[webhacking.kr] Level24 (old)  (316) 2020.04.28
[webhacking.kr] Level23 (old)  (313) 2020.04.28
[webhacking.kr] Level21 (old)  (307) 2020.04.28
[webhacking.kr] Level20 (old)  (308) 2020.04.28
[webhacking.kr] Level19 (old)  (317) 2020.04.28

+ Recent posts