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

공지사항

  • resources
  • 분류 전체보기 (626)
    • CTF (24)
    • background (79)
      • fuzzing (5)
      • linux (29)
      • linux kernel (15)
      • windows (2)
      • web assembly (1)
      • embedded (0)
      • web (13)
      • crypto (9)
      • mobile (1)
      • AI (1)
      • etc.. (3)
    • write-up(pwn) (171)
      • dreamhack (102)
      • pwn.college (4)
      • pwnable.xyz (51)
      • pwnable.tw (3)
      • pwnable.kr (5)
      • G04T (6)
    • write-up(rev) (32)
      • dreamhack (24)
      • reversing.kr (8)
    • write-up(web) (195)
      • dreamhack (63)
      • LOS (40)
      • webhacking.kr (69)
      • websec.fr (3)
      • wargame.kr (6)
      • webgoat (1)
      • G04T (7)
      • suninatas (6)
    • write-up(crypto) (19)
      • dreamhack (16)
      • G04T (1)
      • suninatas (2)
    • write-up(forensic) (53)
      • dreamhack (5)
      • ctf-d (47)
      • suninatas (1)
    • write-up(misc) (13)
      • dreamhack (12)
      • suninatas (1)
    • development (31)
      • Linux (14)
      • Java (13)
      • Python (1)
      • C (2)
      • TroubleShooting (1)
    • 자격증 (8)
    • 이산수학 (1)
    • 정보보안 (0)
hELLO · Designed By 정상우.
ssongk
CTF

San Diego CTF 2024 (Pwn)

San Diego CTF 2024 (Pwn)
CTF

San Diego CTF 2024 (Pwn)

2024. 5. 15. 15:17

 


 

[solved]

 

[pwn/point-plunderer]

더보기
int __cdecl main(int argc, const char **argv, const char **envp)
{
  int v4; // [rsp+8h] [rbp-18h] BYREF
  unsigned int v5; // [rsp+Ch] [rbp-14h] BYREF
  unsigned int v6; // [rsp+10h] [rbp-10h]
  unsigned int v7; // [rsp+14h] [rbp-Ch]
  unsigned __int64 v8; // [rsp+18h] [rbp-8h]

  v8 = __readfsqword(0x28u);
  setvbuf(stdin, 0LL, 2, 0LL);
  setvbuf(_bss_start, 0LL, 2, 0LL);
  v6 = 0x3E8;
  v7 = 0x3E8;
  puts("Welcome to ByteBreach Point Management System!\n");
  printf("You currently have %d points.\n", 0x3E8LL);
  puts("try to get 1 MILLION points and break the bank!");
  while ( 1 )
  {
    puts("\nMenu:\n");
    puts("1. Add Points\n");
    puts("2. Subtract Points\n");
    puts("3. Exit\n");
    puts("Enter your choice: ");
    __isoc99_scanf("%d", &v4);
    if ( v4 == 3 )
      break;
    if ( v4 > 3 )
      goto LABEL_13;
    if ( v4 == 1 )
    {
      puts("Enter points to add: ");
      __isoc99_scanf("%d", &v5);
      if ( v7 <= v5 || (int)v5 <= 0 )
      {
        puts("Bank doesn't have enough points or malformed input\n");
      }
      else
      {
        v6 += v5;
        v7 -= v5;
        puts("Points added successfully.\n");
      }
    }
    else
    {
      if ( v4 != 2 )
      {
LABEL_13:
        puts("Invalid choice! Please try again.\n");
        goto LABEL_14;
      }
      puts("Enter points to subtract: ");
      __isoc99_scanf("%d", &v5);
      v6 -= v5;
      v7 += v5;
      puts("Points subtracted successfully.\n");
    }
LABEL_14:
    printf("Current points: %ul\n", v6);
    if ( v6 > 0xF4240 )
      system("/bin/sh");
  }
  puts("Exiting...\n");
  return 0;
}

 

빼기 연산을 할 때 값에 대한 검증이 없다.

음수를 넣어주면 쉘이 나온다.

 


 

[solved]

 

[pwn/Snake]

더보기

뭔가 방법이 있을텐데..

 

 

'CTF' 카테고리의 다른 글

BYUCTF 2024 (Pwn)  (0) 2024.05.19
TBTL CTF 2024 (Pwn)  (0) 2024.05.18
Grey Cat The Flag 2024 Qualifiers  (0) 2024.04.22
AmateursCTF 2024  (1) 2024.04.10
[QWB CTF 2018] core (with write-up)  (1) 2024.04.04
    'CTF' 카테고리의 다른 글
    • BYUCTF 2024 (Pwn)
    • TBTL CTF 2024 (Pwn)
    • Grey Cat The Flag 2024 Qualifiers
    • AmateursCTF 2024
    ssongk
    ssongk
    벌레 사냥꾼이 되고 싶어요

    티스토리툴바

    개인정보

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

    단축키

    내 블로그

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

    블로그 게시글

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

    모든 영역

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

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