Avatar
Interest: Web Exploitation.
Activities: DreamHack, Baekjoon
I occasionally blogs about web security, tricks, and development.

SW Development Security Contest

Period

주관: KISA
예선대회: 21.8.11.(수)
온라인 해커톤 개최(본선 대회) : 21.8.26.(목) ~ 27(금), 무박2일

Technique Stack

Framework: Spring Boot, REST API, MyBatis
Front-End: HTML, CSS, JQuery, AJAX
Back-End: JSP, Java, XML
R-DBMS: MySQL

Demonstration Video

Youtube

Details

Web attack technique

Source code

Contribution

  • JQuery, Ajax로 JSON 데이터 파싱
  • MyBatis를 사용하여 XML Mapper로 SQL 쿼리 작성
  • SQL Injection, XSS, CSRF 등 공격에 대응하는 보안 기법 적용
  • Hash password, Error Handling, Logging 등 보안 기법 적용
  • Ubuntu 서버에서 Web 서버 셋팅, Web Release 작업

Review

예선 대회 👅

20문제가 주어지는데, 3시간 동안 소스코드에 취약점을 찾아 설명하거나 취약한 코드를 올바르게 수정하여 보안하는 방식으로 진행되었다. 취약한 코드는 총 43가지 중에서 등장하게 되며, 흔히 등장하는 SQL Injection, Command Injection, XSS 등의 보안 기법들에 대해 다룬다.

대회를 진행하면서 큰 어려움은 없었지만, 마지막 문제 답을 적는 과정에서 뒤로 가기가 되어 15분 동안 적은 답이 싹 사라진 불상사가 발생하긴 했다.. 그래도, 문제는 다 풀어서 잘 마무리 할 수 있었다.

본선 대회

예선 대회를 마치고, 일주일 후 본선 진출 팀이 발표나게 되는데 열심히 한 덕에 본선에 진출할 수 있었다. 본선 대회는 주제가 주어지고 해당 기간 동안 기획을 하여 해당 날짜에 27시간 동안 해커톤을 진행하는 방식이었다.

그래서, 어떤 주제로 할지 고민하던 중 외부 학생들과 교류할 수 있는 스터디 웹 사이트가 있으면 좋을 것 같아 만들게 되었다. 평소 Spring Boot를 잘 쓰지 않았기에, 대회 전까지는 Spring Boot를 사용법을 익히고 Controller, Model, View를 나누어 작업하는 연습을 계속했었다.

그렇게 대회 당일이 다가 왔을 쯤, 기획을 모두 마치고 이제 코딩을 하는 시간이 왔다. 처음엔 시간 안에 생각한대로 구현이 가능할까 했었지만, 든든한 사람들과 함께 했기에 많은 기능들을 구현하고, 디자인도 매우 깔끔하고 예쁘게 잘 만들 수 있었다.

정말 쉴틈없이 27시간 중 25시간을 불태운 것 같다… 대회가 끝나고. 며칠 뒤, 발표를 잘 마무리하고 정말 뿌듯했었다. 심사위원분께서도 기능을 다양하게 구현했다고 하셔서, 상을 받을 것이라 예상하고 있었다. 하지만, 아쉽게도 .. 상을 받지는 못해서 아쉬움이 컸었다.

그래도, 대회를 준비하고 진행하면서 평소 안써본 것들을 배우기도하고, 평소 웹 해킹만 공부하다가 웹 보안에 대해 진지하게 공부를 할 수 있었기에 정말 좋은 경험이었다.