rev-basic-5

2024. 10. 17. 14:26·DreamHack/Reverising

 

 

파일을 받아 IDA로 보자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Corrcet' 출력을 위해 sub_14001000를 살펴보자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

수식과 byte_140003000 배열값들을 비교하여 답을 추출하는 문제이다.

 

식을 정리해보자.

 

if ( *(unsigned __int8 *)(a1 + i + 1) + *(unsigned __int8 *)(a1 + i)!= byte_140003000 [i] )

 

형변환생략

 

(a1+i+1)+(a1+i) == byte_140003000[i]

(a [i]+1)+(a1[i]) = byte_140003000 [i]

 

byte_140003000 [i]에 대한 배열값들을 보자.

 

 

 

 

예시
(a1[0]+1) + (a1[0]) = byte_140003000[0] = 0xAD

(a1[1])+(a1[0])= byte_140003000[0] = 0xAD

(a1[2])+(a1[1] = byte_140003000[1] = 0xD8

 

(a1[3])+(a1[2]) = byte_140003000[2] = 0xCB

 

(a1[4]) + (a1[3]) = byte_140003000[3] = 0x9D

 

...

 

a1[17] + a1[16] = byte_140003000[16] = 0x4C

 

a1[18] + a1[17] = byte_140003000[17] = 0x00

 

마지막은 0x00 즉 0이라는 걸 파악할 수 있다. 

 

그렇다면

 

a1[18] , a1[17] 값은 0이라는 소리가 된다.

 

부호가 없는 hex 값은 음수가 존재하지 않기 때문이다. (Unsigned)

 

그렇다면 a1 배열 값들은 몰라도 끝에 a1 [18], a1 [17]의 값이 0이라는 걸 알 수 있다.

 

역순으로 수식을 적용하여 다시 순서대로 print 하면 되는 문제인 거 같다.

 

 

 

 

for i in reversed(range(len(byte_140003000))):
    a1[i] = byte_140003000[i] - a1[i+1]

 

 

수식은 그대로 사용하도록 하자 python 에는 reversed를 이용해서 리스트 요소를 뒤집어준다.

 

코드를 완성하여 확인하면...

 

 

 

 

 

 

 

 

 

 

 

 

 

'DreamHack > Reverising' 카테고리의 다른 글

rev-basic-8  (0) 2024.10.17
rev-basic-6  (1) 2024.10.17
rev-basic-4  (1) 2024.10.09
patch  (1) 2024.10.08
rev-basic-2  (1) 2024.09.26
'DreamHack/Reverising' 카테고리의 다른 글
  • rev-basic-8
  • rev-basic-6
  • rev-basic-4
  • patch
G_OM
G_OM
최대한 설명 열심히 하려고 합니다. 궁금한 거 있으면 언제든지 물어보셔도 좋습니다.
  • G_OM
    끄적끄적
    G_OM
  • 전체
    오늘
    어제
    • 분류 전체보기 (139)
      • 모의해킹 (8)
      • Wargame (69)
        • Linux_bandit (33)
        • Webhacking.kr (36)
      • DreamHack (52)
        • WEB (14)
        • Reverising (9)
        • System (0)
        • CTF (22)
      • Android_security (5)
      • 정보보안기사 (2)
      • IT? (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • DreamHack 에 대한 문제들...
  • 인기 글

  • 태그

    bandit18
    안드로이드
    union
    Linux wargame
    Dreamhack
    lfi
    insecurebankv2
    Linux
    cookies
    webhacking.kr
    정보보안기사
    Cookie
    Android
    bandit17
    overthewire
    php wrapper
    url encode
    리눅스
    bandit20
    php
    bandit
    wargame
    drozer
    bandit30
    CTF
    리눅스 워게임
    webhacking
    난독화
    워게임
    sql injection
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
G_OM
rev-basic-5
상단으로

티스토리툴바