Level01
https://exploit-exercises.com/nebula/level01/

컴파일을 해 준다. 실행 파일 이름은 echo로 지정한다.
https://exploit-exercises.com/nebula/level01/
About
설명을 보면 Source code에 나와있는 프로그램은 다른 프로그램을 임의로 실행할 수 있는 취약점을 가지고 있다.
Source code
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <stdio.h>
int main(int argc, char **argv, char **envp)
{
gid_t gid;
uid_t uid;
gid = getegid();
uid = geteuid();
setresgid(gid, gid, gid);
setresuid(uid, uid, uid);
system("/usr/bin/env echo and now what?");
}
gid_t uid_t는 변수 타입이다. 각각 group id와 user id를 의미한다.
getegid는 현재 로그인 한 group id를 얻는 것이고 geteuid는 현재 로그인 한 user id를 얻는 것이다.
setresuid는 real UID, effective UID, and saved set-user-ID 현재 로그인한 사용자의 id로 바꿔준다. setresgid도 동일하게 작동한다.
system이라는 함수는 뒤에있는 ""안에 존재하는 문자열을 실행시켜주는 함수이다.
일단 로그인을 하고 about에 나온 것처럼 /home/flag01 로 이동해서 보면 flag01이라는 프로그램이 보인다.
실행시켜보면 and now what?라는 말이 뜨면서 종료된다.
PATH를 확인하다. PATH는 명령어를 쳤을 때 모든 파일을 찾을 수 없기 때문에 탐색할 주요 몇몇 곳을 지정해 둔 것이다. PATH는 :를 통해 폴더를 구분한다.
/tmp 로 이동해 C언어로 파일을 만든다. /bin/bash를 실행하는 프로그램이다.
컴파일을 해 준다. 실행 파일 이름은 echo로 지정한다.
PATH에 /tmp를 추가한다.
PATH를 출력해 확인하면 맨 뒤에 추가된 것이 보인다.
하지만 프로그램을 실행했더니 초기와 다른 것 없이 똑같았다. 왜 안되나 찾아보던 중 성공한 사람들의 실행화면을 봤는데 PATH 출력 화면에서 /tmp가 앞는 모습을 봤다.
/tmp가 PATH의 앞쪽에 추가될 수 있도록 다시 명령어를 입력했다. PATH를 입력한 후 /tmp가 제대로 앞쪽에 위치한 걸 알 수 있다.
다시 flag01을 실행했더니 사용자가 level01에서 flag01바뀐걸 확인할 수 있다. 여기서 getflag를 치면 성공했다는 문자가 뜬다.
👉system 이라는 함수는 큰따옴표 안에 있는 문자열을 실행하는 명령이다.
/usr/bin/env echo and now what? 의 의미는 /usr/bin/env 파일에 있는 echo라는 명령어를 실행해 and now what이라는 글이 화면에 출력되는 것이다. PATH라는 것은 앞서 설명해 듯이 명령어가 있는 지를 확인하는 곳인데 여기에 echo라는 실행파일을 저장해 놓은 /tmp를 추가해서 /tmp파일에 있는 echo라는 프로그램을 실행하게 되는 것이다.
(아마 추측이지만 처음에 실행을 실패했던 이유가 PATH의 앞쪽부터 탐색해서 그렇지 않나 싶다.)
참고:
https://support.microsoft.com/ko-kr/help/310519/how-to-manage-environment-variables-in-windows-xp
http://forum.falinux.com/zbxe/index.php?document_srl=408442&mid=C_LIB
http://manpages.ubuntu.com/manpages/precise/man2/setresuid.2.html
https://msdn.microsoft.com/ko-kr/library/277bwbdz.aspx
http://itsaessak.tistory.com/100
http://leeggoggal.tistory.com/51
https://support.microsoft.com/ko-kr/help/310519/how-to-manage-environment-variables-in-windows-xp
http://forum.falinux.com/zbxe/index.php?document_srl=408442&mid=C_LIB
http://manpages.ubuntu.com/manpages/precise/man2/setresuid.2.html
https://msdn.microsoft.com/ko-kr/library/277bwbdz.aspx
http://itsaessak.tistory.com/100
http://leeggoggal.tistory.com/51
댓글
댓글 쓰기