유명한 대회의 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

[strpr] PHP Sandbox

2017.06.13 10:06

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

[stypr] tofukimchi

2017.06.12 21:22

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.