lob 7번 풀이 darkelf -> orge

2019. 7. 28. 20:08LOB

darkelf로 로그인을 해준다.

 

\

cat 명령어를 사용하여 orge.c를 보면 다음과 같은 부분이 나오는데

친절하게 "here is changed"라고 써져 있다.

argv[0]은 파일명이 들어가는 부분이다. 

따라서 다음말은 파일명이 77자(77byte)가 되어야한다는 말이 된다.

 


링크 파일

 - 리눅스에 파일 형식에는 링크 파일이란 것이 있다. 이는 윈도우의 바로가기 아이콘과 

   비슷하고 링크 파일의 종류로는 크게 심볼릭 링크와 하드 링크가 있다.

 

심볼릭 링크

   :  컴퓨터에서 심볼릭 링크(symbolic link) 또는 기호화 된 링크는 절대 경로 또는 상대 경로의

     형태로 된 다른 파일이나 디렉터리에 대한 참조를 포함하고 있는 특별한 종류의 파일이다.

     쉽게 말해 파일을 가리키는 파일이라고 보면 될거 같다.

     다른 파일로의 경로만을 가리키는 파일이므로 심볼릭 링크 파일이 삭제가 되어도

     실제 원본 파일에는 영향을 주지 않는다.

     이 말은 반대로 원본 파일이 삭제 된다면, 링크 파일은 윈도우의 바로 가기가 

     원본 파일이 삭제되면 사용하지 못하는 것과 같이 똑같이 제 할 일을 하지 못한다.

     +서로 다른 파일 시스템 내에서도 링크가 가능하다.

 

하드링크

    : 원본 파일을 복사한 다음 사본을 만든다. 동일한 i-node를 갖는 파일을 생성하는 것이다.

     좀 더 쉽게 말하자면 원본 파일을 복사한 것가 같은 효과를 가진다.

     사실상 사본이 하나 더 생겼다고 생각하면 된다.

 

https://adkim.tistory.com/21

 

Layer7 10 과제 -리눅스 보고서-

리눅스란 무엇일까? 리누스 토르발즈가 유닉스(Unix) 운영체제를 모델로 개발한 컴퓨터 운영체제(ex. window os)이다. 리눅스는 자유 소프트웨어와 오픈 소스 개발의 가장 유명한 예시로 들 수 있다. 리눅스는 다..

adkim.tistory.com

리눅스에 구조에 대해 조금 더 잘 알고 싶은 분은

이 글을 보시면 좋을거 같습니다.

 

링크 파일 만드는 법 

ln 명령어를 사용하면 링크 파일을 만들 수 있다.

: ln 파일명 링크파일명

결과 -> 하드 링크 파일이 생성된다. 


ln -s 파일명 링크파일명

결과 -> 심볼릭 링크파일이 생성된다.

 

※ 하드링크와 심볼릭 링크가 만들어진 상태에서 원본파일 이름 변경

결과 -> 하드 링크는 문제없지만 심볼릭 링크는 파일을 사용할 수 없다.

 

※하드링크는 파일에만 가능하고 심볼릭 링크는 파일과 디렉터리 모두 가능하다.


일단 tmp 폴더를 만들자.

파일을 가리키는 파일이라고 해석하면 될거 같습니다. 그럼 argv[0]의 절대경로로 전달했을 때 

77바이트가 되려면 어떻게 해야할까요?

 

2 byte(./)+심볼릭 파일 name(75byte)=77byte이므로

심볼릭 파일도 실행 시켜주려면 ./이 필요합니다.

그러므로 75byte로 심볼릭 링크 파일명을 구성하면 될거 같습니다.

이렇게 구성해서 심볼릭 링크 파일을 만들어보겠습니다. 

저는 orge.c 파일을 복사해서 이렇게 수정한 후 orge라는 이름으로

새로 tmp 폴더에서 컴파일 시켜주었습니다.

딱 77byte가 생성된 것을 보실 수 있습니다.

그리고 ls -l 명령어를 사용하여 보면 orge 파일을 가리키고 있다는 것도 볼 수 있네요.

 


그런데 사실 이 문제를 풀 때 꼭 링크 파일을 만들어야 하는 것이 아닙니다...

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

이런 문자를 넣어서도 77자를 만들어줄 수 있습니다.

모든 알아두면 좋으니까요 ><


 이번 문제는 그대로 심볼릭 링크를 사용하여 풀어보겠습니다.

tmp 파일에 다시 orge파일을 복사하고 다시 심볼릭 파일을 만들어서 봅시다.

쉘코드를 최대한 실제 쉘코드와 비슷하게 짜주세요.

 

※  bash2를 입력하고 할 것 

 

core dump 파일이 나왔습니다.


core 파일(core dump)

유닉스 계열의 프로그램이 비정상적으로 종료되는 경우 프로그램이

종료될 당시의 메모리 상태를 기록으로 남기면서 죽게 되는데 이걸 core dump라고 부릅니다. 디버깅

할 때 유용하게 사용됩니다.

 

보통 프로그램을 디버깅 할 때

unlimit -c unlimited과 같은 명령어를 사용하여 core dump가 생기도록 하며

평상시에는 core dump가 생기지 않도록 막는 것이 보통입니다.

그 이유는 core dupe 파일은 크기가 매무 커서 계속 생겨나도록 나누면 하드디스크를 꽉 채우게 됩니다.


이제 gdb -q -c core 파일을 사용하여 core dupm 파일을 분석해봅시다.

나온 주소를 대입하니

다음과 같이 쉘이 따진 모습을 보실 수 있습니다.

 

cd로 다시 darkelf 디렉터리로 돌아오면 symbolic link 파일이 없으니까

그냥 똑같은 이름으로 다시 만들어주세요

 

 

orge의 비밀번호는 timewalker 입니다!..

'LOB' 카테고리의 다른 글

lob 9번 풀이 troll -> vampire  (0) 2019.08.14
lob 8번 풀이 orge -> troll  (0) 2019.07.28
lob 6번 풀이 wolfman -> darkelf  (0) 2019.07.27
lob 5번 풀이 orc -> wolfman  (0) 2019.07.27
lob 4 goblin -> orc 풀이  (0) 2019.07.27