안 쓰던 블로그

교내 알고리즘 대회 & 교내 ctf 대회 참가 후기 본문

CTF/Write up

교내 알고리즘 대회 & 교내 ctf 대회 참가 후기

proqk 2019. 11. 29. 23:27
반응형

일단 교내 ctf

 

해킹은 어깨 넘어 본 거 밖에 없는데 무작정 신청해서 갔다왔다

네트워크/악성코드/웹/포너블/포렌식 문제가 나왔고 솔직히 네트워크는 자신 있었음

 

실제로 문제 풀기 시작 했을 때 네트워크 10분만에 4문젠가 다 풀어버리고 네트워크는 전부 첫 정답 먹었더라 뿌듯하다

진짜 네트워크 너무 쉬웠음 어려운 거 나올 줄 알았는데 텔넷이랑.. 뭐 암튼 쉬운 거였다 너무 쉬워서 기억도 안 남

 

네트워크 하러 왔는데 다 풀어버려서 포렌식을 봤는데

벼락치기로 풀어봤던 이미지 관련 나와서 쓱싹 해버림

이미지 헥사값 안에 이미지가 또 숨겨져 있는 문제 하나

복잡해 보이지만 결국 파일 시그니처 복구 하나

하나는 뭐였지.. 아무튼 쉬운 거

 

악성코드는 말만 악성코드고 대부분 리버싱이었음

리버싱은 주변 해킹하는 친구들한테 어깨 넘어 본 건 있어 가지고

올리디버거랑 아이다로 디버깅 하면서 2문제 풀었고

2문제는 배점도 높고 어려워서 하나 건들다 패스했는데 결국 시간 부족해서 못 풀었다

나중에 보니까 하나는 거의 정답에 접근했었더라.. 헤매고 있는 줄 알았는데 잘 가고 있었다 좀만 더 잡을걸 아쉽다

로컬 포트로 소켓 연결해서 데이터 보내는 실행파일이었는데 분기점 하나 넘기고 포트도 다 열고 방화벽 열어줬는데도 데이터가 안 와서 뭔가 했는데 나중에 보니까 아래 무조건 빠지는 분기점이 하나 더 있었음ㅋㅋ 겉으로 변화를 보여주지는 않지만..

다른 하나는 복호화 문제였는데 좀 보다 보니까 이거 코드 짜서 넣어야 할 것 같은데

어깨 넘어 배운 지식으로는 거기까진 역부족해서 넘김

 

포너블은 해본 적도 없는데 네트워크/악성코드/포렌식에 남은/내가 풀 수 있는 문제가 없음

그래서 그 자리에서 포너블.kr 풀이 검색해서 1번부터 문제풀이 읽고 아 포너블은 어떤 식으로 푸는 거구나 대충 감 잡은 다음에

바로 문제 봤는데 문제가 풀리더라... 처음 보는 사람도 느낄 정도로 문제가 좀 쉽긴 했다

아무튼 뭔가 풀다보니까 더 감이 잡혀 가지고 결국 포너블 5문제 중 4문제 풀고 마지막 문제 풀다가 시간 종료

포너블은 대충 해결 방법만 적자면

환경변수 폴더에 있는 문자열을 직접 치지 않고 실행해야 되는데 명령어 길이가 너무 길면 안 돼서 와일드카드로 처리했던

shellshock취약점으로 터뜨리는 거 이건 영재원에서 들었던 기억이 스치면서 떠오름

하나는 문제는 복잡하지만 핵심은 결국 int 오버플로우

하나는 exe뜯어서 string 찾는 거

 

웹 쪽은 팀원 둘이서 했는데 나중에 보니까 못 푼 3문제가 너무 아쉽더라

발상을 좀만 바꿨으면 그것도 전부 풀 수 있었는데.. 내가 웹 문제도 좀 보고 갈 걸 후회했음

나머지는 쉽거나 그럭저럭인데 진짜 아무도 못 푼 문제 상상도 못한 해결방법

그냥 get out of here 달랑 하나 있고 뭐 아무 것도 없음 어쩌라는건가 했음

근데 2번이 오버플로우 하는 문제였단 말임 2번에서 오버플로우 취약점으로 루트 얻어서 5번에서 루트 권한으로 쓱쓱하면 풀렸음ㅋㅋㅋ 다른 문제에서 권한 얻고 풀어야 하는 건 상상도 못했음

 

근데 아무래도 여러 분야를 내가 혼자 맡다 보니까 푼 시간이 남들보다 늦은 것 때문에 점수가 많이 깎여서 거의 다 풀었는데도 등수는 아깝게 장려상.. 그래도 어깨 넘어 보기만 한 놈이 수상은 했네

솔직히 팀원들이 더 풀어줬으면 등수 더 올라갈 수 있다고 생각 안 한 건 아닌데 상황이 어쩔 수 없었으니까.. 그리고 그것보다는 내가 충분히 풀 수 있는 문제들이었는데 더 못 풀었다는 점에서 더 화가 났다

진짜 전체적으로 문제가 너무 쉬워서.. 쉬운데 허무하게 못 푼 문제가 마음에 자꾸 걸림

그 많은 사람 중에 1학년은 1명이었지만 1등한 사람들은 2학년이었으니까 겨우 1년 차이고, 1년 차이지만 나는 엄밀히하면 4년째니까 이것밖에 못하나 자괴감도 들고.. 동기부여 팍 온다

 

아무튼 ctf 문제 풀고 플래그 찾는 거 알고리즘과 다른 의미로 게임 같아서 되게 재밌었다

특히 포너블 문제 처음 풀어보는데 혹시 여기에 재능 있나 생각도 좀 했다ㅋㅋ 문제가 쉬웠던 탓도 있는 듯 더 풀어보고 싶음

 

 

알고리즘 대회도 썩 만족스럽지 못한데

예선은 ㄹㅇ너무 쉬워서 1 2번은 보자마자 바로 코드 써서 15분만에 끝났고

남은 3번 하나가 딱 봐도 dp길래 dp로 짰더니 시간에서 걸리는데 메모이제이션을 할 만한 곳이 없어

그 때 알았다 이거 dp문제가 아니구나..

마음 다시 잡고 코드 다 날리고 천천히 생각해 보니까 for문 하나로 도는 방법이 생각났음

lower_bound로 범위 찾고 최대 길이 갱신하는 식으로 했더니 스무스하게 통과

예선 3등으로 본선 진출

스타트가 좋아서 기분이 좋았음

 

본선은 문제가 꽤 어렵게 나옴

1번은 double형 함정이 하나 있었지만 점수 주는 문제

2번은 vector<pair<int, int>>오랜만에 꺼냈다ㅋㅋ 페어로 인덱스 미리 넣어두고 first값으로 내림차순 정렬, 그 배열로 슥슥 계산하고 second값으로 다시 원래 순서로 정렬하면 시간 안에 돌아감

사실 어떻게 쓰는지 기억이 잘 안 나서 코드 오류를 내가지고 시간 약간 버렸다 코딩 더 해야겠다..

 

3번 근데 완전 복병 결국 부분 점수만 받음

3번이 https://www.acmicpc.net/problem/1992 이 문제랑 거의 유사한 쿼드트리 문제였음

사실 저 문제 푼 기억이 남 코드도 어떻게 했는지 기억이 난단 말이야

그래서 그 때처럼 재귀 돌리면서 트리 나눌 때마다 재귀 4개씩 보내고 그런 식으로 짜려고 했는데

저건 이미지 형태로 입력을 줬고 본선 문제는 트리 형태로 입력을 줬음

근데 전에 내가 풀었던 풀이에서 사고가 고정이 되어 버리니까 트리 형태를 자꾸 트리 구조의 이미지처럼 다루려고 별 괴상한 코드를 짜댔다 결국 풀이 시간 부족으로 부분 점수만 얻음

끝나고 1등한 사람이 아는 사람이라 붙잡고 풀이 들었더니 그 사람은 트리라고 생각 안하고 그냥 쭉 이어진 bool형 배열이라고 시작했더라..

문제를 많이 풀어본 건 좋은데 그 풀이에 내가 갇혀서 발상을 바꾸지 못했음 아쉽다..

동점인데 시간 차이로 우수와 장려가 갈렸고 여기도 장려상

 

 

아 맨날 아쉽기만 함 열심히 해 놓고 항상 중요할 때 3% 부족한 느낌이야

인맥이 중요하다는 생각도 했음

잘 하는 사람이 주변에 있어야 계속 자극도 받고 도움도 주고받고

그리고 이런 팀 대회가 있을 때 같이 팀 해줄 믿을만한 사람들이 있으면 좋겠다고 느꼈음

아는 잘 하는 친구나 선배가 많이 없어가지고 결국 마지막까지 같이 할 팀원을 못 구해서 급하게 모르는 사람들이랑 팀짜고.. 같이 공부할 사람이 얼마나 중요한지 잘 몰랐다

여러모로 부족하지만 어쨌든 입상 했으니 다행임 동기부여도 빡 받았고 더 공부해야지 내년에는 총장상이다

반응형

'CTF > Write up' 카테고리의 다른 글

SWING 내부ctf대회 writeup  (2) 2020.08.25
xcz.kr 14번 문제풀이 (암호)  (0) 2019.11.28
xcz.kr 2번/3번 문제풀이  (0) 2019.11.28
xcz.kr 1번 문제풀이  (0) 2019.11.26
xcz.kr 28번 푸는 중  (0) 2019.11.26
Comments