3학년1학기 1주차_웹해킹 과제2

2025. 4. 1. 23:45카테고리 없음

 

Challenges/Web - Client : Javascript - Native code [Root Me : Hacking and Information Security learning platform]

 

문제를 보면서 제목을 먼저 보고 넘어가기。

 

문제를 풀어보자。

 

✅ 내풀이

 

첫번째 과제랑 비슷하게 어떤 내용을 집어넣어야 플래그를 얻을 수 있는 유형인 것 같다。

 

 

넣고 나서 보냈는데、 별다른 반응이 없었다。

 

딱봐도 너무 수상하다。 뭔가 이걸 디코딩해야 원하는 답을 가질 것 같은、 느낌 일단은 이게 어떤게 변형된 것인지 찾아봤다。

대표적인 JavaScript eval 중첩 난독화 패턴이라고 한다。

 

그래서 Ì(Ì(...))() 구조에서 eval(eval('난독화된 문자열')())()
⟶ 이 문자열 안의 내용을 해독하고 플래그를 찾아야하는 문제이다。

 

  • É, ó, Ë, þ 등을 계산해 변수 값으로 숫자를 만들고,
  • Ì는 사실상 eval을 Function()이나 constructor를 통해 구현한 것
  • Ì(Ì(...))() 이건 결국 문자열을 만들어서 eval 두 번 돌리는 구조임。

 

 

문제 풀이를 위해서 snippets을 이용해서 시도를 해봤는데、문자 중간에 return이 있다는 것 말고는  자꾸 \역슬래시로 인한 오류가 나서 다른 사람들은 어떻게 풀이를 했는지 찾아보았다。

아마 이 코드 안에 다양한 내용이 숨어 있는 것 같았다。

 

(문제를 풀면서 보니까 NATIVE CODE라는 것을 보고 제목이 왜 그런지 추측 가능했다。)

 

찾아보니、 크롬 콘솔에서 끝() 을 지우고.toString()을 입력하면 복호화 시킬 수 있다고 한다。

시도해보았다。

이게 훨씬 간단한 방법이었다。。 내가 괜히 돌아간 듯、 난독화를 풀때는 이러한 방법을 이용하면 되겠다라는 좋은 팁을 얻고 문제를 풀어냈다。 toto123lol을 입력하면 되겠다。

 

 

생각보다 수월하게 문제풀이 끄읕~¡

 

「 。toString() 참고 」

https://steven-life-1991.tistory.com/166

 

[RootMe] Javascript - Native code [WEB/CLIENT]

Entrez le mot de passe == Enter the password 비밀번호를 풀어달라는 프랑스어가 나를 반긴다. 역시 비밀번호를 입력해보면 틀리다는 메시지를 볼 수 있다. 스크립트를 보면 엄청난 외계어를 볼 수 있다.

steven-life-1991.tistory.com