-출제후기-


문제를 내보는게 어떻겠냐는 처음 제의에 많이 망설였습니다.

코드게이트가 작은 대회도 아니고 제 실력으로 전세계의 짱짱한 해킹팀들을 테스트 하는 문제를 낸다는게 상당히 부담스럽고

코딩실수나 문제 설계 오류로 인해서 많은 팀들의 눈쌀을 찌푸리게 하진 않을까, 제의 해준 회사에 누가 되지는 않을까. 하고 말이죠


"팀당 한두시간 버틸 난이도로 내주세요" 라고 들으니 더더욱 부담이 컸습니다.
하지만 다른 웹문제 출제도 될테니.. 하고 아이디어를 찾기 시작하다가 평소에 생각해둔, 구현해보고 싶은것을 짜보기로 했습니다.

그게 이번 문제의 첫 단계로 지정된 oracle padding attack이었습니다.


이전에 출제됬던 codegate문제의 oracle padding attack과 크고작은 워게임의 oracle padding attack을 보면서 느낀점이

문제 유형이 하나의 블럭에 대해서만 암/복호화를 하는 유형으로 거의 고정되어 있다는걸 느꼈습니다.

이 부분에서 조금의 고민을 했죠. 왜 하나의 블럭만 암/복호화 하는지.


oracle padding attack 을 이해하기 위해서는 하나의 블럭만 암/복호화 해도 상관없다고 생각합니다만,

공격의 기본이 되는 CBC와 같은 원리에 대해서는 다소 도움이 되지 않을것이라 생각했습니다. 그래서 이것을 2개이상의 블럭이 나오도록

암호화 해보는건 어떨까? 라는게 첫 아이디어 였습니다.


하지만 세계급 대회인 만큼 하나의 아이디어로 문제를 내기엔 역부족이라 생각하였습니다. 그래서 복호화 된 평문을 기준으로 새로운

인증과정이 있으면 어떨까? 하는 생각이 났습니다

일반적인 로그인 과정을 보면 ID와 PW를 입력하듯이, 이 평문에는 그러한 정보가 있고 이 정보를 토대로 로그인을 하는 그런 문제를 만드는것이

어떨까? 하는 생각이 났습니다.


처음엔 단순한 sql injection을 넣을까? 하는 생각을 하다가 조금은 특별한 구문을 채용하기로 했습니다.

해당 구문은 특정상황에서 column name을 몰라도 해당 테이블의 정보유출이 가능한 구문으로, real world에선 거의 쓰일 일이 없지만,

여러분의 학문적인 흥미를 유발하기에 충분할 것이라 생각하고, 문제 풀이과정에 있는 도전자 분들에게는 상당히 많은 스트레스를 유발할수 있지만

문제를 풀어냈을때 쾌감과 함께 얻어가는 지식이 있을것이라 생각했습니다.


이 부분은 제가 BoB 과정에 있으면서 들은 조언중  '문제를 만들때는 항상 전달하고자 하는것이 있어야 한다.' 라는 모토와 부합한다고 생각했습니다.

그리하여, 한국시간 19시 50분 경, LC/BC 팀이 처음으로 이 문제를 풀어내고 IRC 닉네임 vos 라는 해커에게서 "정말 좋은 첼린지 였어!" 라는 말을 들었을때

출제하길 정말 잘했다 라는 생각이 들더군요. 


그 이후 몇몇팀이 풀기 시작하고 대학부에서도 한 팀이 풀어냈습니다. 물론, 질문은 대회가 끝나기 10분 전까지도 왔습니다만.. 그만큼 제 문제에 대해

많은 고민을 해 주신게 아닌가 하고 생각하니 그 동안 고생한 것에 대한 보람이 느껴졌습니다.


한편으로는 역시 padbuster와 같은 tool의 사용을 막기 위해서 조금 더 신경썼어야 했다, 문제를 좀더 어렵게 냈어야 했다 등등 마음속에서 다소의 아쉬움도 있었지만 그것들은 단순히 문제로 도전자를 괴롭히기 위한 하나의 심술에 지나지 않는다는 생각을 했습니다. 이 문제로 난 충분히 이야기 하고싶은것을 전달했고, 이에 대해 많은 분들께서 얻어가는게 있다면 이 문제, 코드게이트에서의 2D Life는 성공적인 문제라고 스스로 생각합니다.


대회도중, 대회가 끝나고도 이 문제에 대해 guessing 문제 라고 말씀하시는 분들이 있는걸 보면 아직 제 문제 출제 실력이 역시 미숙하다는것을 느낍니다. 가능한 자연스럽게 유도하는 문제가 되었어야 헀지만 그렇지 못한점, 이 후기를 통해 사과의 말씀 드리고 싶습니다.


첨부한 문서는 출제된 2D life 문제에 해당하는 제가 쓴 Write up 입니다. 어떻게 보면 제작자가 원하는 방향이라고 볼수도 있겠죠.

주변 지인에게서 받은 풀이방법들도 대부분 제가 의도한 구문들이 적혀있어서 다른 Writeup과 큰 차이는 없을수 있지만.. 



2D Life Write up_off the recode.pdf


Posted by Maid:: IzayoiSakuya

discord.py

2016.12.08 16:18

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

SQLi.py

2016.11.02 14:02

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