[GBC] 겨울 방학 동아리 스터디

👻 gbc의 끝(프로젝트 빼고)

2020.12.21(월) ~ 2021.01.31(일)까지 gbc 6주간 스터디가 끝이 났다.
물론, 다음주부턴 프로젝트를 시작하긴 하지만, 일단은 스터디가 끝이 난 것에 기분이 좋다.
그래서, 6주간의 gbc 스터디에 대한 느낀점을 적어보려 한다.

우선, gbc는 한동대학교의 GHOST 동아리에서 신입기수들을 위해 진행하는 스터디이다.
gbc 소개 전에, GHOST를 잠시 언급해보자면, Global Handong Oriented Security Team이라고 해서, 한동의 유일한 정보 보안 동아리이다.
동아리에서 신입기수를 받게 되면, gbc라는 스터디를 의무적으로 참가하고 pass해야 정회원으로 승격된다.
여기서, gbc는 Ghost Based Camp로 알고 있다.사실 정확히 모름..
gbc는 각 주차별로 매니저분들이 계시고, 매니저분들의 지도 하에 공부를 한다고 보면 된다.


🤔 gbc 주차별 배운점 혹은 느낀점

1주차: 2020.12.21(월) ~ 2020.12.27(일)

1주차에는 한찬솔 매니저님께서 강의해주신 Programmer Base를 배웠다.
Stack Overflow에 대해서도 알게 되었고,
Docker로 가상화를 통해 나만의 Docker image를 만들어도 보았고,
git, github 사용법을 익혔다.
이 부분에서, 지금의 github blog도 알게 되었다.
지금 내가 작업하는 markdown이라는 것에 대해서도 공부했고, 지금 역시 잘 쓰고 있다.
CLI(Command Line Interface)로 작업을 할 때, tmux를 통해 좀 더 편한 환경을 만들어 줄 수 있게 되었고, auto suggestion, CLI upgrade, alias라는 편리한 기능도 공부했다.
1주차에는 개발자가 알면 편리한 환경을 만들거나 개발자가 알아야 하는 것들에 대해 배웠다.
솔직히 말하자면, 1주차에 배웠던 것들을 제일 많이 사용하고 있는 것 같다.

2주차: 2020.12.28(월) ~ 2021.01.03(일)

2주차는 채영민 매니저님께서 강의해주신 Algorithm을 공부했다.
각종 자료구조나 알고리즘에 대해 알려주셨고, 매일 백준사이트에서 문제를 풀며, 문제해결능력을 키웠다.
벽 부수기 문제가 제일 인상깊었다.(왜냐면 제일 안풀렸거든)
그리고 내가 2020-01학기에 Algorithm Analysis 수업을 들었는데, 당시에는 이해 못했던 DFS와 BFS를 이 알고리즘 주차에 이해하게 되었다.
다양한 알고리즘들을 많이 배웠고, 영민님은 엄청난 고수라는 것을… 알게되었다.
사실 이 때, 졸업하신 GHOST 선배님이 오셔서 신입기수들에게 치킨을 사주셨는데, 이 때도 기억에 남는다.
다시 한 번 잘먹었습니당 ㅎㅎ
아맞다 백준에 랭킹 시스템이 있다는 것도 처음알았다..

3주차: 2021.01.04(월) ~ 2021.01.10(일)
4주차: 2021.01.11(월) ~ 2021.01.17(일)

3주차와 4주차는 한찬솔 매니저님께서 보안을 2주간 가르쳐주셨기에 2주를 묶어서 정리하겠다.
보안동아리기 때문에, 보안을 2주간 하는 것 같았고, 2주 동안은 영화에서 보던 해커의 모습이 실현되는 순간이었다.
이 주차에서는 Assembly Language를 배웠고, gdb의 사용법을 배웠으며 리버싱을 해보았다.
리버싱을 통해 crackme라는 파일을 해킹해보고, 여러 분기를 조작해보고 취약점들을 찾아내서 공격(?)해보았다.
그 중 기억에 제일 남는 것은 BOF(Buffer OverFlow)버퍼의 길이를 조작하고 함수의 return address를 조작하여 쉘 권한을 탈취하는 과정이었다.

BOF: 버퍼 오버플로우는 프로세스가 데이터를 버퍼에 저장할 때, 프로그래머가 지정한 곳 바깥에 저장하는 것을 의미한다.
벗어난 데이터는 인접 메모리를 덮어쓰게되며, 이때 다른 데이터가 포함될 수 있다. 이는 변수와 프로그램 흐름 제어 데이터도 포함된다.  

출처 : 위키백과(BOF)

BOF 관련 문제를 제일 많이 다뤘고(내 생각엔) 제일 기억에 남아 그 정의를 잊지 말고자 기록하였다.
분기를 어떻게 조작하고 취약점을 어떻게 파고드느냐에 따라 프로그램이 내가 원하는 방향으로 가지 않을 수 있다는 점을 배웠고, 후에 내가 만들 프로그램도 충분히 취약점이 발견될 수 있기 때문에, 신경써서 프로그램을 짜야겠다고 생각하였다.

5주차: 2021.01.18(월) ~ 2021.01.24(일)

5주차는 서준표 매니저님께서 네트워크에 대한 부분들을 가르쳐주셨다.
이미 2020-02학기에 ‘컴퓨터 네트워크’ 수업을 들어서 이해가 수월했다.
시스코 네트워킹.Vol1, .Vol2, 열혈 TCP/IP 소켓 프로그래밍이라는 책으로 공부를 하였다.
기억에 남는 부분은 TCP로 다중 클라이언트끼리 채팅하는 socket programming 실습이었다.
이 부분에서, 운영체제의 mutex도 등장하고, thread도 등장하여 운영체제와 네트워크를 같이 복습할 수 있었던 좋은 시간이었다.

6주차: 2021.01.25(월) ~ 2021.01.31(일)

6주차는 최하영 매니저님께서 Machine Learning에 대해 전반적인 부분들을 알려주셨다.
처음엔 너무 어려웠던, 감조차 못잡았던 머신러닝에 대해 3일차부터 조금씩 이해했고, 주로 용어들에 대해 또 실제로 쓰이는 기술들에 대해 이론적으로 알아보는 시간을 가졌다.
인간의 신경망을 모방해서 컴퓨터를 학습시키고, 평소 관심있었던 Computer Vision 분야에서도 많이 쓰이는 것을 보고, 흥미를 많이 느꼈다.
다만, 아무래도 머신러닝의 이해를 5일이라는 짧은 시간 내에는 할 수 없었다.
어떤 느낌인지 알았으니, 다음 학기쯤에 수업을 통해 더 알아보는 시간을 가지고자 다짐하며 마지막 주차까지 끝이 났다.


gbc는 상당히 유익한 시간이었고, 이제는 프로젝트를 준비 해야한다.
Flutter를 이용하여 간단한 통신앱을 구상중이다.

Tags:

Categories:

Updated:

Leave a comment