CTF/Web

[ACECTF] Webrypto

liqu3ur 2025. 3. 1. 01:27
반응형

문제 설명

우리 대부분이 상징적인 만화 톰과 제리를 보며 자랐다는 데 모두 동의할 수 있을 것 같습니다. 모든 아이는 장난꾸러기 쥐와 항상 결의에 찬 고양이 사이의 스릴 넘치는 추격전과 혼란스러운 갈등에서 아드레날린이 솟구치는 것을 느꼈을 것입니다. 그 장면의 흥분, 즉 심장이 두근거리는 탈출의 순간은 때때로 거의 실제처럼 느껴졌습니다. 

하지만 그때, 나는 작은 소문을 들었습니다. 만약 그 모든 추격이 가짜였다면? 만약 톰과 제리가 처음부터 친구였다면? 그 계시는 나를 흔들었습니다. 나는 이 정신 나간 반전에 대해 물어볼 사람이 없었기 때문에, 나는 문제를 내 손으로 해결하기로 했습니다. 나는 이 의문을 영원히 해결하기 위해 웹 앱을 만들었습니다. 

나는 이제 진실을 알았어. 너도 그것을 밝혀낼 수 있다고 생각해?

 

문제 풀이

우선 문제 사이트에 접속하면 아래와 같은 화면을 볼 수 있다. 

문제 사이트

 

이 페이지는 문제 소스 코드를 보여준다. 또한 플래그를 얻기 위해서는 사용하고 있는 검사를 우회해야 한다. 이 페이지에는 두 개의 GET 매개변수인 tom과 jerry를 취하고, 두 매개변수의 값을 '!='으로 비교한다. 조건을 충족하면 ACECTF . $tom의 MD5 해시를 ACECTF . $jerry와 계속 비교한다.

※ PHP에서 .은 문자열 연결 연산자이다.

조건을 다시 충족하면 플래그를 얻을 수 있다.

 

이 웹 페이지의 검사 방법은 '!='으로 Type Juggling 취약점이 있을 가능성이 높다. '!='와 '=='을 느슨한 비교라고 부르는데, 이는 데이터 유형이 아닌 값만을 비교하기 때문이다.

따라서 tom[]=0&jerry[]=1로 GET 요청을 보내면 페이지는 이 두 매개변수의 값만 비교하므로 첫 번째 검사를 우회할 수 있고, 두 개의 빈 배열을 보내므로 두 매개변수의 MD5 해시는 동일한 해시를 반환하고 플래그를 얻을 수 있다. 

Type Juggling 취약점 이용

반응형

'CTF > Web' 카테고리의 다른 글

[ApoorvCTF 2025] SEO CEO  (0) 2025.03.03
[ACECTF] Token of Trust  (0) 2025.03.01
[ACECTF] Bucket List  (0) 2025.03.01
[ACECTF] Buried Deep  (0) 2025.03.01