rev-basic-3

2023. 1. 19. 22:02·Wargame/Dreamhack
728x90
반응형

1. intro

2. code 및 분석

2.1.  code

2.1.1. main

int __cdecl main(int argc, const char **argv, const char **envp)
{
  char v4[256]; // [rsp+20h] [rbp-118h] BYREF

  memset(v4, 0, sizeof(v4));
  printf("Input : ", argv, envp);
  scanf("%256s", v4);
  if ( check(v4) )
    puts("Correct");
  else
    puts("Wrong");
  return 0;
}

2.1.2. check

__int64 __fastcall check(__int64 a1)
{
  int i; // [rsp+0h] [rbp-18h]

  for ( i = 0; i < 0x18; ++i )
  {
    if ( password[i] != (i ^ *(a1 + i)) + 2 * i )
      return '\0';
  }
  return '\x01';
}

2.2. 분석

함수명을 조금 보기 쉽게 해놨다.

요약하면, 값을 받아들인 후 password 변수의 값과 받아들인 값의 연산 값을 비교해서 같으면 1을 return하고 correct를 출력해 줄 것이다.

이런 문제는 그냥

    if ( password[i] != (i ^ *(a1 + i)) + 2 * i )

부분에 브레이크를 걸고, 최종적으로 어떤 값과 비교하는지 보면 답이 나올거다.

이런 식으로 말이다.

 

또는 password 부분은 이미 프로그램에 저장된 값이기에 해당 메모리의 값을 보면 된다.

 

00007FF615FF3000  49 60 67 74 63 67 42 66  80 78 69 69 7B 99 6D 88  I`gtcgBf.xii{.m.
00007FF615FF3010  68 94 9F 8D 4D A5 9D 45  00 00 00 00 00 00 00 00  h...M..E........

 

결국 연산된 값이 이 값과 같아야하니 역으로 연산이 가능하다.

 

어릴때 배웠던 것처럼, 공식을 반대로 넘겨보자.

 

3. exploit

파이썬으로 간단히 코딩하여 풀었다.

p = [0x49,0x60,0x67,0x74,0x63,0x67,0x42,0x66,0x80,0x78,0x69,0x69,0x7B,0x99,0x6D,0x88,0x68,0x94,0x9F,0x8D,0x4D,0xA5,0x9D,0x45]
d = ''

for i in range(len(p)):
    d += chr((p[i] - 2*i)^i)

print(d)

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Wargame > Dreamhack' 카테고리의 다른 글

rev-basic-4  (0) 2023.01.22
rev-basic-2  (0) 2023.01.19
patch  (0) 2023.01.19
Holymoly  (0) 2023.01.12
rev-basic-0  (0) 2023.01.06
'Wargame/Dreamhack' 카테고리의 다른 글
  • rev-basic-4
  • rev-basic-2
  • patch
  • Holymoly
wyv3rn
wyv3rn
아저씨의 흔한 취미. wyv3rn#1249
  • wyv3rn
    think storage
    wyv3rn
  • 전체
    오늘
    어제
    • 분류 전체보기 (493)
      • To do list (6)
        • Doing (0)
        • Complete (6)
      • Diary (35)
      • Tips & theory (77)
      • Kernel Exploit (22)
      • Wargame (313)
        • pwn.college (34)
        • Dreamhack (148)
        • pwnable.kr (15)
        • Lord of Sqlinjection (3)
        • Cryptohack (20)
        • Root me (27)
        • CodeEngn (4)
        • Exploit Education (22)
        • ROP Emporium (8)
        • H4C (10)
        • Hackerchool (22)
      • CTF (40)
        • Solved (38)
        • Unsolved (2)
      • Script (0)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • PWN wargame 모음 (및 느낀점)
    • 비공개 글들에 대해.
    • 뭐라도 하나 얻어가시길...
  • 인기 글

  • 태그

    hackerschool
    Me
    CANARY
    FSB
    la ctf
    tcache
    RTL
    ROOT ME
    BOF
    Format String Bug
    phoenix
    rop
    cryptohack
    root
    32bit
    _IO_FILE
    exploit education
    libc
    dreamhack
    heap
    lob
    64bit
    vtable
    pwntools
    pwnable.kr
    x86
    root-me
    x64
    Buffer Overflow
    docker
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
wyv3rn
rev-basic-3
상단으로

티스토리툴바