분류 전체보기
CentOS 에디터 - gedit, vi(vim)
gedit $ gedit X 윈도우에서 제공하는 편리한 에디터 vi 에디터 = visual; 모든 유닉스/리눅스 시스템에 기본으로 포함되어 있는 text-based 에디터 특히, 텍스트 모드로 설정한 Server(B)에서는 X 윈도우 창을 열 수 없기 때문에 gedit을 사용할 수 없다,, 따라서 vi 사용법에 익숙해져야 한다. centOS 8에서는 자동으로 vi 에디터를 좀 더 편리하게 사용할 수 있는 vim 에디터가 설치되어 있다. 그냥 vi 에디터는 오로지 키보드에만 의존하여 많은 부분 제한적이다. $ vi [파일] 명령모드: 입력모드 또는 ex모드에서 [ESC]키를 눌러 진입 입력모드: 문서를 작성하는 실제 작업 ex 모드(=라인 명령 모드): 명령모드에서 콜론(:)을 입력하고 실행 [명령모드: ..
[HackCTF] uaf
checksec 32bit Canary발견 (pwntools 새로운 버전이 나왔다..업데이트 해야지..) Pseudo Code IDA 32bit 로 확인 int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int v3; // eax char buf; // [esp+8h] [ebp-10h] unsigned int v5; // [esp+Ch] [ebp-Ch] v5 = __readgsdword(0x14u); setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); while ( 1 ) { while ( 1 ) { menu(); read(0, &buf, 4u); v3 = atoi(&buf);..
[DS] Delete a Node
www.hackerrank.com/challenges/delete-a-node-from-a-linked-list/problem position이 주어지고 해당 position의 노드를 삭제하는 코드를 작성해야 한다. SinglyLinkedListNode* deleteNode(SinglyLinkedListNode* head, int position) { SinglyLinkedListNode* temp = head; SinglyLinkedListNode* tmp; if(position == 0) { head = head->next; return head; } for(int i=0;inext; } tmp = temp->next; temp->next = tmp->next; free(tmp); return hea..
Migratory Birds
www.hackerrank.com/challenges/migratory-birds/problem 배열을 이용해 값을 비교해 최대의 값을 가지는 타입을 출력하는 프로그램이다. // Complete the migratoryBirds function below. int migratoryBirds(int arr_count, int* arr) { int common=0; int nums[5] = {0,}; for(int i=0; i
[리눅스 명령어] 도움말 사용법 - man
도움말 사용법 $ man 명령어 = 'manual'의 약어, 리눅스에 포함된 도움말 → vi 에디터와 비슷하게 사용된다. 위쪽 행으로 이동 ↑ 또는 k 아래쪽 행으로 이동 ↓ 또는 j 이전 페이지로 이동 PgUp 또는 SpaceBar 다음 페이지로 이동 PgDn 또는 b 특정 단어 검색 /단어 다음 단어로 이동 n man 명령어에 대한 도움말 h 종료 q [섹션] man 명령어는 1~9 까지의 섹션을 나눠 사용할 수 있다. ==> $ man [섹션번호] 명렁어 섹션 1 명령어 섹션 2, 섹션 3 프로그래밍 섹션 4 디바이스 섹션 5 파일 형식 섹션 6 게임 섹션 7 기타 주제 섹션 8 시스템 관리 섹션 9 커널 관련 설명 지정한 섹션 번호에 있는 도움말을 출력하게 한다. 특별히 섹션 번호를 지정하지 않으..
[Heap] UAF(Use-After-Free)
UAF (Use-After-Free) Use-After-Free vulnerabilities are a type of memory corruption flaw that can be leveraged by hackers to execute arbitrary code. Use After Free specifically refers to the attempt to access memory after it has been freed, which can cause a program to crash or, in the case of a Use-After-Free flaw, can potentially result in the execution of arbitrary code or even enable full re..
[Heap] Double Free 취약점
◾ 실습 환경: Ubuntu 16.04 (glibc 2.23) Double Free와 U-A-F 취약점은 C 언어에서 동적 메모리를 관리를 올바르지 않은 방식으로 했을 때 발생하는 취약점들이다. Double Free 해제된 메모리를 다시 한 번 해제하는 취약점이다. 📌 힙을 할당했다가 해제하면서 할당되었던 힙 청크의 주소가 크기에 맞는 bin (fastbin/unsorted bin/samllbin/largebin)에 들어가고, 같은 bin에 해당되는 크기로 재할당 요청이 오면 순차적으로 할당이 된다. 이 때, double free가 발생해 중복된 주소가 bin에 들어가게 되었을 때, 같은 크기로 할당 요청이 여러 번 들어오게 되면 동일한 메모리에 두 개의 객체가 할당될 수 있다. 이 점을 이용해 이미 해..
LINUX 기초 개념 - 시작과 종료, 재부팅, 가상콘솔, 자동완성, history
시작과 종료 종료 # shutdown -P now # halt -p # init 0 # poweroff 재부팅 # shutdown -r now # reboot # init 6 # shutodwn [옵션] [시간] (△ root 사용자에서 사용 가능한 명령어) [옵션] -p / -P poweroff 종료 (# halt -p, # init 0) -r reboot 재부팅 (# reboot 도 가능) -c cancel 예약된 shutdown 취소 -k 종료된다는 메시지를 보내지만 실제로는 종료되지 않음 ; 시스템을 종료하지 않고 다른 사용자가 시스템 접속을 로그아웃하도록 유도 [시간] +N : N분 후에 동작 실행 NN:NN : NN시 NN분에 동작 실행 now : 바로 실행 # init [런레벨] [런레벨] ..
CentOS Client 가상 머신 설치
소프트웨어 선택 워크스테이션 > GNOME 응용 프로그램 선택 Client 설치 목적지 선택 이전 가상머신들과 달리 저장소 구성을 오토매특으로 설정되게 함 자동 업데이트 기능 끄기 # gsettings set org.snome.software download-updates false # systemctl disable dnf-makecache.service # systemctl disable dnf-makecache.timer dnf 저장소 설정 # cd /etc/yum.repos.d/ # rm -f *.repo # ls # wget http://download.hanbit.co.kr/centos/8/This.repo #ls -l # dnf clean all 해상도 설정 # gedit /etc/grub...
[DS] Insert a node at a specific position in a linked list
link /* * For your reference: * * SinglyLinkedListNode { * int data; * SinglyLinkedListNode* next; * }; * */ SinglyLinkedListNode* insertNodeAtPosition(SinglyLinkedListNode* head, int data, int position) { SinglyLinkedListNode *node = malloc(sizeof(SinglyLinkedListNode)); node->data = data; node->next=NULL; SinglyLinkedListNode *tmp = head; for(int i=0;inext; } node->next = tmp->next; tmp->next=..