본문 바로가기
  • True knowledge exists in knowing that you know nothing. -Socrates-
Study/lob

LOB level 3 (cobolt -> goblin)

by intadd 2016. 8. 1.





 LOB level 3 



 LOB (cobolt -> goblin)



 1. 첫 번째로 cat  명령어를 사용하여 goblin파일의 코드를 확인합니다.



2. 코드 분석

1) char형 buffer[16]을 생성


2) gets함수는 scanf 함수와 동일한 기능을 하는 함수입니다.

어떤 값을 입력받는 함수입니다.

buffer에 입력값을 저장



3. gdb 를 사용하여 인자값들의 주솟값을 확인하기 위해 cp 명령어를 사용해 /tmp로 복사시켜줍니다. $ cp  goblin  /tmp/goblin 

( gdb 권한 문제)




(tmp위치에서 gdb goblin을 한 후)



gdb를 이용해 스텍의 크기는 16 이라는 것을 알 수 있습니다.

16byte+main함수의 ebp(4byte)=20byte 

를 채운 후 return address (4byte)에 쉘코드가 있는 주소를 불러와 주면 됩니다.


( 저 빨강색 체크 부분이 아니더라도 버퍼의 크기를 아는 방법은 많습니다.)


4. 환경변수를 이용하여 문제를 풀었는데여 환경변수는 쉽게 말하면 한 번 선언해 놓으면 불러다가 쓸 수 있다? 라고 표현 하면 좋을 것 같네여.



export 변수명="" 이것이 환경변수를 생성하는 명령어 입니다.

"" 안에는 null과 쉘코드를 입력했습니다.


      그리고 이제 vi 나 cat 명령어를 이용하여 환경변수의 주솟값을 
출력해주는 프로그램을 만들어야 합니다. 
코드는 위에 나오는 것과 같이 만드시면 됩니다. bffffeb3라고 환경변수의 주솟값을 알았습니다.



A를 20가지 채운 후 리턴어드레스에 환경변수 의 주소값을 넣어줍니다. 





'Study > lob' 카테고리의 다른 글

LOB level6 (wolfman->darkelf)  (0) 2016.09.13
LOB level5(orc->wolfman)  (0) 2016.09.13
LOB level 4 (goblin -> orc)  (1) 2016.08.01
LOB level 2 (gremlin -> cobolt)  (0) 2016.08.01
LOB level1 (gate->gremlin)  (0) 2016.07.13

댓글