[그림 1]

로그인 창과 가입 창이 보인다. 나는 계정이 없으니 가입 부터 눌러보자

[그림 2]

접근이 거부되었다. 로그인 부터 들어가보자

로그인 창에는 들어가진다.

혹시나 해서 admin/admin을 입력해봤다.

[그림 2]

역시나 안된다. guest/guest는? 마찬가지다.

다시 메인 화면으로 와서 코드를 확인해보자

[그림 3]

mem/lognin.php 주소로 로그인 페이지로 이동되는 반면 가입 페이지는 스크립트로 막혀있다.

로그인 페이지가 mem/login.php인걸로 미루어 보아 mem/join.php는 가입 페이지라고 추측해보았다.

이를 url에 입력해보자

[그림 4]

들어오자마자 가란다 그래도 입뺀은 면했다.

가입 페이지의 코드를 한번 확인해보자

[그림 5]

코드를 잘라서 올렸지만 딱 보기에도 더럽다 스크립트 언어를 정리해 주는 방법을 찾아보자

http://jsbeautifier.org/ 이 사이트를 참고해서 정리해보았다.(구글링 하세요 왠만한거 다나옵니다.)

더보기

l = 'a';
ll = 'b';
lll = 'c';
llll = 'd';
lllll = 'e';
llllll = 'f';
lllllll = 'g';
llllllll = 'h';
lllllllll = 'i';
llllllllll = 'j';
lllllllllll = 'k';
llllllllllll = 'l';
lllllllllllll = 'm';
llllllllllllll = 'n';
lllllllllllllll = 'o';
llllllllllllllll = 'p';
lllllllllllllllll = 'q';
llllllllllllllllll = 'r';
lllllllllllllllllll = 's';
llllllllllllllllllll = 't';
lllllllllllllllllllll = 'u';
llllllllllllllllllllll = 'v';
lllllllllllllllllllllll = 'w';
llllllllllllllllllllllll = 'x';
lllllllllllllllllllllllll = 'y';
llllllllllllllllllllllllll = 'z';
I = '1';
II = '2';
III = '3';
IIII = '4';
IIIII = '5';
IIIIII = '6';
IIIIIII = '7';
IIIIIIII = '8';
IIIIIIIII = '9';
IIIIIIIIII = '0';
li = '.';
ii = '<';
iii = '>';
lIllIllIllIllIllIllIllIllIllIl = lllllllllllllll + llllllllllll + llll + llllllllllllllllllllllllll + lllllllllllllll + lllllllllllll + ll + lllllllll + lllll;
lIIIIIIIIIIIIIIIIIIl = llll + lllllllllllllll + lll + lllllllllllllllllllll + lllllllllllll + lllll + llllllllllllll + llllllllllllllllllll + li + lll + lllllllllllllll + lllllllllllllll + lllllllllll + lllllllll + lllll;
if (eval(lIIIIIIIIIIIIIIIIIIl).indexOf(lIllIllIllIllIllIllIllIllIllIl) == -1)l = 'a';
ll = 'b';
lll = 'c';
llll = 'd';
lllll = 'e';
llllll = 'f';
lllllll = 'g';
llllllll = 'h';
lllllllll = 'i';
llllllllll = 'j';
lllllllllll = 'k';
llllllllllll = 'l';
lllllllllllll = 'm';
llllllllllllll = 'n';
lllllllllllllll = 'o';
llllllllllllllll = 'p';
lllllllllllllllll = 'q';
llllllllllllllllll = 'r';
lllllllllllllllllll = 's';
llllllllllllllllllll = 't';
lllllllllllllllllllll = 'u';
llllllllllllllllllllll = 'v';
lllllllllllllllllllllll = 'w';
llllllllllllllllllllllll = 'x';
lllllllllllllllllllllllll = 'y';
llllllllllllllllllllllllll = 'z';
I = '1';
II = '2';
III = '3';
IIII = '4';
IIIII = '5';
IIIIII = '6';
IIIIIII = '7';
IIIIIIII = '8';
IIIIIIIII = '9';
IIIIIIIIII = '0';
li = '.';
ii = '<';
iii = '>';
lIllIllIllIllIllIllIllIllIllIl = lllllllllllllll + llllllllllll + llll + llllllllllllllllllllllllll + lllllllllllllll + lllllllllllll + ll + lllllllll + lllll;
lIIIIIIIIIIIIIIIIIIl = llll + lllllllllllllll + lll + lllllllllllllllllllll + lllllllllllll + lllll + llllllllllllll + llllllllllllllllllll + li + lll + lllllllllllllll + lllllllllllllll + lllllllllll + lllllllll + lllll;
if (eval(lIIIIIIIIIIIIIIIIIIl).indexOf(lIllIllIllIllIllIllIllIllIllIl) == -1) {
    alert('bye');
    throw "stop";
}
if (eval(llll + lllllllllllllll + lll + lllllllllllllllllllll + lllllllllllll + lllll + llllllllllllll + llllllllllllllllllll + li + 'U' + 'R' + 'L').indexOf(lllllllllllll + lllllllllllllll + llll + lllll + '=' + I) == -1) {
    alert('access_denied');
    throw "stop";
} else {
    document.write('Join

');
    document.write('.

.

.

.

.

');
    document.write('

');
    document.write('');     document.write('');     document.write('
id
pass

');
}

음 난잡한 코드를 돌려보았더니 이런식으로 정리가 되었다. | 개수별로 단어를 나타내는 것 이었다.

코드를 해석해보면(python으로 코드짜서 돌려보시길 추천합니다)

[그림 6]

Cookie값으로 oldzombie가 없으면 bye가 출력되고

URL에 mode=1이 들어 있지 않으면 access_denied가 뜬다.

1번 문제 풀때 썼던 editthiscookie로 쿠키값을 만들어주자

[그림 7]

/mem/join.php?mode=1이라고 주소를 입력하고 들어가면

[그림 8]

문제가 또나온다. 

admin/admin, guest/guest를 넣어보자

[그림 9]

admin은 있다고 나오고 guest는

[그림 10]

가입 성공이란다.

로그인 해보자

[그림 11]

admin 접근하여야 flag가 나오는 것으로 보인다.

admin으로 로그인하라는 것으로 보아 admin이라는 문자열을 온전하게 넣는 방법을 찾아봐야 될것 같다.

 

몇 시간 동안 다양한 시도와 고민 끝에 whitespace, 즉 공백을 떠올렸다 넣어보자

여러 시도 끝에 '    admin        ' 공백을 넣은 온전한 admin으로 가입을 성공 시켰다.

[그림 12]

성공했다

 

온전한 admin을 받는다는 사실을 알아내느라 여러 시행착오를, 어떻게 admin을 온전하게 받게 할것인지 고민 하는라 많은 시간을 들였다.

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

Webhacking 7번 문제 풀이  (0) 2020.02.03
Webhacking 6번 문제 풀이  (1) 2020.01.30
Webhacking 4번 문제풀이  (0) 2020.01.29
Webhacking 3번 문제풀이  (0) 2020.01.29
Webhacking 1번 문제풀이  (0) 2020.01.28

+ Recent posts