본문 바로가기

전체 글

(53)
쿠키, 세션 공통점, 차이점 세션 쿠키, JWT 정리 쿠키와 세션의 공통점 : 매번 페이지 로그인을 다시 하는 등의 번거로움을 해결하기 위해 클라이언트와 서버의 웹 통신 정보와 상태를 기록하여 다시 페이지에 접속했을때 그대로 로그인 정보가 남아있기 하기 위한 용도로 사용 됨. 쿠키와 세션의 차이점 : - 쿠키 : 해당 접속 정보를 클라이언트에 저장함. 즉, 사용자가 임의로 변조하는 등으로 악용될 가능성이 있음 . - 세션 : 해당접속 정보를 접속중인 웹서버에 저장함. 쿠키에 비해서 보안적으로 안전하지만, 서버의 자원을 소모된다는 단점이 있음. 세션쿠키란? : 쿠키의 종류중 하나로, 클라이언트와 웹서버의 활성화된 연결을 의미함. 로그오프 하거나 브라우저를 닫으면 만료된다. JWT(Json Web Token) : 클라이언트와 서버 통신시 권한 인가를 위해 사용..
OpenCV [1] - 설치 OpenCV 란? : 영상 및 이미지 처리 라이브러리로 모듈 자체는 C++ 제작되었지만 C++ 11 과 PYTHON 등에서 지원하는 모듈이다. WINDOW, MAC OS, LINUX 등 다양한 운영체제에서 돌아간다. 우선 이번에는 python open cv 설치법에 대해 알어보자. ( 해당 글은 mac os 기준으로 작성되었습니다. ) 다음과 같이 pip3 를 통해서 opencv-python 을 설치 할 수 있다. 이후, 다음과 같이 cv2로 import가 되면 설치가 제대로 완료된 것이다. 오늘은 다음과 같이 간단하게 opencv-python 설치를 해보았당
AUCTF [Pwn] - Thanksgiving Dinner 문제는 다음과 같다. 이게 조금 예전에 열렸던 CTF인데 뒷북이지만 적어서 올려 본당 아, 참고로 저 nc 서버는 닫혀 있으므로 remote 익스는 불가능 하당 ㅜㅜ 먼저 ida로 보면, main 함수에서 vulnerable 함수를 호출한다. 따라가 보면, int 형 변수 5개 만들어 놓고, if 문으로 저 5개 값을 비교해서 전부 참이면, print_flag() 함수를 호출한다. 그냥 간단한 지역 변수 덮는 문제 임을 알 수 있다. fgets로 입력 넣을 때 저 값들을 조건문에 맡게 변조해두면 된다. 아, 참고로 저 print_flag 함수를 보면, flag.txt 파일을 읽어서 출력 하므로 나는 다음과 같이 flag.txt 파일을 만들었당 gdb를 통해 vulnerable 함수에서 검사하는 루틴을 보..
Insertion Sort 이번에는 삽입 정렬이당 평균적인 시간 복잡도는 N 제곱이고 베스트 인 경우는 N 번이다, key 값을 뽑아 낸 다음 배열에서 key 이전의 key 보다 큰 값들은 key 값 보다 작은 값이 나올 때 까지 한 칸씩 앞으로 밀어서 key 보다 작은 값이 나올 때 그 앞에다가 key 값을 삽입 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #include using namespace std; void insertion_sort(int * arr, int N){ int key = ..
Selection Sort 이번에는 선택 정렬( Selection_Sort ) 알고리즘 이다. 버블 정렬과 마찬가지로 N 제곱 시간 복잡도 알고리즘 이지만 swap 하는 횟수는 버블 정렬 보다 적기 때문에 버블 정렬 보다는 빠르다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 #include using namespace std; void swap(int & a, int & b){ // 인자를 레퍼런스로 받음 int c = a; a = b; b = c; } void selection_sort(in..
Bubble Sort 이번에 리뷰할 코드는 버블 정렬( Bubble Sort ) 알고리즘 코드이다. 구현하기는 간단한 정렬이지만 시간 복잡도 측면에서는 N제곱으로 효율적이지는 않은 정렬 알고리즘이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #include using namespace std; void swap(int & a, int & b){ // 인자를 레퍼런스로 받음 int c = a; a = b; b = c; } int main() { int * arr; // 동적으로 메모리를 할당할 포인터 변수 int N =..
이진 탐색 트리 c++로 이진 탐색트리를 짜보았당 ( 설명은 주석에 달아 놓았습니당 코드나 주석에서 부족한 부분 있으면 댓글 달아 주세요! ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109..
Gift 문제는 다음과 같다. 바이너리를 다운로드하고 실행해보면, 어떠한 주 솟값을 2개 보여주고, 입력을 총 두 번 받는데 첫 번째로 입력받은 문자열은 그대로 출력해주고 두 번째 입력 이후 프로그램이 그냥 종료됨을 알 수 있다. IDA로 보면, 보니깐 저 두 개의 주소들은 system 함수와 binsh 임을 확인할 수 있다. 실제로 system 함수는 바이너리 내부에 있었고 다음으로 binsh를 보니깐 bss 주소로 이어짐을 알 수 있었다. 그러나 실제로 '/bin/sh'가 들어 있는 것은 아니었다. 실제로 gdb로 봐도 요렇게 나와 있당 즉 우리는 실제 저 주소에 '/bin/sh'를 넣어주고 system 함수를 /bin/sh를 넣은 저 bss 주소로 인자를 넣어 주면 될 것이다. 익스는 다음과 같다. 1 2 ..