[DreamHack] rev-basic-0~3 풀이

코딩 파인애플·2026년 8월 13일

CHALLENGE SOLVING

목록 보기
9/10

안녕하십니까 코딩 파인애플입니다
이번에는 rev-basic-0~3을 풀어보겠습니다

참고로 사용한 툴은 Radare2 입니다
뭐, IDA나 Radare2나 거기서 거기인 정적 분석 도구죠 뭐.

rev-basic-0️⃣

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

대략적인 흐름은 최대 %256s 자의 입력을 받아 var_20h스택에 저장하고
Call section..text 로 넘겨 결과를 eax로 받습니다
그리고 eax가 1이라면 0x140001157로 넘겨 Correct 출력을, 0이라면 0x140001166으로 넘겨 Wrong 출력을 하는 단순한 구조입니다

이제 section..text 함수를 살펴봅시다

음, 대충 rdx에 Compar3_the_str1ng라는 주소를 할당하고 call로 strcmp를 불러 비교하여 똑같다면 0x14000101e로 가 eax에 1을, 아니라면 0x140001028로 가 eax에 0을 할당합니다

그렇다면 총합적으로 문자열 비교를 통해 Compar3_the_str1ng와 같은지 확인하고 같다면 Correct를, 아니라면 Wrong을 출력하는 구조로 볼 수 있겠습니다

flag : DH{Compar3_the_str1ng}

rev-basic-1️⃣

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

main함수는 rev-basic-0과 비슷한 구조라서 생략하겠습니다

위 함수는 배열의 자릿수마다 글자가 동일한지 여부를 판별하는 구조인 것 같습니다

맨 위의 함수 블럭의 경우 67 (C)와 동일한지 판별함을 알 수 있고 참이라면 오른쪽 함수로, 거짓이면 왼족 함수로 xor을 통해 0을 반환하여 메인으로 보내는 함수임을 추측할 수 있습니다

이를 계속 반복하는 구조입니다

대략적인 코드를 짜보면 다음과 같습니다

str = [67,111,109,112,97,114,51,95,116,104,101,95,99,104,52,114,97,99,116,51,114]
for i in str: print(chr(i),end='')

flag : DH{Compar3_the_ch4ract3r}

rev-basic-2️⃣

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

한 화면에 다 담느라 좀 엉켜놓긴 했는데 아무렴 어떠랴

Comp4re_the_arr4y 배열을 이용해 입력 버퍼의 바이트마다 dword[i]로 1바이트씩 비교하는 rev-basic-0과 비슷한 구조의 함수입니다

하나라도 다르면 즉시 eax에 0을 반환하고 18개가 전부 일치하면 eax에 1을 반환해 Correct를 출력합니다

rev-basic-3️⃣

내일 작성할랍니다 lol.

profile
안녕하떼요취미로콤푸타배우는고든학교6학년유치원생이빈다주말재외하고(러블럭스해야대요💢💢)주중연재하고안한날애눈이월(February)됨니다(안할수도있음)

0개의 댓글