전체 글 118

2023 cce 청소년부 3등(2023 cyber conflict exercise junior 3rd)

2023 사이버 공격 방어 대회에서 극적으로 3등을 해냈다. 이번 대회는 웹 문제 빼고 풀만한 게 없어서 리버싱만 했던 나는 포너블 하던 친구랑 바이너리 패치 문제를 같이 풀었다. 바이너리 패치 문제의 코드는 생각보다 간단해서 분석하는데 오래 걸리지 않았고 그 분석을 토대로 친구가 취약점을 찾아 패치하는 식으로 진행했다. 총 바이너리 패치 2개, 웹 2문제를 풀어 3등을 따냈고, 내년에는 지금 3학년들이 일반부로 떠나게 되니 2등이나 잘되면 1등을 따낼 수 있을 것 같다.

reversing 2023.07.13

파이썬 쿡북 8 - 함수

함수도 반복문처럼 똑같은 기능을 하는 코드를 여러번 쓰지 않기 위해 있는 키워드이다. 또한, 그런 기능 외에도 코드의 가독성이 올라가고, 코드를 수정할 때, 코드에 특정 기능을 넣을 때 더 쉽게 수정할 수 있다. 수학의 함수처럼 매개변수를 전달해 그에 따른 결과를 반환할 수도 있다. 함수는 다음과 같이 선언한다. def [함수 이름](매개 변수 1, 매개 변수 2, ...) : (실행할 코드) return (반환값) 이렇게 함수를 선언해놓으면 [함수이름](인자1, 인자2, ...) 이런 식으로 함수를 호출할 수 있다. 함수에 있는 return 키워드는 어떤 값을 반환할 지 지정해주는 키워드이며, return 키워드 이후 즉시 함수가 종료된다. 반환값은 있어도 되고, 없어도 되며, 없을 땐 반환값 없이 그..

카테고리 없음 2023.06.29

파이썬 쿡북 7 - 조건문

프로그램을 만들면서 사용자의 입력에 따라, 또는 다른 변수의 값에 따라 다른 코드를 실행하고 싶을 때가 있다. 그럴 때 특정 조건이 참일 때, 거짓일 때 다른 코드를 수행하게 하는 조건문을 사용할 수 있다. if ~ elif ~ else if ~ elif ~ else 구문은 다음과 같이 사용할 수 있다. if (조건 1) : (실행할 코드) elif (조건 2) : (실행할 코드) elif (조건 3) : (실행할 코드) ... elif (조건 n-1) : (실행할 코드) else : (실행할 코드) 조건 1부터 조건 n-1까지 순차적으로 탐색하며 처음으로 참이 나온 조건의 하위에 있는 코드를 실행하고 조건문을 나온다. 만일 참인 조건이 한 개도 없으면 else의 하위에 있는 코드를 실행하고 조건문을 나..

programming 2023.06.29

파이썬 쿡북 6 - 반복문

반복문을 말그대로 특정 코드를 반복해서 실행하고 싶을 때 쓴다. while 반복문 while (조건) : (실행할 코드) 조건이 참일 동안 실행할 코드를 반복해서 실행한다. for 반복문 for (변수) in (반복할 자료) : (실행할 코드) 반복할 자료에 리스트, 딕셔너리 같은 자료형을 넣어주면 그 안에 있는 요소들을 하나씩 순회하며 변수에 그 값을 순차적으로 집어넣고, 실행할 코드를 실행한다. for문의 반복할 자료엔 range(1, 100) 같은 함수를 넣어주기도 하는데, 이는 특정 숫자들을 원소로 가지는 리스트를 만들어주는 함수이다. for문은 enumerate를 이용해 요소와 인덱스를 한 번에 가져올 수 있다.

programming 2023.06.29

파이썬 쿡북 5 - 다양한 자료구조

딕셔너리 딕셔너리는 C++의 map과 비슷한 자료구조이다. 인덱스로 접근하는 일반 배열과 다르게 다른 자료로 특정 원소에 접근할 수 있다. C++ map은 hash 함수를 이용해 인덱스로 사용할 자료를 숫자로 변형하고 그걸 key로 사용해 red-black tree 구조로 되어있는 자료구조에 접근한다. 파이썬은 다른지 잘 모르겠다. dict[(인덱스로 사용할 자료)] -> 자료 접근 가능 선언할 땐 콜론을 기준으로 왼쪽에 key, 오른쪽에 value를 적은 자료를 쉼표로 구분해 나열하고, 중괄호로 감싸 선언할 수 있다. key는 상수형 자료만 저장할 수 있다. 튜플 튜플은 파이썬 리스트와 비슷하지만, 자료를 수정하는 게 불가능한 자료이다. 따라서 각 원소를 읽을 수만 있고, 자료를 수정하거나 변형을 가하..

programming 2023.06.08

파이썬 쿡북 4 - 리스트

리스트 리스트 : C언어의 배열과 비슷한 개념 -> 연속적인 메모리 공간 하지만, C언어와 다르게 파이썬 리스트 요소는 하나하나가 객체이기 때문에 파이썬의 모든 자료형을 저장할 수 있다. 심지어 리스트도 객체이기 때문에 리스트 안에 리스트를 요소로 주는 것도 가능하다. 선언 방법 : 대괄호로 감싸고, 요소를 콤마(,)로 구분해 넣어준다. 또는 값의 집합과 관련된 자료형을 list()함수로 줘 리스트로 만들 수 있다. 리스트 연산자 (리스트) * (정수) : 인자로 준 리스트를 정수번 반복해 만든 리스트를 리턴한다. (리스트) + (리스트) : 첫번째 리스트 뒤에 두번째 리스트를 이어붙인다. 리스트 슬라이싱 문자열과 같이 [(정수)], [(정수):(정수)], [(정수):(정수):(정수)]의 슬라이싱 기법을..

programming 2023.05.09

파이썬 쿡북 3 - 문자열

문자열 : 문자의 나열 파이썬 문자열 표현법 = "(문자열)", '(문자열)', {"""(문자열)""", '''(문자열)'''} => 여러줄 가능 이스케이프 시퀀스(특수문자) 백슬래쉬(/) : \\ 개행문자(enter) : \n 따옴표 : \", \' 탭 : \t 문자열 오퍼레이터 (문자열) + (문자열) : 문자열 덧붙이기 (문자열) * (정수) : 같은 문자열 반복해서 덧붙이기 (문자열)[(정수):(정수):(정수)] : 문자열 인덱싱(리스트와 동일하게 사용) 문자열 포매팅 (문자열 - 포맷 문자 포함)%(인자1, ...) 포맷 문자 종류 : %s : 문자열 %d : 정수 %f : 실수 %c : 문자 %x : 16진수 정수 %% : % 출력 ● 포매팅 시 정렬이 필요하면 %(정수)(포맷 코드)를 이용해..

programming 2023.04.20

파이썬 쿡북 2 - 연산자와 입력함수

파이썬 연산자 1. 일반 연산자 (숫자) + (숫자) = 숫자 덧셈 (숫자) - (숫자) = 숫자 뺄셈 (숫자) * (숫자) = 숫자 곱셈 (숫자) / (숫자) = 나눗셈(실수 반환) (숫자) // (숫자) = 나눗셈의 몫 (정수) % (정수) = 나눗셈의 나머지 (숫자) ** (정수) = 제곱 (정수) ^ (정수) = 비트 xor 연산자 (정수) & (정수) = 비트 and 연산자 (정수) | (정수) = 비트 or 연산자 !(정수) = 비트 not 연산자 ~(정수) = 비트 반전 연산자 2. 문자열 연산자 (문자열) + (문자열) = 문자열 덧붙이기 (문자열) * (정수) = 자기 자신 문자열 n번 덧붙이기 3. 비교 연산자 (a) == (b) = a, b가 같으면 1, 다르면 0 (a) != (b)..

programming 2023.04.18