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

lob tips (풀기전 알아야할 것들)

by intadd 2017. 6. 12.



안녕하세요 

포너블을 다시 공부하기 위해서 lob를 정주행 하고 있습니다.



그전에 lob를 풀기 전에 알아야할 사전 지식? 을 포스팅 할까 합니다.

요약

1. /bin/bash2

2. cp ./문제 /tmp/

3. gdb -c core 


gate-> gremlin 문제로 예시를 들겠습니다.


1. /bin/bash2


lob의 모든 문제는 shell 창에 /bin/bash2를 입력하고 하셔야합니다.

이유는 정확히 모르겠으나 아래의 예시를 보면 알 수 있습니다.


동일한 페이로드

(/bin/bash2 일 때 정상적으로 shell을 얻음)

(기본 bash2 일 때 shell을 얻지 못함)



2. 권한 문제

lob를 풀기 위해서는 gdb라는 툴을 이용합니다.

하지만 주어진 문제에 gdb로 실행 시켜보면 아래와 같이 debug를 할 수 없다고

나옵니다. (권한 문제, r(실행))


이럴 때 에는 /tmp 폴더에 복사 하여 debug를 하면 됩니다.




3. core dump (주소 문제)

gdb를 통해 스텍의 주소값을 알아냅니다. 하지만 gdb를 통해 실행(r) 시켰을 때와 

실제 프로그램의 스텍 주소는 차이가 있습니다.

이를 정확하게 알 수 있는 방법은 core dump를 이용하는 것입니다.

(/tmp 폴더에 문제파일을 복사 했을 때)



위와 같이 버퍼에 A 260개 B 4개 C 1000개를 입력했을 때

segmentation fault가 발생합니다. 그와 동시에 자동 적으로 core dump가 저장 되는데요 해당 폴더(/tmp)에 core 라고 하는 파일이 생성 됩니다.


이를 분석해보면 실제 프로그램의 적제된 스텍 주소를 알 수 있습니다.

아래는 core 파일을 분석 하는 방법입니다. (-c 옵션이 필요) 


(gdb) x/100x $esp-1000


가장 왼쪽에 0xbffff00 이라고 된 부분이 stack의 주소입니다.

제가 만약에 "C"를 입력한 부분에 shellcode를 넣었다면, 주소는 0xbfff628에 shellcode 주소가 적제 되는 것입니다.


아래는 실제로 그 주소에 shellcode를 넣고 확인해본 결과 입니다. 정상적으로 shell을 얻을 수있습니다.

(/tmp)

(/home/gate)


shell냠냠 :)


다들 열공 하세요 !


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

LOB 7 troll ->vampire  (0) 2017.06.12
LOB 6 orge->troll  (0) 2017.06.12
LOB 5 (darkelf -> orge)  (0) 2017.06.12
LOB level6 (wolfman->darkelf)  (0) 2016.09.13
LOB level5(orc->wolfman)  (0) 2016.09.13

댓글