no image
해커스쿨 FTZ level7
level7 level7로 로그인한 후 힌트를 확인했다. /bin/level7을 실행한 후 임의의 password를 입력했다. 그러니 wrong.txt가 존재하지 않는다고 에러가 났다. 찾아보니 이는 해커스쿨 FTZ의 오류라고 해서 root로 로그인하여 해당 파일을 생성했다. Can't Password. Near the Password! --_--_- --____- ---_-__ --__-_- 그런 다음 동일하게 임의의 비밀번호를 입력해보니 정상적으로 파일의 내용이 떴다. 이제 이것을 해석해야 한다. 힌트를 보면 눈치챌 수 있는데, 이는 2진수를 변환한 것이다. -는 1, _는 0으로 변환하여 2진수를 10진수로 변환해보면 109 97 116 101가 된다. 하지만 이는 패스워드가 아니다. 다음으로는 아..
2020.08.22
no image
해커스쿨 FTZ level16
level6 level6으로 로그인하면 힌트가 뜬다. 또한 엔터를 입력하면 텔넷 접속 서비스가 뜨게 된다. 서비스를 종료하기 위해서 ctrl+c를 입력했지만 ctrl+c를 사용할 수 없다고 뜬다. * Ctrl-C (in older Unixes, DEL) sends an INT signal ("interrupt", SIGINT); by default, this causes the process to terminate. https://en.wikipedia.org/wiki/Signal_(IPC) putty를 다시 실행해 hint에서 ctrl+c로 프로세스를 중단하니 쉘 환경으로 돌아갈 수 있었다. 파일 리스트를 확인하니 password 파일이 존재했다. 파일 내용에서 level7의 비밀번호를 획득할 수 있었..
2020.08.20
no image
해커스쿨 FTZ level5
level5 힌트를 확인해보았다. /usr/bin/level5 프로그램이 /tmp에 level5.tmp 파일을 생성한다고 하여서 먼저 프로그램을 실행시킨 후 확인해보았다. 프로그램을 실행시킨 후 폴더를 확인해봤지만 파일이 존재하지 않았다. level5 프로그램은 임시 파일을 생성한 후, 곧바로 파일을 다시 삭제시키는 것 같았다. race.c와 create.c 프로그램을 작성하여 컴파일했다. race.c는 레이스 컨디션을 하는 코드이고, create.c는 /usr/bin/level5 프로그램을 무한으로 실행하는 코드이다. 이때 레이스 컨디션이란 한정된 자원을 동시에 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌이는 현상이다. 레이스 컨디션 코드는 구글링을 하여 찾아 작성했다. // race.c ..
2020.08.15
no image
해커스쿨 FTZ level4
level4 먼저 힌트를 확인했다. /etc/xinetd.d/에 백도어를 심어놓았다고 해서 해당 폴더로 이동했다. xinetd(extended Internet daemon)는 오픈 소스 슈퍼 서버 데몬으로서 많은 유닉스 계열 시스템에서 돌아가며 인터넷 기반 연결을 관리한다. 이것은 오래된 inetd의 대체로서 더 강력한 보안을 제공하며, 대부분의 현대 리눅스 배포판에서는 이것을 사용한다. 폴더의 파일 리스트를 확인하니 백도어가 존재했다. 백도어 파일을 확인해보니 finger 서비스가 등록되어 있었다. 이때 중요하게 볼 것은 user와 server이다. user는 서버 프로세스를 실행할 수 있는 사용자의 아이디를 나타내고, server는 해당 서비스를 실행할 데몬 프로그램의 위치를 나타낸다. 즉 해당 위치..
2020.08.08
no image
해커스쿨 FTZ level3
level3 힌트를 확인해보면 autofig 프로그램의 소스코드와 하단의 more hints가 존재한다. 동시에 여러 명령어를 사용하려면 ;(세미콜론)을 사용한다. 또한 문자열 형태로 명령어를 전달하려면 ""(쌍따옴표)를 사용한다. level4의 권한을 가진 파일을 찾아보면 힌트에서 확인했던 autodig를 확인할 수 있다. 이제 autodig의 인자열을 정해야한다. "dig@ ~ version.bind chaos txt" 명령어는 버전을 확인할 수 있는 명령어이다. 그 인자로 임의의 ip 주소를 주고, ;을 사용해서 sh을 실행시켜준다. 또한 문자열 형태로 명령어를 전달해야 하므로 ""에 묶어서 인자로 넣으면 password가 출력된다. suck my brain
2020.08.06
no image
해커스쿨 FTZ level2
level2 힌트를 확인해보니 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다고 한다. 무슨 의민지 모르겠어서 찾아보니 vi나 vim 등으로 텍스트 파일을 편집하다가 :sh을 입력하면 다시 쉘로 이동할 수 있다고 한다. 또한 확인해보니 쉘 이외의 명령어들도 적용이 가능했다. 이렇게 명령어를 입력해도 명령어가 실행됐다. 방법은 알았으니 level3 권한을 가진 파일이 있는지 확인해보았다. find 명령을 사용해 찾아보니 에디터를 찾을 수 있었다. 에디터를 실행시켜 아까와 동일하게 명령어를 입력해보니 패스워드가 출력됐다. can you fly?
2020.08.01
no image
csictf 2020
cascade http://chall.csivit.com:30203/ 문제에 들어가보면 "/static/stype.css"가 있다. 해당 위치로 이동해보면 css 속성들과 그 사이에 주석으로 flag가 존재한다. csictf{w3lc0me_t0_csictf} oreo http://chall.csivit.com:30243/ 문제에 접속한 뒤 쿠키를 확인해보면 flavour이라는 쿠키가 추가된다. 값을 base64로 디코딩해보면 strawberry라고 뜬다. 하지만 chocolate 오레오를 먹고 싶어하니 쿠키 값을 초콜릿으로 바꿔야 한다. 쿠키 값을 초콜릿으로 변경하면 flag가 출력된다. csictf{1ick_twi5t_dunk} warm up http://chall.csivit.com:30272/ 문제..
2020.07.23
no image
해커스쿨 FTZ level1
level1 level1으로 로그인을 하여 파일 리스트를 확인해보면 hint 파일이 존재한다. hint 파일을 열어보면 level2 권한에 setuid가 걸린 파일을 찾으라고 한다. 파일을 찾으려면 trainer10에서 배운 내용을 활용하면 된다. find 명령을 사용하여 해당 파일을 찾았다. 파일을 실행해보면 레벨2의 권한으로 원하는 명령어를 실행시켜 준다고 한다. my-pass와 chmod는 제외된다는데, my-pass 명령어가 무엇인지 몰라서 살펴보았다. 찾아보니 해커스쿨 FTZ에만 있는 명령어로, 패스워드를 출력한다고 한다. level1에 로그인된 상태로 my-pass를 입력해보니 패스워드가 출력됐다. 이 방식 그대로 level2에 로그인된 상태로 my-pass를 입력하면 패스워드가 출력될 것 같..
2020.07.23

level7

 

 level7로 로그인한 후 힌트를 확인했다. 

 

 /bin/level7을 실행한 후 임의의 password를 입력했다. 그러니 wrong.txt가 존재하지 않는다고 에러가 났다. 

 

 찾아보니 이는 해커스쿨 FTZ의 오류라고 해서 root로 로그인하여 해당 파일을 생성했다. 

Can't Password. Near the Password!
--_--_- --____- ---_-__ --__-_-

 

 그런 다음 동일하게 임의의 비밀번호를 입력해보니 정상적으로 파일의 내용이 떴다. 

 

 이제 이것을 해석해야 한다. 힌트를 보면 눈치챌 수 있는데, 이는 2진수를 변환한 것이다. -는 1, _는 0으로 변환하여 2진수를 10진수로 변환해보면 109 97 116 101가 된다. 

 

 

 하지만 이는 패스워드가 아니다. 다음으로는 아스키 코드를 생각해보았다. 

 

아스키 코드 - 나무위키

UTF-8의 경우 ASCII 영역은 그대로 1바이트를 사용하기 때문에 호환이 된다. 반대로 말하자면 UTF-8 문서라도 ASCII 영역에 해당하는 문자만 적혀 있고 BOM까지 없다면 그냥 ASCII 문서와 다를 게 없다. ��

namu.wiki

 

 109 97 116 101를 아스키 코드로 변환하면 mate가 된다. 이를 입력하니 level8의 패스워드를 얻을 수 있었다. 

 

 

 break the world

 

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level9  (0) 2020.08.27
해커스쿨 FTZ level8  (0) 2020.08.22
해커스쿨 FTZ level16  (0) 2020.08.20
해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level4  (0) 2020.08.08

level6

 

 level6으로 로그인하면 힌트가 뜬다. 

 

 또한 엔터를 입력하면 텔넷 접속 서비스가 뜨게 된다. 

 

 서비스를 종료하기 위해서 ctrl+c를 입력했지만 ctrl+c를 사용할 수 없다고 뜬다. 

 * Ctrl-C (in older Unixes, DEL) sends an INT signal ("interrupt", SIGINT); by default, this causes the process to terminate.

https://en.wikipedia.org/wiki/Signal_(IPC)

 

 putty를 다시 실행해 hint에서 ctrl+c로 프로세스를 중단하니 쉘 환경으로 돌아갈 수 있었다.

 

 파일 리스트를 확인하니 password 파일이 존재했다. 파일 내용에서 level7의 비밀번호를 획득할 수 있었다. 

 

 

 come together

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level8  (0) 2020.08.22
해커스쿨 FTZ level7  (0) 2020.08.22
해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level4  (0) 2020.08.08
해커스쿨 FTZ level3  (0) 2020.08.06

level5

 

 힌트를 확인해보았다. /usr/bin/level5 프로그램이 /tmp에 level5.tmp 파일을 생성한다고 하여서 먼저 프로그램을 실행시킨 후 확인해보았다.

 

 프로그램을 실행시킨 후 폴더를 확인해봤지만 파일이 존재하지 않았다. level5 프로그램은 임시 파일을 생성한 후, 곧바로 파일을 다시 삭제시키는 것 같았다. 

 

 

 race.c와 create.c 프로그램을 작성하여 컴파일했다. race.c는 레이스 컨디션을 하는 코드이고, create.c는 /usr/bin/level5 프로그램을 무한으로 실행하는 코드이다. 이때 레이스 컨디션이란 한정된 자원을 동시에 이용하려는 여러 프로세스가 자원의 이용을 위해 경쟁을 벌이는 현상이다. 레이스 컨디션 코드는 구글링을 하여 찾아 작성했다. 

 

// race.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(int argc, char *argv[])
{
struct stat st;
FILE *fp;

if(argc != 3)
{
fprintf(stderr, "usage: %s file\n", argv[0]);
exit(EXIT_FAILURE);
}

if((fp = fopen(argv[1], "a")) == NULL)
{
fprintf(stderr, "Can't open");
exit(EXIT_FAILURE);
}

fprintf(fp, "%s\n", argv[2]);
fclose(fp);
fprintf(stderr, "Write OK\n");
exit(EXIT_SUCCESS);
}


// create.c
#include <stdio.h>
int main() {
while(1)
system("/usr/bin/level5");
}

 

 create 프로그램을 백그라운드로 실행한 후 레이스 컨디션 프로그램을 실행했다. 그리고 생성된 level5.tmp 파일을 확인해보니 password가 적혀있었다. 

 

 

what the hell

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level7  (0) 2020.08.22
해커스쿨 FTZ level16  (0) 2020.08.20
해커스쿨 FTZ level4  (0) 2020.08.08
해커스쿨 FTZ level3  (0) 2020.08.06
해커스쿨 FTZ level2  (0) 2020.08.01

level4

 

 먼저 힌트를 확인했다. /etc/xinetd.d/에 백도어를 심어놓았다고 해서 해당 폴더로 이동했다.

 

 xinetd(extended Internet daemon)는 오픈 소스 슈퍼 서버 데몬으로서 많은 유닉스 계열 시스템에서 돌아가며 인터넷 기반 연결을 관리한다. 이것은 오래된 inetd의 대체로서 더 강력한 보안을 제공하며, 대부분의 현대 리눅스 배포판에서는 이것을 사용한다.

 

 폴더의 파일 리스트를 확인하니 백도어가 존재했다. 백도어 파일을 확인해보니 finger 서비스가 등록되어 있었다. 이때 중요하게 볼 것은 user와 server이다. user는 서버 프로세스를 실행할 수 있는 사용자의 아이디를 나타내고, server는 해당 서비스를 실행할 데몬 프로그램의 위치를 나타낸다. 즉 해당 위치에 my-pass 명령어를 실행하는 프로그램을 작성하고, 서비스를 실행하게 되면 level5의 권한으로 my-pass 명령이 실행되게 된다. 

 

 /home/level4/tmp 폴더에 backdoor.c 프로그램을 작성했다. my-pass 명령을 실행하는 간단한 프로그램이다. 

 

 컴파일을 진행하여 backdoor 프로그램을 작성하였다. 

 

 이 다음부터는 구글링을 하여 문제를 풀었다. backdoor 서비스를 실행시키기 위해서는 finger을 구동시켜야 한다고 했다. 참고하여 finger을 실행시키니 password가 출력됐다. 

 

 

 

what is your name?

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level16  (0) 2020.08.20
해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level3  (0) 2020.08.06
해커스쿨 FTZ level2  (0) 2020.08.01
해커스쿨 FTZ level1  (0) 2020.07.23

level3

 

 힌트를 확인해보면 autofig 프로그램의 소스코드와 하단의 more hints가 존재한다. 동시에 여러 명령어를 사용하려면 ;(세미콜론)을 사용한다. 또한 문자열 형태로 명령어를 전달하려면 ""(쌍따옴표)를 사용한다.

 

 level4의 권한을 가진 파일을 찾아보면 힌트에서 확인했던 autodig를 확인할 수 있다. 

 

 이제 autodig의 인자열을 정해야한다. "dig@ ~ version.bind chaos txt" 명령어는 버전을 확인할 수 있는 명령어이다. 그 인자로 임의의 ip 주소를 주고, ;을 사용해서 sh을 실행시켜준다. 또한 문자열 형태로 명령어를 전달해야 하므로 ""에 묶어서 인자로 넣으면 password가 출력된다. 

 

 

 suck my brain

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level4  (0) 2020.08.08
해커스쿨 FTZ level2  (0) 2020.08.01
해커스쿨 FTZ level1  (0) 2020.07.23
해커스쿨 trainer  (0) 2020.07.18

level2

 

 힌트를 확인해보니 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다고 한다. 무슨 의민지 모르겠어서 찾아보니 vi나 vim 등으로 텍스트 파일을 편집하다가 :sh을 입력하면 다시 쉘로 이동할 수 있다고 한다. 또한 확인해보니 쉘 이외의 명령어들도 적용이 가능했다. 

 

 이렇게 명령어를 입력해도 명령어가 실행됐다. 방법은 알았으니 level3 권한을 가진 파일이 있는지 확인해보았다. 

 

 find 명령을 사용해 찾아보니 에디터를 찾을 수 있었다. 

 

 에디터를 실행시켜 아까와 동일하게 명령어를 입력해보니 패스워드가 출력됐다.

 

 

 can you fly?

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level4  (0) 2020.08.08
해커스쿨 FTZ level3  (0) 2020.08.06
해커스쿨 FTZ level1  (0) 2020.07.23
해커스쿨 trainer  (0) 2020.07.18

csictf 2020

assb
|2020. 7. 23. 12:06

cascade

http://chall.csivit.com:30203/

 

 문제에 들어가보면 "/static/stype.css"가 있다. 

 

 해당 위치로 이동해보면 css 속성들과 그 사이에 주석으로 flag가 존재한다. 

 

 csictf{w3lc0me_t0_csictf}

 

 

oreo

http://chall.csivit.com:30243/

 

 문제에 접속한 뒤 쿠키를 확인해보면 flavour이라는 쿠키가 추가된다.

 

 값을 base64로 디코딩해보면 strawberry라고 뜬다. 하지만 chocolate 오레오를 먹고 싶어하니 쿠키 값을 초콜릿으로 바꿔야 한다. 

 

 쿠키 값을 초콜릿으로 변경하면 flag가 출력된다. 

 

 csictf{1ick_twi5t_dunk}

 

 

warm up

http://chall.csivit.com:30272/

 

 문제에 접속하면 소스 코드가 출력된다. 이때 sha1(10932435112)에 대해서 구글링해보면 이 값은 매직 해시인 것을 알 수 있다.

 PHP에서는 1e2를 1*10^2로 인식한다. 따라서 0e~로 시작하게 된다면 뒤에 무슨 값이 오든 결과값은 0이 될 것이다. 매직 해시란 '0e'로 시작하는 문자열 뒤의 값들이 전부 숫자인 경우를 의미한다. 이는 PHP 상에서 flaot 형태로 인식되고, 값을 계산해보면 모두 0이 된다. 

 

github.com/spaze/hashes/blob/master/sha1.md

 

 위의 주소를 참고하여 문제를 해결했다. 매직해시들이 정리되어 있다. 

 

 매직해시 중 하나를 get 방식으로 전달하면 flag가 출력된다. 

 

 csictf{typ3_juggl1ng_1n_php}

 

 

secure portal

http://chall.csivit.com:30281

 

 이 문제는 패스워드를 알아내서 입력해야 한다. 소스코드를 확인해보면 난독화된 자바스크립트 코드가 존재한다. 

 

var _0x575c=['\x32\x2d\x34','\x73\x75\x62\x73\x74\x72\x69\x6e\x67','\x34\x2d\x37','\x67\x65\x74\x49\x74\x65\x6d','\x64\x65\x6c\x65\x74\x65\x49\x74\x65\x6d','\x31\x32\x2d\x31\x34','\x30\x2d\x32','\x73\x65\x74\x49\x74\x65\x6d','\x39\x2d\x31\x32','\x5e\x37\x4d','\x75\x70\x64\x61\x74\x65\x49\x74\x65\x6d','\x62\x62\x3d','\x37\x2d\x39','\x31\x34\x2d\x31\x36','\x6c\x6f\x63\x61\x6c\x53\x74\x6f\x72\x61\x67\x65',];(function(_0x4f0aae,_0x575cf8){var _0x51eea2=function(_0x180eeb){while(--_0x180eeb){_0x4f0aae['push'](_0x4f0aae['shift']());}};_0x51eea2(++_0x575cf8);}(_0x575c,0x78));var _0x51ee=function(_0x4f0aae,_0x575cf8){_0x4f0aae=_0x4f0aae-0x0;var _0x51eea2=_0x575c[_0x4f0aae];return _0x51eea2;};function CheckPassword(_0x47df21){var _0x4bbdc3=[_0x51ee('0xe'),_0x51ee('0x3'),_0x51ee('0x7'),_0x51ee('0x4'),_0x51ee('0xa')];window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('9-12','BE*');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x2'),_0x51ee('0xb'));window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x6'),'5W');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('16',_0x51ee('0x9'));window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x5'),'pg');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('7-9','+n');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0xd'),'4t');window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x0'),'$F');if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x8'))===_0x47df21[_0x51ee('0x1')](0x9,0xc)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x2'))===_0x47df21['substring'](0x4,0x7)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x6'))===_0x47df21[_0x51ee('0x1')](0x0,0x2)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]]('16')===_0x47df21[_0x51ee('0x1')](0x10)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x5'))===_0x47df21[_0x51ee('0x1')](0xc,0xe)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0xc'))===_0x47df21[_0x51ee('0x1')](0x7,0x9)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0xd'))===_0x47df21[_0x51ee('0x1')](0xe,0x10)){if(window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x0'))===_0x47df21[_0x51ee('0x1')](0x2,0x4))return!![];}}}}}}}return![];}

 

이를 난독화 해제 사이트를 통하여 해제해보았다. 

 

var _0x575c = ['\x32\x2d\x34', '\x73\x75\x62\x73\x74\x72\x69\x6e\x67', '\x34\x2d\x37', '\x67\x65\x74\x49\x74\x65\x6d', '\x64\x65\x6c\x65\x74\x65\x49\x74\x65\x6d', '\x31\x32\x2d\x31\x34', '\x30\x2d\x32', '\x73\x65\x74\x49\x74\x65\x6d', '\x39\x2d\x31\x32', '\x5e\x37\x4d', '\x75\x70\x64\x61\x74\x65\x49\x74\x65\x6d', '\x62\x62\x3d', '\x37\x2d\x39', '\x31\x34\x2d\x31\x36', '\x6c\x6f\x63\x61\x6c\x53\x74\x6f\x72\x61\x67\x65', ];
(function (_0x4f0aae, _0x575cf8) {
	var _0x51eea2 = function (_0x180eeb) {
		while (--_0x180eeb) {
			_0x4f0aae['push'](_0x4f0aae['shift']());
		}
	};
	_0x51eea2(++_0x575cf8);
} (_0x575c, 0x78));
var _0x51ee = function (_0x4f0aae, _0x575cf8) {
	_0x4f0aae = _0x4f0aae - 0x0;
	var _0x51eea2 = _0x575c[_0x4f0aae];
	return _0x51eea2;
};
function CheckPassword(_0x47df21) {
	var _0x4bbdc3 = [_0x51ee('0xe'), _0x51ee('0x3'), _0x51ee('0x7'), _0x51ee('0x4'), _0x51ee('0xa')];
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('9-12', 'BE*');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x2'), _0x51ee('0xb'));
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x6'), '5W');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('16', _0x51ee('0x9'));
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x5'), 'pg');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]]('7-9', '+n');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0xd'), '4t');
	window[_0x4bbdc3[0x0]][_0x4bbdc3[0x2]](_0x51ee('0x0'), '$F');
	if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x8')) === _0x47df21[_0x51ee('0x1')](0x9, 0xc)) {
		if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x2')) === _0x47df21['substring'](0x4, 0x7)) {
			if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x6')) === _0x47df21[_0x51ee('0x1')](0x0, 0x2)) {
				if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]]('16') === _0x47df21[_0x51ee('0x1')](0x10)) {
					if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x5')) === _0x47df21[_0x51ee('0x1')](0xc, 0xe)) {
						if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0xc')) === _0x47df21[_0x51ee('0x1')](0x7, 0x9)) {
							if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0xd')) === _0x47df21[_0x51ee('0x1')](0xe, 0x10)) {
								if (window[_0x4bbdc3[0x0]][_0x4bbdc3[0x1]](_0x51ee('0x0')) === _0x47df21[_0x51ee('0x1')](0x2, 0x4)) return !! [];
							}
						}
					}
				}
			}
		}
	}
	return ! [];
}

 

 스크립트 코드를 확인해보면 if 문을 반복하며 패스워드를 체크하고 있다. input 값으로 "1234567890abcdef"를 준 후, 비교하는 두 값을 출력하며 패스워드의 순서를 확인한 후 패스워드를 재구성 하였다.

 

12:"5W" 
34:"$F"
567:"bb="
89:"+n"
0ab:"BE*"
cd:"pg"
ef:"4t"
:"^7M"

 5W$Fbb=+nBE*pg4t^7M

 

 csictf{l3t_m3_c0nfus3_y0u}

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

Google CTF 2020  (0) 2020.09.08
Google CTF 2019  (0) 2020.06.29
xss game level 3  (0) 2020.06.29
xss game level 2  (0) 2020.06.29
xss game level 1  (0) 2020.06.29

level1

 

 level1으로 로그인을 하여 파일 리스트를 확인해보면 hint 파일이 존재한다. 

 

 hint 파일을 열어보면 level2 권한에 setuid가 걸린 파일을 찾으라고 한다. 파일을 찾으려면 trainer10에서 배운 내용을 활용하면 된다. 

 

 find 명령을 사용하여 해당 파일을 찾았다. 

 

 파일을 실행해보면 레벨2의 권한으로 원하는 명령어를 실행시켜 준다고 한다. my-pass와 chmod는 제외된다는데, my-pass 명령어가 무엇인지 몰라서 살펴보았다. 찾아보니 해커스쿨 FTZ에만 있는 명령어로, 패스워드를 출력한다고 한다. 

 

 level1에 로그인된 상태로 my-pass를 입력해보니 패스워드가 출력됐다. 이 방식 그대로 level2에 로그인된 상태로 my-pass를 입력하면 패스워드가 출력될 것 같다. '

 

 level2 권한으로 쉘을 열어 my-pass 명령어를 사용해보니 패스워드가 출력됐다.

 

 

 hacker or cracker

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level5  (0) 2020.08.15
해커스쿨 FTZ level4  (0) 2020.08.08
해커스쿨 FTZ level3  (0) 2020.08.06
해커스쿨 FTZ level2  (0) 2020.08.01
해커스쿨 trainer  (0) 2020.07.18