(사이트 ui가 바뀌어서 마음에 들지는 않지만ㅜㅠ)
차근차근 풀어봅시다!
왼쪽의 코드는 user라는 쿠키가 없을 때, setcookie를 통해 새로 쿠키를 생성해주는 코드이다.
하나하나 코드를 뜯어보는 것도 좋지만, 효율적인 풀이를 위해 중요한 부분만 보자!
그렇다면 왼쪽은 버리고 오른쪽 코드를 보면 아래 부분에 solve(6)이 있다.
이제 왼쪽 위주로 보자.
1) solve(6) 근처
먼저 solve(6) 근처를 보면
decode_id와 decode_pw 변수에 있는 값이 "admin"이고, "nimda"이면 solve(6) 함수를 호출한다.
그렇다면 두 변수는 어디서 선언이 되는가?
다시 처음부터 올라가서 보자
2) decode_id, decode_pw의 생성
코드를 보니, decode_id와 decode_pw는 user와 password라는 쿠키를 통해 가져온다!
그 밑에 str_replace가 반복적으로 호출되며 변수 안에 포함된 특수문자들을 숫자로 바꾸고 있다.
!은 1로, @은 2로, $은 3으로 etc...
3) 변수에 추가작업
기존의 decode_id와 decode_pw를 base 64 decode를 해서 다시 변수에 넣고 있으며,
결과적으로 나온 id와 pw를 화면에 출력해주고 있다.
4) 결론
decode를 20번 해 준 변수가 'admin', 'nimda' 여야한다.
>반대로 encode를 20번 해주면 됨
!은 1로, @은 2로, $은 3으로...
>반대로 1은 !로, 2는 @로, 3은 $로 바꿔주면 됨
[결과]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
//변수 선언
var id = 'admin';
var pw = 'nimda';
//encode 20번씩
for(var i=0;i<20;i++){
id = btoa(id);
pw = btoa(pw);
}
//문자를 숫자로
id = char_to_num(id);
pw = char_to_num(pw);
//문자를 숫자로 바꿔주는 함수
function char_to_num(str){
str = str.replace('1', '!');
str = str.replace('2', '@');
str = str.replace('3', '$');
str = str.replace('4', '^');
str = str.replace('5', '&');
str = str.replace('6', '*');
str = str.replace('7', '(');
str = str.replace('8', ')');
return str;
}
console.log(id);
console.log(pw);
|
결과로 긴 값이 나온다.
그러면 이 값을 가지고 복사해와서 그대로 editCoockie를 이용하여 쿠키값을 변조해준다.
야호
'Hacking > Webhacking' 카테고리의 다른 글
[webhacking.kr] no.15 (0) | 2020.06.05 |
---|---|
[webhacking.kr] 로그인 / 가입 (0) | 2020.06.05 |