문제를 보면 파일은 USB 이미지 파일이다.

USB는 FAT32 파일 시스템을 사용한다.

파일을 HxD로 열어보면 

FAT32 파일시스템의 BR은 1섹터(512byte)의 크기를 가지고 있고, 55 AA로 끝난다.

이 USB 이미지를 보면 BR부분이 망가져 있다.

처음부터 55 AA 까지의 길이는  296이므로 512byte가 되려면 296 byte 만큼 00 으로 추가 해 주어야 한다.

파일을 저장하고 FTK Imager 이라는 툴을 이용해 이 이미지 파일을 열면 

2차 테러 계획이라는 파일이 보인다.

이 파일을 다운로드 받아 속성을 보면 

문서의 수정 일시는 2016-05-30_11:44:02 이고,

테러 장소는 Rose Park 이다. 


이 답들을 조합하여 md5로 해시하면 문제가 해결된다.








pdf 파일을 다운받아서 열어보면 다음과 같은 내용이 있다.


이 pdf를 PDFStreamDumper 이라는 pdf파일 분석 툴을 이용하여 분석해 보겠다.

이렇게 40개의 항목들로 나눠져 분석이 되는데 39번을 보면 pdf헤더가 존재한다.

이 39번을 pdf 파일로 추출할 수 있다.

39번을 우클릭하고 Save Decompressed Stream 을 클릭하고 확장자를 pdf로 저장하면 pdf 파일로 추출할 수 있다.

추출한 pdf를 열려고 하니 잠겨있다. 


온라인 pdf 잠금 해제 하는곳에서 잠금 해제를 할 수 있다

https://smallpdf.com/kr/unlock-pdf


잠금 해제된 pdf를 다시 열면 키값을 찾을 수 있다.






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

[webhacking.kr] Challenge 3  (0) 2019.02.21
[webhacking.kr] Challenge 6  (0) 2019.02.18
[SuNiNaTaS] Forensic 30  (0) 2019.02.10
[SuNiNaTaS] Forensic 29  (0) 2019.02.09
[SuNiNaTaS] Forensic 28  (0) 2019.01.31

문제를 보면 3가지의 문제가 있고, 파일을 다운로드하면 메모리 덤프 파일을 얻을 수 있다.


메모리 분석 툴인 볼라틸리티(volatility)를 활용해서 풀어보겠다.

우선 imageinfo를 활용하여 이미지의 정보를 확인해 보았다.

이 정보를 확인 해야 이것을 활용하여 다른 명령어가 사용 가능하다.

정보를 확인하면 Windows7 OS를 사용하고 있고, --profile 옵션으로 프로필 정보를 써야 다른 정보를 얻을 수 있다.


첫 번째 문제인 김장군 PC의 IP 주소는 netscan 명령을 이용하여 확인할 수 있다.

위 정보를 보면 IP 주소는 192.168.197.138 이다.


두 번째 문제인 기밀문서 파일명은 프로세스 정보를 확인하여 실행한 프로세스들의 정보를 확인해 보아야겠다.

프로세스들의 부모자식 관계를 보여주는 pstree 명령으로 확인을 해 보았다.

정보를 확인해 보면 cmd 프로세스를 통해 notepad(메모장)가 실행되었다.


cmdscan명령을 통해 cmd로 실행한 notepad의 정보를 더 얻을 수 있다.

파일명과 그 파일의 경로를 알 수 있다. 파일 명은 SecreetDocument7.txt 이다.


세 번재 문제인 문서의 내용을 보려면 파일 추출 도구인 r-studio를 이용하여 저 문서의 내용을 확인 할 수 있다.

데모 버전을 사용하여도 기본적인 파일 추출은 가능하다.

메모리 덤프 파일을 스캔한 후에 cmdscan으로 얻은 경로에 들어가보면 문서를 확인할 수 있다.

key값은 4rmy_4irforce_N4vy 이다.


답들을 조합하여 md5로 해시하면 문제가 해결 된다.






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

[webhacking.kr] Challenge 6  (0) 2019.02.18
[SuNiNaTaS] Forensic 31  (0) 2019.02.11
[SuNiNaTaS] Forensic 29  (0) 2019.02.09
[SuNiNaTaS] Forensic 28  (0) 2019.01.31
[SuNiNaTaS] Forensic 26  (0) 2019.01.27

문제 파일을 다운로드 받으면 Windows7(SuNiNaTaS) 라는 파일이 다운로드 된다.


이 파일을 HxD에 넣어 파일 시그니처를 확인 해 보면 

egg 파일이다. 확장자를 .egg로 바꾸어 확인을 해보면 

vmware 가상머신 파일임을 알 수 있다.

가상머신을 실행 시켜보면 Windows7로 부팅할 수 있는데 부팅을 하면 

30초 뒤에 자동으로 꺼지도록 설정이 되어 있다.

cmd에서 shutdown /a 명령어로 설정을 제거한다.


첫 번째 문제는 네이버에 들어가면 사이버 경찰청 홈페이지로 들어가지는 원인을 찾아야 한다.

hosts파일이 변조되어 naver 주소가 사이버 경찰청 ip로 연결 되어 있는 것 같다.

hosts 파일의 경로는 C:\Windows\System32\drivers\etc 에 있다.

이 폴더를 보면 hosts파일이 있는데 txt 파일이다. hosts파일은 원래 txt 파일이 아니다. 

폴더 옵션에서 숨김파일 표시로 설정하게 되면 

hosts 파일이 나타나게 된다. 

hosts 파일을 메모장으로 열어보면 key값이 보인다.


두 번째 문제를 보면 키 로거의 절대 경로 및 파일명을 알아내라고 한다.

컴퓨터에서 최근위치를 가보면 여러 폴더들이 있는데 그중 v1valv 폴더에 들어가 보면 C:\v196vv8\v1valv\Computer1\24052016 #training\ss 경로에 

9.jpg 파일을 보면 키 로거의 절대 경로를 알 수 있다.


세 번째 문제를 보면 키로거가 다운로드된 시간은 BrowsingHistoryView 라는 프로그램을 써서 

모든 시간대로 설정하고 프로그램을 실행시키면 다운로드된 시간을 찾을 수 있다.


네 번째 문제를 보면 키로거를 통해 알아내고자 했던 내용은 

2번 문제를 해결하기 위해 접속했던 C:\v196vv8\v1valv\Computer1\24052016 #training 폴더에 z1.dat 파일을 메모장으로 열어보면 key 값이 보인다.


4개의 답들을 조합하여 md5로 해시하면 문제가 해결된다.









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

[SuNiNaTaS] Forensic 31  (0) 2019.02.11
[SuNiNaTaS] Forensic 30  (0) 2019.02.10
[SuNiNaTaS] Forensic 28  (0) 2019.01.31
[SuNiNaTaS] Forensic 26  (0) 2019.01.27
[SuNiNaTaS] Forensic 21  (0) 2019.01.24

문제를 다운 받아보면 zip파일이 다운로드 되는데, 이 zip파일에는 암호가 걸려져 있어서 압축을 해제할 수 없다.

파일의 구조를 보기 위해 HxD로 열어보면 

파일 시그니처 시작점으로 부터 offset 06, 07번의 값이 09 08 로 되어 있는데 이는 암호화 된 zip 파일을 의미한다고 한다.

이 파일의 09 08 이라는 값을 모두 기본값인 00 00 으로 바꾸고 저장을 해 준다.

저장을 하고 압축을 풀면 3개의 파일이 나오는 데 

이중 zip파일을 다시 압축 해제하여 메모장에 있는 key값을 base64로 디코딩 하면 key 값을 얻을 수 있다.

dGE1dHlfSDR6M2xudXRfY29mZmVl -> ta5ty_H4z3lnut_coffee









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

[SuNiNaTaS] Forensic 30  (0) 2019.02.10
[SuNiNaTaS] Forensic 29  (0) 2019.02.09
[SuNiNaTaS] Forensic 26  (0) 2019.01.27
[SuNiNaTaS] Forensic 21  (0) 2019.01.24
[SuNiNaTaS] Forensic 19  (0) 2019.01.22

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

처음 화면


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