'2017/11/01'에 해당되는 글 1건

  1. 2017.11.01 2017 Whitehat Contest - Winner of Life

유명한 대회의 2회차 출제이기도 하고, codegate와 같은 국제적인 대회가 아니라는 점을 토대로 이번엔 저번 출제보다 한결 편한 마음으로 출제 할수 있었습니다. 하나 고민되는건 문제를 만들때마다 아이디어를 어떻게 합쳐 낼 것인가, 이 아이디어를 어떻게 자연스럽게 전달 할 것인가에 대한 부분은 아직 출제 기술의 부족으로 여전히 힘든 부분이었지만, 점차 나아지리라 생각합니다.

이번 문제의 중점은 SQL injection 보다 자신에게 필요한 정보가 무엇인지 주어진 정보를 토대로 판별하는 능력이 있는가? 에 대한 물음이 더 컸다고 봅니다. 모든 문제가 그렇듯, 출제자의 의도를 파악하면 그 문제를 어떻게 접근해야 할지 길이 보입니다. 이번문제에서 왜 phpinfo를 제공했었는가, leak.tar에 들어있는 정보는 나에게 뭘 이야기 하려고 하는것인지에 대한 답을 찾았다면, 남은건 SQL injection의 필터링만 남아 있었을 뿐인, 어떻게 보면 단순한 문제였습니다.

자신이 원하는 정보를 걸러내고 획득할수 있다는 점은 웹 뿐만 아니라, 시스템, 포렌식 등에서도 중요한 요소라고 생각합니다. 또한, 팀 단위의 CTF다 보니 자신이 모르는 부분은 팀원에게 의지하는 것도 상당히 중요하다고 생각합니다. 팀을 이끄는, 흔히 말하는 캐리력 있는 포지션도 상당히 멋지다고 생각합니다. 다만, 그런 인재는 주변에 상당히 적고, 대부분은 이름이 난 사람들이죠. 그런 사람들이 없는 팀은 자기가 맡은 분야별 문제를 풀면서 모르는 것이 있으면 검색만 하다가 CTF가 끝나버리는 그런 경우도 저는 상당히 많이 겪었고, 많이 봐 왔습니다. 순수하게 한 분야의 지식만을 문제로 내는 것은 이러한 비극을 계속 되풀이하는 과정이라고 생각하였고, 출제를 할 기회가 오면 이러한 것은 꼭 막아보고 싶었습니다.

물론, codegate의 문제출제는 그런의미에서 보면 실패작이라고 생각합니다. 저희 부모님 생명연장에 큰 도움을 준 2DLIFE 문제나, 본선에 출전하신 분들은 풀어보셨을 Eagle-jump 문제 등이 그러하죠. 그런 문제를 통해서 얻을수 있는건 팀원간의 결속력이 아닌, 특정공격에 대한 더 깊은 호기심, geek한 발상, 욕 실력 정도라고 생각합니다. 순수하게 자신이 웹 분야를 잘하고 공격기법을 많이 알면 풀수 있는.. 그런 문제였습니다.

그래서 이번 문제에서는 조금 더 나아가서, 정보를 토대로 원하는 환경을 구축할수 있는가? 에 대한 질문을 던져보기로 했습니다. 웹 분야를 하고있는 여러분께서 과연 팀원과 얼마나 의사소통을 하시는지, 혹은 다른분야에 대한 관심을 가지셨는지에 대한 출제자의 설문조사 정도로 생각해 주시면 감사하겠습니다.


Write-up의 간단한 요약은 다음과 같습니다.

1. leak.tar를 통해 cron으로 돌고있는 php파일을 파악하고 mysql의 variable 세팅을 통해 /var/www/html 의 file privilege가 있다는것을 파악한다.

2. 시행착오를 통한 blind sql injection을 시도한다. (strcmp를 통한)

3. file 유출에 성공하고 이를 토대로 random generator 소스를 가져와서 환경을 구축한 후

4. 번호를 추출하여 입력


아마, 2번에 있어서 많은 시행착오가 있을것이라 생각됩니다. 본선에 낼수 없었던 이유중 하나기도 합니다.

예선에서의 많은 고통을 감내하고 본선에 진출하신분들, 축하드립니다. 본선에서 문제로 찾아뵙겟습니다.

prob1_POC.py

WinnerOfLife WriteUp.pdf


Posted by Maid:: IzayoiSakuya