728x90
반응형
[리눅스마스터 1급] 2402회 합격 후기
·
정보보호병
계기와 배경지식입대하고 자대배치를 받은 후, 생각보다 남는 시간이 많아서 그 시간을 이용해 취득할만한 자격증을 알아보던 중, 고등학교 때 학교에서 단체접수만 하고 시험조차 보지 않았던 리눅스마스터 2급 자격증이 생각났다. 마침 cert반에서 근무하면서 리눅스 서버를 몇 개 다루고, 나 본인도 보안 공부를 진행하면서 WSL2와 가상머신, AWS 등 리눅스를 좀 써봤기 때문에 2급을 건너뛰고 바로 1급에 도전하게 되었다. 리눅스를 써봤다고 하더라도, 그냥 일반적으로 사용하는 수준이라 mv, cp등 기본적인 쉘 명령어와 보안공부하는데 필요한 개념(docker, 기본적인 네트워크 개념과 공격기법 등) 정도만 알고 있는 상태로 공부를 시작했다.교재는 이것저것 찾아보다, 매년 최신 버전으로 수험서를 개정해서 내주는..
[python3] 백준 5525번 - IOIOI
·
BOJ/문제
문제일단 가장 먼저 떠오르는 방법은 문자열 슬라이싱을 통해 비교하는 방법이다.n,m = [int(input()) for _ in range(2)]s = input()cnt = 0pn = 'I'for _ in range(n): pn += 'OI'for i in range(m): if s[i]=='I': if s[i:i+2*n+1]==pn: cnt += 1print(cnt)하지만 위 코드를 제출하면 첫 번째 서브테스크밖에 통과를 하지 못하고 50점을 받게 된다. python에서 리스트 l[a:b]의 문자열 슬라이싱의 시간복잡도는 $O(b-a)$ 라고 한다. 주어지는 S가 커질수록 시간이 오래 걸릴 수밖에 없다. 그럼 문자열 슬라이싱 말고 그냥 부분 부분 잘라서 비교..
[python3] 백준 31478번 - 포니 양은 놀고 싶어!
·
BOJ/문제
문제간단한 정수론 문제이다.$$ A^{B^C}, B^C / A$$결국 이 두개를 0.25초 안에 계산하면 되는 문제라고 볼 수 있다.첫번째의 경우에는 페르마의 소정리를 이용하면 간단하게 구할 수 있다. 페르마의 소정리는 아래과 같다. $$ p\text{가 소수이면, 모든 정수 }a\text{에 대해 } a^p\equiv a\left({\rm mod}\ p\right) \text{이다.}$$ 이는 동치인 아래의 정리로 바꿀 수 있다. $$ p\text{가 소수이면, 모든 정수 }a\text{에 대해 } a^{p-1}\equiv 1\left({\rm mod}\ p\right) \text{이다.}$$우리는 아래의 정리를 사용할 것이다. $  A^{7-1}\equiv 1\left({\rm mod}\ 7\righ..
[cryptohack.org] MODULAR ARITHMETIC
·
cryptohack.org
cryptohack을 공부하면서 얻은 지식들을 정리하려고 한다.Greatest Common DIvisorGCD 즉 최대공약수에 대한 내용이다. 유클리드 호제법을 이용해서 두 정수의 최대공약수를 구하라고 한다. 이전에 유클리드 호제법을 다루었던 적이 있다.2024.07.18 - [BOJ/이론] - 유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기 유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기유클리드 호제법이란?호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다.호제법(互除法)이라는 단어가 따로 있는것은 아니고, 서로(互) 나누기(除nivr4y.tistory.comdef gcd(a, b): while b > 0: ..
[python3] 백준 23062번 - 백남이의 여행 준비의 준비
·
BOJ/문제
문제중국인의 나머지 정리(CRT)를 알고 있는 사람이라면 바로 해당 정리를 이용해서 문제를 풀어야겠다는걸 알 수 있다. 중국인의 나머지 정리(Chinese Remainder Theorem, CRT)알고리즘이나 정수론, 암호학을 공부하면 항상 등장하는 개념인 중국인의 나머지 정리에 대해 알아볼 것이다.중국인의 나머지 정리란?중국인의 나머지 정리는 다음과 같은 여러 선형 합동nivr4y.tistory.comCRT는 주어진 법들이 서로소 관계일때만 적용되므로, 일반적인 CRT와는 약간 다르게 바꿔서 함수를 짜야 한다.풀이import sysinput = sys.stdin.readlinedef ext_euc(a, b): if b==0: return a, 1, 0 g, x, y = ext_euc(b, a..
중국인의 나머지 정리(Chinese Remainder Theorem, CRT)
·
BOJ/이론
알고리즘이나 정수론, 암호학을 공부하면 항상 등장하는 개념인 중국인의 나머지 정리에 대해 알아볼 것이다.중국인의 나머지 정리란?중국인의 나머지 정리는 다음과 같은 여러 선형 합동식을 만족하는 유일한 해를 구할 수 있게 해주는 강력한 정리이다.$$x \equiv 1\; \mathrm{(mod \; 3)},\\ x \equiv 2 \; \mathrm{(mod \; 5)},\\ x \equiv 3 \; \mathrm{(mod \; 7)}$$합동식들의 $a \equiv b \mod m$의 형태에서, 모든 m들은 서로 서로소 관계여야 한다.또한 각 합동식에서 x의 계수가 1이 아닌 경우가 있는데, 그런 경우에는 확장된 유클리드 알고리즘(EEA)를 사용해서 곱셈 역원을 구해서 양변에 곱해준 후 CRT를 적용한다.중..
[dreamhack] fho
·
dreamhack
배경 개념c 언어에서 메모리의 동적 할당과 해제를 담당하는 함수에는 malloc, free, realloc 등이 있다. 이 함수들은 libc.so에 구현되어 있다. libc에는 이 함수들의 디버깅 편의를 위해 훅 변수가 정의되어 있다. malloc 함수는 __malloc_hook을, free 함수는 __free_hook, realloc 함수는 __realloc_hook이라는 훅 변수를 사용한다. 이 함수들은 libc.so의 bss 및 data 섹션에 포함된다. bss, data 섹션은 쓰기가 가능하므로, 실행 중에 조작이 가능하다.훅을 실행할 때 기존 함수에 전달한 인자를 그대로 전달해주기 때문에  __malloc_hook을 system 함수의 주소로 덮고, malloc("/bin/sh")를 호출해서 쉘..
[python3] 백준 3955번 - 캔디 분배
·
BOJ/문제
문제나의 첫 플레티넘 문제이다!! 이전 글에서 확장된 유클리드 알고리즘을 공부한것이 큰 도움이 되었다.2024.09.23 - [BOJ/이론] - Extended Euclidean Algorithm (확장된 유클리드 호제법) Extended Euclidean Algorithm (확장된 유클리드 호제법)확장된 유클리드 호제법이란?2024.07.18 - [BOJ/이론] - 유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기  유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기유클리드 호nivr4y.tistory.com문제에서 요구하는 것을 식으로 만들어 보면 다음과 같다.$$ k \cdot x + c \cdot y \equiv 1 \mod c $$이는 확장된 유클리드 알고리즘으로 ..
[dreamhack] shell_basic
·
dreamhack/pwnable
문제문제 파일에는 shell_basic ELF 파일과 shell_basic.c가 들어있다.// Compile: gcc -o shell_basic shell_basic.c -lseccomp// apt install seccomp libseccomp-dev #include #include #include #include #include #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);} void init() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_hand..
Extended Euclidean Algorithm (확장된 유클리드 호제법)
·
BOJ/이론
확장된 유클리드 호제법이란?2024.07.18 - [BOJ/이론] - 유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기  유클리드 호제법과 최대공약수, 최소공배수 python으로 구현하기유클리드 호제법이란?호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다.호제법(互除法)이라는 단어가 따로 있는것은 아니고, 서로(互) 나누기(除nivr4y.tistory.com유클리드 호제법이 두 정수 $a$, $b$의 최대공약수 $gcd(a,b)$를 구하는 방법이였다면 확장된 유클리드 호제법은 두 양의 정수 $a$,$b$가 있을때 베주 항등식이라 불리는 아래의 식에서 $u,v$의 값을 찾아내는 효율적인 방법이라고 할 수 있다.$$ \displaystyle{\di..
728x90
반응형
의지박약인간
'분류 전체보기' 카테고리의 글 목록