문제풀이

[Dreamhack] littlevsbig 문제풀이

suuuullloc 2024. 1. 12. 03:22

# 문제링크 : https://dreamhack.io/wargame/challenges/934

 

littlevsbig

Description 사용자에게 문자열을 입력받아 메모리에 저장하는 프로그램입니다. 저장된 값이 특정 값과 일치하면 플래그를 출력합니다. 알맞은 문자열을 입력하여 플래그를 획득하세요! 플래그는

dreamhack.io


 

문제 파일

 

접속 정보

 

misc 문제니까 웹페이지에 접속해서 푸는 문제는 아닌 것 같고 코드를 중심으로 푸는 문제 같다. chall.c 코드를 살펴보자.

 

코드를 살펴보면서 플래그를 출력하는 특정값을 찾아보자.

 

이 부분을 살펴보면 0x64726d68를 입력하고 0x636b3a29를 입력하면 플래그가 출력되는 걸 알 수 있다.

 

해당 16진수 문자열들을 아스키코드로 바꿔보자.

drmh 다음 ck:)인 걸 알 수 있다.

 

우분투 환경에서 접속해보았다.

 

처음 drmhck:)를 했을 때는 안됐다.

 

그래서 혹시나 하고 hmrd):kc를 입력해 보았더니 정답이었다.

 

4바이트 4바이트 쪼개서 뒤집어서 입력하니까 정답이었다. 왜 그런지 좀 더 찾아보니 리틀 엔디언, 빅 엔디언 방식에 따라 표기 방식이 달라진다고 한다. 우분투에서는 보통 리틀 엔디언 방식을 사용한다고 하는 듯? 어쨌든 플래그는 나왔다.

 

문제 해결!