[EVI$ION] CTF 3문제 챌린지 4

beanii·2023년 5월 24일
0

CTF

목록 보기
5/7
post-thumbnail

💫[Dreamhack] rev-basic-3

https://dreamhack.io/wargame/challenges/17/

지난 시간에 이어 리버싱을 풀어볼 것이다

저번과 같이 올바른 입력값을 구하면 된다

먼저 main 함수를 디컴파일한다

검증 과정인 sub_140001000를 자세히 살펴본다

아마도 비교해야할 값이 있는 byte_140003000에 가보면 다음과 같은 값이 들어있다

아래의 코드가 입력한 값과 주어진 값을 비교하는 부분이므로 자세히 살펴보자

아래 코드는 파이썬으로 작성된 것인데 직접 작성한 것은 아니고 구글에서 참고했다
내가 직접 코드 작성하는 날이 왔으면 좋겠다..

str='49','60','67','74','63','67','42','66','80','78','69','69','7B','99','6D','88','68','94','9F','8D','4D','A5','9D','45'
res=''

for i in range(24):
    res+=chr((int(str[i],16)-(i*2))^i)

print(res)

코드를 돌려보면 다음과 같이 flag 값이 나온다!!

🔑 DH{I_am_X0_xo_Xor_eXcit1ng}



💫[Dreamhack] rev-basic-4

https://dreamhack.io/wargame/challenges/18/

위의 문제와 동일한 형태이다

main을 살펴보고 검증과정인 sub_140001000에 들어가본다

sub_140001000을 보면 byte_140003000과 비교하고 있기 때문에 중요한 값임을 알 수 있다

byte_140003000를 보면 다음과 같이 문자들이 있다

아래 7번째 줄 코드를 참고하여 정답을 계산하는 파이썬 코드를 작성한다

a1 = [0x24,0x27,0x13,0xC6,0xC6,0x13,0x16, 0xE6,0x47, 0xF5,
  0x26, 0x96, 0x47, 0xF5, 0x46, 0x27, 0x13, 0x26,0x26, 0xC6,
  0x56, 0xF5, 0xC3,0xC3, 0xF5, 0xE3,0xE3]

for i in range(0, len(a1)):
    print(chr(16 * a1[i] & 0xF0 | a1[i] >> 4), end='')

코드를 실행시켜보면 다음과 같이 flag값이 출력된다

🔑 DH{Br1ll1antbit_dr1bble<<_>>}



💫[Dreamhack] patch

https://dreamhack.io/wargame/challenges/49/

참고

이번 문제를 새로운 형태인 것 같다

먼저 IDA로 주어진 문제 파일을 열어본다

다음은 WinMain 함수를 디컴파일한 모습이다

🔑 DH{UPATCHED}

0개의 댓글

관련 채용 정보