본문 바로가기
ctf/Web Exploitation

Some Assembly Required 1 문제 풀어보기

by 반짱코 2025. 2. 4.
728x90

 

직역하면 일부 조립이 필요하다는 뜻이지만 구글에 검색하면 캐나다 시트콤이 나온다.

 

도중에 잘못된 방법으로 문제를 풀다 결국 검색의 도움을 받아서 플래그를 얻었다.

 

 

 

 


 

 

사이트에 들어가 보니 flag를 입력할 수 있었다.

별 방법은 없어 소스창에 들어가 보니 복잡한 js파일을 찾을 수 있었다.

 

 

 

전체 코드를 보여줄 수 없지만 전에 풀었던 문제 중 난독화 관련 문제와 비슷해 보였다.

 

 

 

 

 

0x1~로 시작되는 여러 값과 배열을 매치시킬 수 있을 거 같았다.

 

하지만 어떤 값이 어디에 들어가는지 몰라 쭉 훑어보던 중 코드 중간에 나온 fetch와 WebAssembly에서 단서를 얻을 수 있었다.

 

 

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

https://developer.mozilla.org/en-US/docs/WebAssembly

 

 

fetch 값에는 url이 필요한데 마침 배열안에 ./ 로 시작하는 값을 찾을 수 있어서 이걸 중심으로 하나하나 대조해 정리했다.

기왕에 전체 코드도 예쁘게 정리해 보려 했지만 쉽지 않았다.

후!

 

여기서 길을 잘못들어 자력으로 문제를 풀 수 없게 되었다.

 

제대로 된 방법은 2번 입니다.

 

 


 

1. 나의 잘못된 풀이

 

 

parseInt로 알 수 없는 문자열들을 계산하게 되어 있어 대조했던 값들을 넣어봤다.

parseInt는 숫자와 문자가 같이 있는 값을 숫자만 출력해 준다.

 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

 

 

 

일단 무식하게 빼고 더하고 곱해서 값을 알아냈고 flag를 입력해 봤다.

 

실패했다.

 

계산을 잘못했나 몇 번을 다시 해보고 문서를 찾아봤지만 딱히 다른 방법을 찾을 수 없었다.

 

 

 

2. 올바른 풀이

 

코드를 살펴보면 플래그 각 문자를 가져와 WebAssembly 스크립트에 제출하고 그걸 올바른 플래그인지 확인하는 스크립트가 있다는 걸 알 수 있다.

 

https://developer.mozilla.org/en-US/docs/WebAssembly/Guides/Loading_and_running

 

fetch의 url이 힌트였는데 사이트에서 url을 붙여 넣기를 하면 파일 하나가 자동으로 다운로드된다.

윈도우에서는 악성파일로 생각해서 바로 삭제되기 때문에 wget을 사용해 다운로드해 주면 좋다.

 

 

그리고 cat 명령어로 다운로드한 파일을 읽다 보면 플래그를 얻을 수 있다.

 

 

 


 

 

 

성공했지만 실패했다.

 

코드 분석 능력이 많이 부족했다. 

😥

728x90

'ctf > Web Exploitation' 카테고리의 다른 글

Who are you? 문제 풀어보기  (0) 2025.05.01
More Cookies 문제 풀어보기  (0) 2025.04.15
login 문제 풀어보기  (0) 2025.01.31
It is my Birthday 문제 풀어보기  (0) 2025.01.25
Client-side-again 문제 풀어보기  (1) 2025.01.24

댓글