Nebula Level02 솔루션


First written by caliber50 on 2016. 9. 24. 17:56


About[해설] : 위 프로그램은 임의 프로그램을 실행시킬 수 있는 취약점이 존재한다. 이 레벨을 수행하기 위하여, level02 계정으로 로그인하며 패스워드는 level02이다. 관련 파일들은 /home/flag02에서 확인할 수 있다.


□ 목표 : flag02 계정으로 getflag 명령을 실행하고 "You have successfully executed getflag on a target account" 메시지를 확인


□ 취약점 : 이전 글(Nebula Level02 힌트) 참조


□ 소스코드 해석 

○ asprintf 함수는 환경변수 USER의 값을 buffer 변수에 저장

○ system 함수는 "/bin/echo USER is cool" 명령 실행


□ 풀이 전략

○ setUID를 활용하여, 프로그램 실행 간 flag02의 권한을 사용

○ 환경 변수를 활용하여, getflag 명령을 실행





/home/flag02로 이동하여 ./flag02를 실행하면 위 그림과 같은 결과가 나온다.





환경 변수 USER에 "dummy;getflag" 값을 넣는다. 세미콜론으로 인해 두 개의 문장으로 구분된다.


위 그림과 같이 flag02를 실행하면 echo 명령은 dummy 문자열을 출력하고, 그런 다음 세미콜론 오른쪽의 getflag 명령이 실행된다.


클리어

'정보보안_테크닉 > 워게임_Nebula' 카테고리의 다른 글

Nebula Level07 솔루션  (0) 2016.12.04
Nebula Level06 솔루션  (0) 2016.11.23
Nebula Level05 솔루션  (0) 2016.11.19
Nebula Level04 솔루션  (0) 2016.11.18
Nebula Level03 솔루션  (0) 2016.10.17
Nebula Level03 힌트  (0) 2016.10.15
Nebula Level02 힌트  (0) 2016.09.23
Nebula Level01 솔루션  (0) 2016.08.18
Nebula Level00 솔루션  (0) 2016.08.11
Nebula 소개  (0) 2016.08.11
"언제나 신뢰할 수 있는 자료로 찾아뵙겠습니다"
"도움이 되셨다면 '좋아요' 부탁드리겠습니다."