[Dreamhack 드림핵] amocafe WriteUp

2024. 1. 31. 17:25Hacking/WebHacking Wargame Writeup

문제 링크

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

amocafe

Description 아모카페에 오신 것을 환영합니다! 메뉴 번호를 입력하여 주문할 수 있는 웹 서비스가 작동하고 있습니다. 아모의 최애 메뉴를 대신 주문해 주면 아모가 플래그를 준다고 합니다. 첨부

dreamhack.io

 

문제

 

풀이

웹에 접속하면 이런 화면이 펼쳐진다. 막막하므로 코드를 살펴본다. 

일단 이 부분 코드부터 보면, 비트연산자가 쓰여서 16진수를 2진수로 바꿔서 생각을 할 수 있어야 하는 문제라는 것을 알 수 있다.
코드를 파이썬으로 직접 짜는 방법도 있으나, 나는 여기서 직접 역연산을 하는 방법을 택했다.
1. 우선 사이트의 _를 알려면 여기서 ~res & 0xf == 0x4 라는 것을 풀어야 하는데, 0xf, 0x4는 16진수로 쓰여있으므로 2진수로 바꾸면 ~res & 1111 == 0100
res == 1011
2. 모두 16진수에서 2진수로 변환
1 => 0001
c => 1100
3 => 0011
0 => 0000
f =>1111
e =>1110
이제 이걸 연달아서 입력해주면
0001/1011/1100/1011/0011/1011/1100/1011/0000/1011/1011/1111/1111/1011/0011/1100
=> 0001101111001011001110111100101100001011101111111111101100111100
여기서 끝나는게 아닌데, 윗부분 코드에

이런 부분이 있다. int형으로 변환을 시켜주라는 것이다. 
따라서 위에 입력된 2진수 값을 int형을 변환을 시켜주면(int형은 기본이 10진수이므로 쉽게 말하면 10진수로 변환을 시켜주는 것이다.)
2002760202557848382 
가 나온다.
이를 프롬프트에 입력해주면

플래그 값을 얻을 수 있다.