-
BOF 들어가기 앞서Wargame Site/BOF 2019. 4. 24. 00:34
1. RET, SFP
BOF 에서 자주 등장하는 RET, SFP 라는 용어가 무슨 뜻을 지니고 있는지 알아보자.
1. RET
돌아갈 위치를 의미하며, 에필로그 과정에서 만나게되는 saved EIP 를 가르키는 용어로 BOF 에서 정말 중요한 역할을 한다.
바로이 RET 를 변조하여, 실행위치를 변조하는 경우가 많다.
2. SFP
Saved Frame Pointer 의 약자로 이전 프레임의 EBP 를 의미한다.
2. GDB 명령어
OllyDBG 에만 친숙한 터라 ELF 의 리버싱에서 막혀, Ghidra 를 사용하다가 동적 분석을 위해 gdb 를 사용해보기로 했다.
CLI 기반이라 적응하는데 정말 오래걸릴 것 같다는 느낌이 들지만 동적 분석을 위해 어쩔 수 없는 관문이라고 생각한다.
gdb -q [ 특정파일 ]
특정 파일을 대상으로 gdb 로 들어가는 명령어이고, 들어갈 때 나오는 Comment 들을 생략한다.
set disassembly-flavor intel
at&t 문법과 intel 문법 중 intel 의 표기로 보겠다는 뜻이다.
set disable-randomization off
show disable-randomization
alsr 기능을 끄고, 확인하는 명령이다. 실행할 때 마다 주소가 바뀌는 것을 막아준다.
disassemble [ 함수 혹은, 특정 주소 ]
'disas' 로도 축약이 되는 경우가 있으며, 주로 'disas main' 과 같은 특정 함수를 뜯어볼 때 사용한다.
break * [ 특정 함수 ] 혹은 break [ 특정주소 ]
'b' 혹은 'br' 로 축약이 되는 경우 축약을 사용하면 편하고, 이 명령어는 브레이크 포인트를 거는 용도로 쓰인다.
OllyDBG 에 친숙한 분이라면 'F2' 에 매칭되는 명령어라고 생각하면 될 것 같다.
delete breakpoints [ break point Number ]
뒤에서 다룰 'info breakpoints' 를 통해 삭제할 breakpoints 의 Number 를 통해 breakpoint 를 해제할 수 있다.
OllyDBG 에 친숙한 분이라면 breakpoint 지정된 곳에서 'F2' 를 다시한 번 누르는 과정이라고 생각하면 될 것 같다.
run [ 인자 ]
인자를 넣어주고 싶은 경우에 다음과 같은 포맷으로 프로그램을 작동시켜주면, 해당 인자가 실행파일에 들어간 형태로 프로그램을 실행한다.
OllyDBG 에 친숙한 분이라면 argument 를 넣어주고 Ctrl + F2 를 눌러 재실행하는 역할을 해준다고 생각하면 될 것 같다.
countinue
'c' 로 축약될 수 있고, c 를 누르면 다음 breakpoint 까지 어셈코드를 실행한다.
OllyDBG 에 친숙한 분이라면 'F9' 에 매칭되는 명령어라고 생각하면 될 것 같다.
x/ + 숫자 + b, h, w, g + o, x, u, t
정말 활용범위가 넓은 명령어이다.
b (1 byte 단위), h (2 byte 단위), w (4 byte 단위), g (8 byte 단위) 보통 이러한 옵션은 다음과 같은 추가적인 옵션을 가져온다.
o (8 진법), x (16 진법), u (10 진법), t (2 진법) 가 붙을 수 있다. OllyDBG 사용만 해봤던 나로서로는 x/wx 의 조합을 좋아하는 것 같다.
그리고 뒤에는 $esp, $ebp 와 같은 특정 레지스터로 부터의 정보를 볼 때 자주 사용된다.
만약 esp 를 기준으로 16 바이트의 정보를 보고 싶을 때 x/4wx $esp 와 같은 방식으로 쓰인다.
추가적으로 x/s 도 쓰이는데 string 값을 추출할 때 사용된다.
예를들어, x/s 0x80af122 와 같은 명령어를 사용하면 0x80af122 에 있는 string 을 추출한다.
info
info 를 통해서 레지스터, 브레이크 포인트, 스택상황 등의 다양한 정보를 확인할 수 있다.
우선은 이쯤으로하고,
기타 추가적인 명령어가 나올 때마다 주기적으로 업데이트 해야할 것 같다 !!
'Wargame Site > BOF' 카테고리의 다른 글
|Lord Of Bufferoverflow| #1 gate - gremlin (0) 2019.05.18 BOF ASLR (0) 2019.04.24 BOF 준비운동 (4) (0) 2019.04.23 BOF 준비운동 (3) (0) 2019.04.22 BOF 준비운동 (2) (0) 2019.04.22 댓글