문제 풀이
-
Leetcode 108. Convert Sorted Array to Binary Search Tree문제 풀이/자료구조와 알고리즘(leetcode) 2020. 12. 27. 16:14
leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ Convert Sorted Array to Binary Search Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제를 풀기 위한 생각의 흐름 Inorder traversal을 하면 결국 sorted array가 되잖아? 만약 height balanced BST가 아니라면 그냥 왼쪽에서부터 쭉 만들어주면 되는데. 그럴리가 없음. 좀..
-
2020 사이버 공격 방어 대회(CCE) 예선 참가 후기 & 간단한 writeup문제 풀이 2020. 10. 3. 18:08
www.cstec.kr/cce2020/ 2020 사이버 공격방어 대회 2020 사이버공격방어대회 운영본부, Tel: 070-7688-3129, E-mail: cce@nsr.re.kr © Copyright 2020 사이버 공격방어대회 All Rights Reserved www.cstec.kr 병특을 시작한 지 벌써 2년이라는 시간이 흘렀다. 그러면서 대전에 있는 학교에도 안가게 되고 동아리 친구들과도 연락이 뜸해지고 그런 상태였다. 어쨌든 최근에는 갑자기 ctf를 다시 참여하고 싶다는 생각이 들던 차였는데, 마침 동아리 톡에서 위의 대회 나가면 좋을 거 같은데 사람이 부족하다고 하는 것이었다. 나는 동아리 기준에서 보면 이미 동아리원도 아니고 늙고 병든 한 사람에 불과했지만 염치 불구하고 한번 나가보기로 ..
-
[2020 Google CTF] Reversing:Android writeup(풀이)문제 풀이/2020 Google CTF 2020. 8. 25. 14:48
오랜만에 온라인 CTF에 참가하게 되었다. 마지막으로 참가를 2018년에 했으니까.. 안한지 2년은 넘은 것 같다. 어쨌든 문제를 풀게 되었으니 간단하게라도 writeup을 남겨보고자 한다. 첨부파일은 문제 Attachment 이다. 문제를 읽어보면 딱봐도 안드로이드 apk 리버싱처럼 보인다. 또 attachment 압축을 풀면 reverse.apk 가 나온다. 0. 앱 실행 - 내 폰에 직접 깔아서 실행을 해보았다. 아. Key를 입력하고 Check를 누르면? 저 ?(물음표)가 X표시로 바뀐다. 아앗 (보통 폰에 apk를 설치하는 것은 위험하지만.. 구글을 믿고 다운 받음. + 위험한 ransomware 같은거면 문제 description에 아마 써져있음) 1. APK Decompile - https:..
-
국가암호공모전 2017 (II-A)분야 5번 문제문제 풀이/2017 국가암호공모전 2020. 3. 10. 22:01
Oracle Padding Attack(OPA)는 해킹, 보안을 공부하는 사람이라면 대부분 알고 있을 것입니다. 너무 유명해서 이 공격에 대한 한국어 기술 문서도 많이 만들어졌던 것으로 기억하는데요, 이 공격 자체가 유명해졌던 시기가 대략 2014-2015년으로 기억하는데(틀릴 수 있습니다).. 너무 오래돼서 최근에는 아마 ctf나 해킹 대회에서는 잘 출제가 되지 않겠지만 해킹에 대한 일종의 기본기를 쌓을 수 있는 공격이라고 생각합니다. 게다가 이 문제가 나온게 2017년 이었으니 말이죠...크흠 기본적으로 공격자가 보내는 요청에 따라서 서버가 다른 응답을 보낸다는 개념 + 암호학에서 자주 쓰이는 패딩의 개념 등을 이해할 수 있어서 참 좋은 문제였던 것 같습니다. 이제 아래에 대회때 제출했던 답안을 적어..
-
국가암호공모전 2017 (II-A)분야 6번 문제 풀이문제 풀이/2017 국가암호공모전 2020. 3. 10. 21:28
2017년 국가암호공모전은 성적이 딱히 좋지는 않았지만, 인터넷에 풀이를 찾아봐도 거의 없어서 작성하고자 하였습니다. 6번 문제는 게임 클라이언트의 불법적 조작과 관련된 문제입니다. 게임 클라이언트의 무결성을 검증하기 위해 게임을 실행할 때마다 해쉬값을 계산해서 서버로 보내주고, 이를 통해 클라 조작 여부를 판별하는 시나리오입니다. 먼가 nProtect...메x플스토리...이런 키워드가 생각나면서 추억이 새록새록 떠오르네요..... 실제로 해당 프로그램들이 이런 방식을(엄청 단순화되었겠지만) 사용한다는 생각을 하니 가슴이 뛰네요. 흠..? 어쨌든 이 문제는 아주 간단한 exe 파일 reversing을 하는 문제인데, 아래에 대회때 적은 답안을 작성해보고자 합니다. 궁금한 것이 있으면 언제든 댓글로 말씀주..
-
국가암호공모전 2018 (II-A)분야 3번 문제 풀이문제 풀이/2018 국가암호공모전 2020. 3. 10. 19:48
이 문제를 보자마자 바로 Arduino uno rev3를 사러 갔던 기억이 있다.. 크흠 문제의 가장 핵심은? 아래와 같다! 완전 심플한데, 문제는 아두이노에서 기본적으로 제공하는 변수의 최대 크기가 64bit double 또는 long long 형이다. 48비트 변수 두개를 곱하면 최대 크기가 96비트이므로 일반적으로 곱 연산을 하면 32비트가 흘러넘쳐버린다. 처음에는 multiply large numbers represented as Strings처럼 변수를 string으로 바꾸어 계산하는 문제인가? 하고 잘못 접근을 했었다. 그렇게 가능하기는 한데 아두이노 내부의 string 관련 operation(atoi) 등이 시간을 엄청 잡아먹어서 이렇게 풀면 안된다는 것을 직감하고 말았다. 다시 문제를 들여..
-
국가암호공모전 2018 (II-A)분야 8번 문제 풀이문제 풀이/2018 국가암호공모전 2020. 3. 6. 12:19
주의: 아래 풀이에 해당하는 답은 틀렸을 수도 있습니다. 공식적으로 확인을 하기가 힘들어 풀이과정만 작성해보았습니다. 아 문제는 여기서 다운 받을 수 있어요! 이제 이 문제를 확인을 해보면 간단히 "runtime 스마트 컨트랙트"의 bytecode를 던져준 문제입니다. Solidity 언어로 작성되었고, 힌트로 verifyIt 이라는 함수를 포함한다는 정보를 제공했네요. 이 함수의 input과 output 정보가 있는데, 이 정보가 실제 문제를 풀 때 꽤 도움이 되었던 것으로 기억을 합니다. 어쨌든 저는 이 문제를 보기전에 스마트 컨트랙트나 solidity 언어에 대한 이해가 전혀 없었기 때문에 막막했는데, 해당 bytecode를 hex decode 해보니까 "Ethereum Signed Message:..
-
국가암호공모전 2018 (II-A)분야 4번 문제문제 풀이/2018 국가암호공모전 2020. 2. 26. 19:05
현재 작성중인 글입니다. 좀 걸릴 것 같아서, 일단 대회때 제출했던 답안을 올렸습니다. 궁금한게 있으시면 댓글 부탁드립니다. 1. 마지막 라운드 키의 첫 번째 바이트 rk0(10)의 값 : 54 2. 1.의 풀이과정 캐시 부채널 공격을 통하여 라운드 키를 복구할 수 있다. 공격 대상자 V는 AES-128 암호연산을 수행하는 소프트웨어이며, 공격자 A는 암호연산이 종료된 후 캐시 부채널을 통해 V의 메모리 엑세스 여부를 파악할 수 있다. 문제에서 주어진 제한조건은, A는 단 하나의 메모리 블록(64바이트)에 대해서만 정보를 얻을 수 있다는 것이다. 메모리 블록에 대한 정보를 바탕으로 AES-128 암호연산 중 마지막 라운드 키의 첫 번째 바이트 rk0(10)의 값을 구하는 것이 목표이다. 문제를 풀기 위한..