0과 1이 연속으로 있는것을 보니 이진수인것 같다. 


바이너리를 텍스트로 변환해 주는 사이트에서 변환을 해보면 문자열이 하나 나온다.

http://www.unit-conversion.info/texttools/convert-text-to-binary/

NVCTFDV KF JLEZERKRJ REU KFURP ZJ R XFFU URP REU RLKYBVP ZJ GCRZUTKWZJMVIPYRIU 라는 문자열이 나오는데 키 값을 입력해보면 이것이 정답은 아닌 것 같다.
이 문자열을 보면 어느정도 간격마다 띄어쓰기가 되어 있는것을 보니 카이사르 암호가 적용된것 같다.


카이사르 암호는 암호화하고자 하는 내용을 알파벳별로 일정한 거리만큼 밀어서 다른 알파벳으로 치환하는 방식이다.


카이사르 암호를 복호화 할 수 있는 사이트에서 복호화를 하면 https://www.dcode.fr/caesar-cipher

WELCOME TO SUNINATAS AND TODAY IS A GOOD DAY AND AUTHKEY IS PLAIDCTFISVERYHARD

라는 값이 나오며 key값을 얻을 수 있다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 26  (0) 2019.01.27
[SuNiNaTaS] Forensic 21  (0) 2019.01.24
[SuNiNaTaS] Forensic 18  (0) 2019.01.19
[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13

문제를 보면 숫자들이 있는데 숫자들이 띄어져 있는 형태가 아스키 코드인 것 같다.

숫자를 아스키 코드로 변환해 주는 사이트가 있다.

https://www.browserling.com/tools/ascii-to-text


저 사이트에서 숫자들을 아스키 문자열로 바꾸어 주게 되면VG9kYXkgaXMgYSBnb29kIGRheS4gVGhlIEF1dGhLZXkgaXMgVmVyeVZlcnlUb25nVG9uZ0d1cmkh 라는 값이 나온다.

이 값을 키값으로 입력하면 키 값이 너무 길다고 나온다.


base64로 저 값을 디코딩 해보면 

Today is a good day. The AuthKey is VeryVeryTongTongGuri! 라는 값이 나오며 문제를 해결된다.


'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 21  (0) 2019.01.24
[SuNiNaTaS] Forensic 19  (0) 2019.01.22
[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 4  (0) 2018.12.28

힌트를 보면 Key는 파일 안에 있다고 하고 노래를 들을 수 있고, 다운 받을 수도 있다. 

노래를 다운받으면 다이어리 라는 노래가 다운받아진다.



이 파일의 속성에 들어가 '자세히'를 누르면 지휘자에 Key값으로 추측되는 내용이 들어가 있다.

키값에 GoodJobMetaTagSearch 를 입력해보면 문제가 해결 된다.




'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 19  (0) 2019.01.22
[SuNiNaTaS] Forensic 18  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 4  (0) 2018.12.28
[webhacking.kr] Challenge 14  (0) 2018.12.14

suninatasd의 패스워드를 찾으면 되는 것 같다.

파일을 다운로드 받으면 tar 파일이 나오는데 .tar 파일은 리눅스에서 여러개의 파일을 하나로 묶을때의 확장자이다.


tar파일의 압축을 풀어보면 passwd 파일과, shadow 파일이 있다.

이 두 파일을 메모장으로 열어보면 다음과 같은 파일이 있다.

[passwd]

[shadow]

passwd 파일은 리눅스의 계정 목록이 있는 파일이고  shadow는 계정의 암호가 암호화 되어 저장되어 있는 파일이다.


shadow 파일은 : (클론)을  기준으로 내용이 구분되어 있고, 클론을 기준으로 클론 사이사이에는 다음과 같은 내용이 있다.

1. 계정 이름

2. 패스워드를 암호화 시킨 값

3. 1970년 1월 1일부터 패스워드가 수정된 날짜의 일 수

4. 패스워드가 변경되기 전 최소 사용 기간

5. 패스워드 변경 전 최대 사용 기간

6. 패스워드 사용 만기일 전에 경고 메시지를 제공하는 일 수

7. 로그인 접속 차단 일 수

8. 로그인 사용을 금지하는 일 수

9. 예약필드. 사용하지 않음


2번 항목에는 $를 기준으로 [$Hashid$Salt$Hash value]로 구분된다.

해시로 암호화 될때는 같은 내용은 무조건 같은 해시값을 갖는다. 

그래서 랜덤의 솔트값을 추가하여 같은 내용이라도 다른 해시 값을 갖도록 한다.

Hash id로 많이 사용 되는 것은 1,5,6이다.



이 파일들을 보면 suninatas라는 계정이 있고, 이 계정의 암호는 암호화 되어 shadow 파일에 저장되어 있다. 

john이라는 암호화 크랙툴을 이용하여 shadow파일을 크랙하면 암호를 볼 수 있을 것 같다.



john이라는 도구를 이용하면 root와 suninatas 계정의 password를 알 수 있다.

root의 password는 toor, suninatas의 password는 iloveu1이 나온다.


'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 18  (0) 2019.01.19
[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[webhacking.kr] Challenge 4  (0) 2018.12.28
[webhacking.kr] Challenge 14  (0) 2018.12.14
[webhacking.kr] Challenge1  (0) 2018.12.12

4번문제 페이지에 들어가면 문자열과 Password 입력 칸이 있다.

저 문자열을 해석하여 나온 값을 Password에 넣으면 되는 것 같다.


YzQwMzNiZmY5NGI1NjdhMTkwZTMzZmFhNTUxZjQxMWNhZWY0NDRmMg== 

이 문자열의 끝에 '='가 있는 것을 보니 base64로 디코딩 해야 할 것 같다.


https://www.base64decode.org/

이 홈페이지에서 저 문자열을 넣어 디코딩을 하면 c4033bff94b567a190e33faa551f411caef444f2 라는 문자열이 나온다.

Password에 디코딩한 문자열을 입력해 보았지만 문제는 풀리지 않았다.


c4033bff94b567a190e33faa551f411caef444f2 문자열은 영소문자+숫자의 문자가 40개로 이루어진 문자열이므로 SHA1 알고리즘으로 암호화 된 것 같다.


https://hashtoolkit.com/

이 홈페이지에서 c4033bff94b567a190e33faa551f411caef444f2 를 해독하면 a94a8fe5ccb19ba61c4c0873d391e987982fbbd3가 나오고
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3를 한번더 해독하면 'test' 라는 문자열이 나온다.

test라는 문자열을 Password에 입력하면 문제가 해결된다.


'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 14  (0) 2018.12.14
[webhacking.kr] Challenge1  (0) 2018.12.12
[webhacking.kr] Challenge 5  (0) 2018.11.24

소스 코드를 보면

script에 indexOf()라는 함수를 사용한다. 그리고 바로 밑 줄을 보면 이 함수 값의 *30을 한 값을 저 텍스트 박스에 넣으면 되는것 같다.

indexOf() 함수는 괄호 안에 있는 문자열의 위치의 값을 반환한다.

".kr"이라는 문자열이 있는 곳은 이 페이지의 url 주소 이다.

이 페이지의 url 주소는 http://webhacking.kr/challenge/javascript/js1.html 이므로

.kr의 위치는 첫 위치를 0부터 세기 때문에 17번째에 있다.

17 * 30 = 510 이므로 510을 넣어보면 


260100이라는 password값을 알려준다. 


이 패스워드 값을 AUTH에 넣어주면 문제가 해결된다!



'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 4  (0) 2018.12.28
[webhacking.kr] Challenge1  (0) 2018.12.12
[webhacking.kr] Challenge 5  (0) 2018.11.24

1번 문제의 소스코드를 보면 아래 부분에 위와 같은 부분이 있다. 


if문의 밑에 두줄을 해석해보면 COOKIE의 user_lv값이 6이상이면 COOKIE값이 1이 되고,

COOKIE의 user_lv 값이 5보다 크다면 문제가 해결되는것 같다.


크롬 확장 프로그램인 EditThisCookie를 실행해보면, 값에 초기 화면과 같은 값인 1이 있다.

이 값에 5보다 크며 6보다 작은 값을넣어주면 문제가 해결된다. 

Success!


'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 4  (0) 2018.12.28
[webhacking.kr] Challenge 14  (0) 2018.12.14
[webhacking.kr] Challenge 5  (0) 2018.11.24

처음 화면


Login버튼을 Login 페이지에 들어가진다.


SQL Injection 기본 쿼리문을 입력해 보았을때는 로그인 되지 않았다.




처음 화면에 join 버튼을 눌러보았더니 Access_Denied라는 메세지가 뜨며 페이지에 들어가지지 않았다.


login페이지의 url 주소를 보니 마지막에 login.php라고 쓰여 있었다.

그래서 ' webhacking.kr/challenge/web/web-05/mem/join.php '의 주소로 접속을 시도해 보았다.


접속은 성공하였지만 빈화면이였다. 개발자 환경을 이용하여 소스코드를 보았더니 난독화된 스크립트가 보인다.


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) {

    bye;

}

if (eval(llll + lllllllllllllll + lll + lllllllllllllllllllll + lllllllllllll + lllll + llllllllllllll + llllllllllllllllllll + li + 'U' + 'R' + 'L').indexOf(lllllllllllll + lllllllllllllll + llll + lllll + '=' + I) == -1) {

alert('access_denied');

    history.go(-1);

} else {

    document.write('<font size=2 color=white>Join</font><p>');

    document.write('.<p>.<p>.<p>.<p>.<p>');

    document.write('<form method=post action=' + llllllllll + lllllllllllllll + lllllllll + llllllllllllll + li + llllllllllllllll + llllllll + llllllllllllllll +

        '>');

    document.write('<table border=1><tr><td><font color=gray>id</font></td><td><input type=text name=' + lllllllll + llll + ' maxlength=5></td></tr>');

    document.write('<tr><td><font color=gray>pass</font></td><td><input type=text name=' + llllllllllllllll + lllllllllllllllllllllll + ' maxlength=10></td></tr>');


난독화된 코드를 해석하면 document.cokie indexOf(oldzombie), document.URL mode=1 이라는 내용을 얻을 수 있다.

(해석은 하나하나 대입하면서 했다.... 머리가 나쁘면 몸이 고생...)


해석에 따라' webhacking.kr/challenge/web/web-05/mem/join.php?mode=1 '에 접속해 보았지만 달라진 점은 찾을수 없었다.

그래서 EditThisCookie라는 확장 프로그램을 이용하여 oldzombie라는 쿠키를 추가해 보았다.

id와 password를 만들수 있는 텍스트박스가 나왔다.


id를 아까 나온 admin으로 해서 만들어 보려고 했지만 이미 존재하는 아이디라고 만들어지지는 않는다.


다른 아이디를 만들어서 로그인을 시도했는데 id가 admin이 아니라고 로그인이 되지 않는다.


다시 join.php로 들어와서 개발자 환경에서 

아이디의 최대길이를 5에서 6으로 바꿔준다.

그리고 아이디 admin에 공백을 추가하고 계정을 만들면 계정이 잘 만들어지고

'admin'으로 로그인하면 문제가 해결된다!!













'Security & Hacking > Wargame' 카테고리의 다른 글

[SuNiNaTaS] Forensic 15  (0) 2019.01.19
[SuNiNaTaS] Forensic 14  (0) 2019.01.13
[webhacking.kr] Challenge 4  (0) 2018.12.28
[webhacking.kr] Challenge 14  (0) 2018.12.14
[webhacking.kr] Challenge1  (0) 2018.12.12

+ Recent posts