Reverse Engineering - 02. BOF shellcode [작업중]
by jennysgapgdb 사용법 및 code 추출
1. 0x8048198 : 메모리의 주소부분
2. <main> : main 함수로 부터의 거리
3. push %ebp : 어셈블리 표현식
push %ebp : stack frame의 base point (bp) 값을 밀어 넣는다. (저장한다)
move %esp %ebp : stack point (sp) 를 bp에 저장한다.
위의 연산은 새로운 함수가 호출될 때 마다 실행된다. 이를 prelude라 한다.
sub $0x4, %esp : 변수가 들어갈 스택 공간의 확보 부분.
소스코드에서 "int i;" int는 4바이트 크기이므로 확보할 때 "$0x4"로 표시
movl $0x3, 0xfffffffc (%ebp) : $0x3은 i에 대입되는 3값이고,
선언되는 위치는 최상위로 부터 0xfffffff - 4 = 0xfffffffc 번지에 넣음
• main4.c 프로그램 분석
movl $0x61, 0xffffffff (%ebp) : $0x61은 i에 대입되는 'a'값이고,
선언되는 위치는 최상위로 부터 0xffffffff 번지에 넣음
mov 0xfffffffc (%ebp), %eax : ebp - 4 주소 값을 eax 레지스터에 저장
push %eax : 스택에 eat 집어 넣음
push $0x8071528 : 0x8071528 번지에 값 정보를 저장한다.
* 해당 정보를 보기 위해 번지를 찍어보면 아래와 같은 결과를 출력 받을 수 있다.
printf 함수에서 지정했던 스트링이 저장되어 있다.
call 0x804864c <printf> : printf 함수를 호출한다.
add $0x8, %esp : 할당에 사용되었던 스택의 블럭을 클리어 하기 위해 8복원한다.
상기 내용을 토대로 기계어 제작이 가능하다.
• test3.c 프로그램 분석
# gcc -o test3.s test3.c -S (-S : Assembly 형태로 제작, Symbolic code)
기계어로 쉘 코드를 제작해 보았다.
* 시스템 콜을 이용한 기계어 제작
'BOX' 카테고리의 다른 글
Kali Linux 설치 - 07. 한글 입력기 설치 (0) | 2016.12.22 |
---|---|
Metasploit - 01. 메타스플로잇 (metasploit) (0) | 2016.12.22 |
맥북(Macbook) 캘린더에 네이버 캘린더 연동 (0) | 2016.12.21 |
Reverse Engineering - 01. 리버스 엔지니어링 (0) | 2016.12.21 |
네트워크 해킹 - 17. XSS(Cross Site Scripting) (0) | 2016.12.21 |
블로그의 정보
jennysgap
jennysgap