KnightCTF 2022 Can you be Admin? write-up

조승현·2022년 1월 24일
0

도저히 모르겠어서 다른 사람의 write-up을 본 문제다. 보길 잘한거 같다. 안봤으면 평생 못풀었을지도... 기존의 문제보다 월등히 어려운 문제였다. solve수가 100도 안되는 이유가 있었다. 하아... 저 안에 내가 들었어야하는데 ㅠㅠ

다시 복기해보자

KnightSquad 유저만 접근할 수 있는 페이지라고 한다. 권한을 가져와야할거 같아 먼저 쿠키값을 봤다.

phpsessid는 대부분 풀수없다고 알고있다. 그런데 어떤 힌트도 찾지 못해서 여기서 문제가 있을거라고 생각하고 무친 삽질이 시작된다. 쿠키값을 admin으로 넣기도하고 blind injection, 파라미터가 전달 안해본게 없는거 같다.
정답은 burp suite로 user-agent 헤더값을 KnightSquad로 바꾸는 것이다. 그 agent가 그 agent라니... 오래전에 중국 ctf 문제에서 봤던게 여기서 나오다니. 아무튼 agent 값을 변경해서 넘겨줬다.

또 다시 요구사항이 나온다. 해석해보면 이 페이지는 knight squad network를 참조하고 오직 home network에서만 접근가능하다고 한다. referer을 localhost로 바꾸면 된다.

또 요구한다고...? 무친문제다. 코드를 살펴보자.

또 난독화로 장난질을 해놓았다. 이건 jsfuck으로 특수문자로 난독화된 코드라고 한다... (jsfuck이란게 있는줄 몰랐다) 암튼 해독하면

??????????????????????
분명 제대로 복호화했는데 더 이상해졌다. 이건 또 ascii85로 encode된 문자열이라고한다. ㅋㅋㅋㅋ ascii85는 듣도보도 못했다... 아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ 짜증나
또 복호화 해보자.

username, password를 얻었다. 로그인해보자.

normal user로 로그인됐다. admin으로 로그인해야겠지? 몇번째 말하지만 무친문제다. 쿠키값이 추가됐다.

이건 또 뭔가... 찾아보니 base64로 암호화되었단다. 해독해보면 User Type=User_Normal 인가 이렇게 나온다. 여기서 주의할점이 저 쿠키값의 마지막 %3D는 '='를 의미한다. 이게 자동으로 URL encode되나보다. bas64값으로 admin을 encode한 값을 구한후에 쿠키값으로 넣어주면!!

드디어 solved... 벽을 제대로 느낄수있었던 CTF다운 문제였다. 다음 문제 풀기가 두려워진다. 그래도 한걸음 성장하지 않았을까라는 위로를 해본다. ㅠ

profile
Inha University / CTF Web Player / Team Riot of Noob

0개의 댓글