Tips & theory

vscode 탐색기에서 불필요한 파일 숨기기
서론 노트북을 하나 지르고, 셋팅을 다시 하는 와중에 vscode와 wsl을 연동한 다음 탐색기에서 wsl의 모든 숨긴 파일을 가져오기에 이를 숨길 수 있는 방법을 찾아냈다. 본론 아래와 같이 처음 연동하면 계정 폴더 내의 숨김 파일을 모두 보여준다. 이를 숨기기 위해서는 아래와 같이 숨길 파일을 지정해주면 된다. 파일 -> 기본설정 -> 설정 상단 "설정 검색" 에서 file:exclude 를 써주고 나오는 창에서 "패턴 추가" 버튼을 누르고 **/.* 추가 확인 버튼을 누르자마자 사라진다.

Legendre Symbol - 르장드르 기호
서론 지금까지 이런 해킹은 없었다. 이것은 크립토인가 수학인가. 이론 앞서 공부한 제곱 잉여 x^2 = a mod p 에서 p가 충분히 작다면 쉽게 a를 구할 수 있었지만, p가 커지면 어떻게 제곱 잉여인지 아닌지 쉽게 확인할 수 있을까. 르장드르 기호는 어떤 수가 제곱 잉여인지 아닌지 나타내는 함수이다. 기호는 아래와 같은데, 분수처럼 생겼지만 분수랑은 관계 없다. 르장드르 기호의 정의는 아래와같다. 포스팅에서는 편의 상 (a / p) 라고 하겠다. 즉, (a / p)가 1이면 제곱 잉여, -1이면 비 제곱 잉여, 0이면 잉여 없음으로 표현한다. 이들은 제곱 잉여의 성질에 대응하는데, 제곱 잉여 * 제곱 잉여 = 제곱 잉여 제곱 잉여 * 비제곱 잉여 = 비제곱 잉여 비제곱 잉여 * 비제곱 잉여 = 제곱..
Quadratic Residues - 제곱 잉여
서론 과연 크립토의 수학은 어디까지 가는가... ㅋㅋㅋ 이론 요약하자면 x^2 ≡ a mod n 을 만족하는 정수 x가 있으면 a는 n의 제곱 잉여, 없으면 제곱 비잉여 라고 한다. 예를 들어 n =7 이라고 가정하면 1^2 ≡ 1 ≡ 1 mod 7 2^2 ≡ 4 ≡ 4 mod 7 3^2 ≡ 9 ≡ 2 mod 7 4^2 ≡ 16 ≡ 2 mod 7 5^2 ≡ 25 ≡ 4 mod 7 6^2 ≡ 36 ≡ 1 mod 7 ... (이후에는 반복됨) 이기 때문에 1,2,4가 7의 제곱 잉여가 된다. 한편, 3,5,6은 비 제곱 잉여가 된다. 한번 더 해보자. 만일 n이 13이라면 1^2 ≡ 1 ≡ 1 mod 13 2^2 ≡ 4 ≡ 4 mod 13 3^2 ≡ 9 ≡ 9 mod 13 4^2 ≡ 16 ≡ 3 mod 13..
PWN wargame 모음 (및 느낀점)
https://wyv3rn.tistory.com/notice/418 PWN wargame 모음 (및 느낀점) 직접 풀어본 사이트들만 모았다. 그렇기에 천천히 추가될 예정. * H4CKINGGA.ME https://h4ckingga.me/ H4CKING GAME h4ckingga.me 국내 유명 hacker groop인 H4C의 war game site. 문제가 그리 많지도 않고, 난이도가 그리 wyv3rn.tistory.com 로 이동했다.

항등원과 역원, 그리고 합동식
서론 암호학은 수학적으로 공부해야할 것들이 많기 때문에 다른 분야에 대비해서 어렵기도 하지만, 뭔가 공부한다는 느낌이 팍팍 드는게 은근 마음에 든다. 이론 항등원 항등원은 임의의 수 a에 대해 e를 연산 했을 때 그 결과 값이 a가 되는 e를 항등원이라고 한다. 예를 들어 덧셈 연산을 하면 a + e = a 가 되고 이를 만족하기 위한 e는 0이 된다. 잠시 생각해보면 더하기, 빼기 = 0 곱하기, 나누기 = 1 행렬의 덧셈 = 역행렬 행렬의 곱셈 = 단위행렬 이 된다. 우선 행렬은 내비두고, 사칙연산에 의한 항등원은 직관적으로 알 수 있을 것이다. 이를 수학적 기호로 a △ b = b △ a = e 로 표현하고, 왼쪽을 만족하는 경우 왼쪽 항등원, 오른쪽을 만족하는 경우 오른쪽 항등원, 양쪽을 만족하면..
Expanded Euclid's Algorithm - 확장된 유클리드 호제법
서론 아직은 이걸 왜 알아야하는지 모르겠지만 일단 하는 공부 ㅋ 확장 유클리드 호제법 공식을 처음 봤을때 최소공배수인가라는 생각을 했고, 퇴근하며 운전하는 동안 머릿속으로 알고리즘을 짜놨는데 아니었음 ㅋㅋㅋ 근데 뭐 원리는 거의 같으니... 이론 베주 항등식 베주 항등식에 대해서 알아보자. 확장된 유클리드 호제법에 대한 글인줄 알았는데 무슨 소리냐고? 이게 곧 확장된 유클리드 호제법이랑 연결된다. 베주 항등식이란 두 자연수의 최대 공약수를 그 두 수의 배수의 합으로 나타낼 수 있다. 라는 것이다. 이건 또 무슨 소리냐고? 식으로 보면 이해하기 쉽다. a, b의 최대 공약수는 GCD(a, b)로 표현할 수 있다. 이를 베주 항등식과 연계해서 표현해보면 ax + by = GCD(a,b) 를 만족하는 식을 베..
Euclidean algorithm - 유클리드 호제법
서론 크.... 내가 유클리드 호제법에 대해서 포스팅하는 날이 올줄이야... 상상도 못했다 ㅋㅋㅋ 이론 임의의 두 정수가 있을 때 두 정수의 최대공약수를 구하는 방법 중 하나가 유클리드 호제법이다. 여기서 최대공약수는 Greatest Common Divisor이며, 보통 GCD라고 이야기한다. 이를 간단히 식으로 표현해보면 a mod b = r = GCD(a, b) = GCD(b, r) 이다. 이론 자체는 매우 쉽다. 증명하기가 어려워서 그렇지... ㅋㅋ 방식은 아래와 같다. 임의의 정수 a와 b가 a > b라고 가정하자. 이 때 b로 a를 나눈 나머지를 r1이라고 하자. 이 r1으로 다시 b를 나누고 이 나머지를 r2라고 하자. 이 r2로 다시 r1을 나누고... 이렇게 나눠 나머지가 0이 될때까지 반..

Diffie–Hellman key exchange 이론 및 중간자 공격
서론 사실 크립토는 하고싶지 않았다... 근데 어쩔 수 없이 해야겠다 ㅠㅠ 디피-헬먼 키 교환은 공개 키 교환 알고리즘의 시조새이다. 기본 중의 기본이라는 소리. Diffie–Hellman key exchange 이론 뭐 이산 대수(이산 로그)니 뭐니, 에서 g, x, p를 알면 y를 구할 수 있지만, g, p, y를 알때 x를 구하기 어렵다는 이런 복잡한 문제는 일단 제껴두고, 저 공식을 풀어서 이야기하자면 를 이야기한다. 일단 그렇다치고, 최종적으로 서로 가질 키의 공식은 이다. 1. 기본 값 교환. 왜인지 모르겠지만 allice와 bob이 그 대상이다. 외국판 철수와 영희인가보다. 앨리스는 소수 p 그리고 정수 g를 선택해서 밥에게 공유한다. 이때 g는 인 수이다. 여기서 g와 p는 공개되어도 무관..
command injection
서론 항상 어려운 command injection. 잘 정리해둔 site를 찾았기에 복사해둔다. PayloadsAllTheThings/Command Injection at master · swisskyrepo/PayloadsAllTheThings · GitHub GitHub - swisskyrepo/PayloadsAllTheThings: A list of useful payloads and bypass for Web Application Security and Pentest/CTF A list of useful payloads and bypass for Web Application Security and Pentest/CTF - GitHub - swisskyrepo/PayloadsAllTheThings:..
libc database. local에서 사용해보자.
서론 사실 매번 libc-database libc-database libc.rip 에서 검색해서 사용했는데, local에서 사용할 수 있는 방법이 있다. 예전부터 알고 있었는데 사실 그냥 귀찮아서 자세히 찾아보지 않았었고, 그닥 필요 없을거라 생각해서 안썼는데, CTF를 뛰다 ld 파일을 구하기가 힘들어서 사용하게 되었다. 설치 github를 통해 다운로드 가능하다. GitHub - niklasb/libc-database: Build a database of libc offsets to simplify exploitation GitHub - niklasb/libc-database: Build a database of libc offsets to simplify exploitation Build a dat..