CTF Reviewed & Writeups/RealWorld CTF

REALWORLD CTF 후기

반응형
SMALL

소개

제가 해킹을 하면서 배우는 내용과 CTF를 나가면서 느꼈던 점들을 모두 기록하고자 포스트를 작성하게 되었습니다.

아직 학생이어서 많이 부족한 상태입니다, 혹시라도 글에 문제가 있거나 혹은 오타가 있는 경우 Comments로 작성해주시면 최대한 빠르게 수정하겠습니다, 감사합니다.

더 자세한 내용을 확인하시려면 공지사항 글을 확인해주시길 부탁드립니다.

첫 CTF에 대한 마음

첫 해킹 공부를 드림핵이라는 사이트를 알게 되고 난 후인 2021년 12월부터 시작하여서 한 1월 15월쯤이 되던 날, 한번 경험 삼아서 CTF를 나가보고 싶은 마음이 생겨나기 시작하였습니다.

아직 웹 해킹을 공부한 지 2개월이 채 안되었지만, 한번 제 자신에 대한 실력을 확인해보고 싶기도 하고 CTF에서는 어떤 유형의 문제가 출제되는지 알고 싶어서 CTF에 대해 더 관심을 가지게 되었던 것 같습니다.

REALWORLD CTF를 알게 된 계기

CTF를 경험삼아 한번 나가 보고자 우연히 알게 된 ctf에 대한 정보들을 모두 알려주는 ctftime.org라는 사이트를 들어가서 최근에 열리는 CTF가 어떤 것이 있는지 알아보던 중 세계적으로 유명하다고 들은 REALWORLD CTF가 개최한다는 사실을 알게 되었습니다.

처음에는 무언가 모를 두려움이 있었지만 경험을 쌓기 적합한 대회라고 생각이 들어서 회원 가입을 하고 참가 신청을 하였습니다.

첫 번째 사건

2022년 1월 21년 오후 10시에 REALWORLD CTF 사이트에 들어가 봤습니다, 사이트에는 대회의 시작을 알리는 카운트다운 타이머가 존재하였는데 오후 10시가 되자 카운트 다운이 0을 가리켰습니다.

실제 2022 REALWORLD CTF 공식 사이트

한번 CTF에 있는 문제를 풀어보고자 challenge를 들어가 봤지만 팀이 없다고 하여 문제가 공개되지 않았습니다.

이때 저는 CTF를 참가 할때 팀이 있어야 한다는 것을 알게 되었지만 그때 저에게는 팀이 없었기 때문에 CTF를 참가할 수 없는 줄 알고 거의 포기상태에 있었습니다.

하지만 다시 생각해보니깐 팀을 제가 직접 만들 수 있다는 것을 깨닫게 되었고 바로 대회 사이트에 다시 접속해서 팀을 혼자 만들고 challenge에 접속해보니 정상적으로 대회 문제가 열람이 되었습니다!

일반적인 소프트웨어 공모전이랑 CTF와의 차이점

저는 해킹을 하기전에 웹 개발을 공부하였을 때 소프트웨어 공모전을 많이 나갔었습니다.

이번에 처음 CTF를 나갔을 때, CTF가 본격적으로 시작되었을 때, 제가 아는 대회의 진행방식이랑 평가방식이 많이 달라서 놀랐습니다.

소프트웨어 공모전에는 일정 기간내에 소프트웨어를 만들고 발표를 하여 평가가 진행되었다면

CTF는 실시간 ScoreBoard로 경쟁을 하여 주어진 시간 내에 얼마나 많은 문제를 해결하는지로 대회가 진행되었습니다.

이때 저는 CTF의 기본적인 진행방식과 평가 방식을 알 수 있었습니다.

Check-in 문제

1월 22일부터 본격적으로 대회문제를 풀어보기 시작하였습니다.

일단 먼저 가장 기본적인 Check-in 카테고리의 문제를 풀어보았습니다.

REALWORLD CTF Check-in 문제의 내용

문제의 설명이 전부 영어로 되있어서 많이 번역기를 사용하였습니다..

이 문제에서 시간과 용은 항상 진실만을 말한다라는 내용과 함께 올바른 4 단어를 언더스코어로 조합해서 FLAG를 획득하라고 나와 있었습니다.

저는 사진에 힌트가 있는줄 알고 열심히 사진에 있는 내용을 조합해 보았지만 답이 나오지 않았습니다.

그래서 혹시 예전에 나갔던 CTF인 Christmas-CTF와 비슷한 유형의 Check-in문제인 것 같은 생각이 들어서 공식 사이트를 확인해 보았습니다.

REALWORLD CTF 메인 페이지의 내용중 일부

놀랍게도 <Online Jeopardy>라는 곳에 해답이 있었습니다.

진실만을 말한다는 Real. 단어 바로 다음 줄에 문제의 사진과 같은 단어인 Super Hunters Conquer Together라는 문장이 있었습니다.

해당 문장이 의심스러워서 대회의 FLAG FORMAT 형식에 맞게 rwctf{Super_Hunters_Conquer_Together} 조합해보았더니 바로 문제가 풀리게 되었습니다.

이때부터 갑자기 문제가 풀려서 너무 신나기 시작하였습니다.

Hack into Skynet

난관에 봉착했습니다.

Check-in 문제를 풀고 바로 다음문제를 풀려고 했지만 거의 모든 문제가 Pwnable(시스템 해킹) 문제라는 것을 알게 되었습니다.

하지만 Web Hacking과 관련된 문제도 있었기에 그중 가장 포인트가 낮은 문제인 Hack into Skynet이라는 문제를 풀어보기 시작하였습니다.

REALWORLD CTF Hack into Skynet 문제의 일부

문제 코드를 다운받고 문제 사이트에 접속을 해보아서 본격적으로 문제를 풀어보기 시작하였습니다.

하지만 아무리 문제를 풀어봐도 문제가 해결되지 않았습니다.

문제에 대한 약간의 설명을 하자면 /login 엔드포인트에 있는 로그인 인증을 SQL injection으로 우회하고 / 엔트포인트에 있는 Kill Time 쿼리문을 UNION SQL injection으로 우회해서 FLAG를 획득하는 문제였습니다.

로그인 인증을 우회하는 것은 별로 어렵지 않았습니다, 하지만 본격적인 기능은 / 엔트포인트에 있는 필터링을 우회하는 것이었습니다.

제가 지금까지 다른 워게임에서 풀었던 문제와는 완전히 다른 문제였습니다.

기존에는 SQL 구문들을 단순히 정규표현식으로 우회하면 되는 것이었지만 이 문제는 SQL 구문이 학습되어있는 인공지능 모듈을 우회하여 FLAG를 획득해야 했습니다. (SQL 구문이 학습되어있는 인공지능 모듈이라는 말은 정확하지 않습니다, 문제를 풀어보면서 추측으로 나온 말입니다.)

대회 기간이 1월 23일까지 였지만 결국 이 문제에서 엄청난 삽질을 하고, 문제를 풀지 못하였습니다.

해당 문제에 대한 더 자세한 정보는 https://realworldctf.com/about에 있는 REALWORLD 공식 DISCORD #Writeups 채널을 참고해주시기 바랍니다.

두 번째 사건

위에서 말한 Hack into Skynet 문제를 풀어보면서 문제가 안 풀릴 때 DISCORD 채널에 들어가서 질문을 하려고 하였지만 쉽게 질문을 할 수 없었습니다.

REALWORLD CTF DISCORD에서는 모든 대화를 영어로 해야 했습니다, 저는 어렸을 때부터 영어 공부를 제대로 하지 않았기 때문에 소통에 있어서 엄청난 제약을 받았습니다.

결국 DISCORD에서 오가는 모든 대화를 구글 번역기를 통해서 번역한 후 알아들어야 하였고 질문과 같은 내용도 모두 번역해서 질문을 하였습니다.

이것으로 인해서 영어에 관련된 공부 필요성을 간절히 느끼게 되었던 것 같습니다.

CTF의 마무리

1월 23일이 되고 CTF가 종료되던 때, 저는 결국 1문제를 풀고 947팀 중 761등으로 마무리하게 되었습니다.

처음에 예상한 결과보다는 좋게 나와서 기분은 좋았지만 한편으로는 공부가 아직 많이 부족하다는 것을 느끼게 된 좋은 계기였던 것 같습니다.

대회가 끝나고 REALWORLD CTF 디스코드에서는 엄청난 양의 writeup이 올라오게 되었습니다.

저는 이러한 writeup을 보고 한 번 더 공부를 하게 되었습니다.

특히 Hack into Skynet 문제를 풀면서 여러 삽질을 한 것이 writeup을 보자 한 번에 정리되었습니다.

삽질을 좋지 않은 것이라고 생각했었지만 삽질도 언젠가는 도움이 된다는 것도 알게 되었습니다.

또한 CTF에 나오는 문제들은 모두 최신 트렌드를 기반하여 문제를 출제하고 확실히 워게임과 문제의 난이도가 차이가 많이 났습니다, 사람들이 왜 CTF를 나가면 실력이는다는 것인지 이해할 수 있었던 좋은 기회였습니다.

아직 해킹을 공부한 지 2개월이 안되었지만 이렇게 한번 나간 CTF에서 많은 느낌을 얻고 공부를 계속하면서 앞으로 나오는 CTF를 계속 출전하고 경험을 많이 쌓아야겠다는 생각이 들게 된 계기가 되어서 제 개인적으로 만족한 CTF가 되었습니다.

반응형
LIST