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 |
댓글