전체 글193 [hackCTF] 00. / hackCTF 웹문제 처음 들어가면 안녕?! 로봇이 인사한다. 로봇이니까 robots.txt 열어보기 라고 쓰지만 사실 예전에 풀어봤으니까 바로 로봇s.txt 생각하지 처음 보는 문제라면 ? 뭐 어쩌라고 라고 생각했을듯 그래서 문제 페이지 뒤에 /robots.txt 를 붙여서 해당 페이지에 대해 들어가보면 /robot_flag/ 를 disallow해놨다고 뜬다. 여기에 플래그가 있을 거라고 알려주고 있으므로 다시 문제 페이지 URL뒤에 /robot_flag/를 붙여서 플래그를 획득하자. 이때 마지막 /까지 모두 잘 붙여야 한다. # robots.txt 크롤러가 사이트의 일부에 접근하지 못하도록 규칙을 정해놓는 파일 # 웹 크롤러 (web crawler) 자동화된 방법으로 웹을 탐색하는 컴퓨터 프로그램 [.. 2022. 3. 26. [드림핵] x86 Assembly 어셈블러(Assembler) : 0과 1로 이루어진 기계어를 사람이 좀 더 쉽게 이해할 수 있도록 통역해주는, 일종의 번역기 역어셈블러(Disassembler) : 기계어로 구성된 소프트웨어를 넣으면 어셈블리 코드로 변역해준다. # 어셈블리 언어 (Assembly Language) 기계어와 치환되는 언어 - 기계어의 종류에 따라 어셈블리 언어도 다르다. 다양한 ISA가 존재하므로 그만큼의 어셈블리 언어 종류가 있다. > x64 어셈블리 언어 - 명령어(Opcode, Operation Code)와 피연산자(Operand)으로 구성된다. ex) mov eax, 3 >> mov:대입 / eax에 3을 - 명령어 Opcode 데이터 이동, Data Transfer mov, lea 산술 연산 , Arithmeti.. 2022. 3. 26. [드림핵] Linux Memory Layout 프로세스 가상메모리의 각 구영이 어떤 정보를 담고 있는지 이해함으로써 프로세스 메모리의 전체 구조에 대해 큰 그림을 그려보자..! CPU는 실행할 명령어와 데이터를 메모리에서 읽고 ISA에 따라 처리하고 처리한 결과를 다시 메모리에 적재한다. 즉, CPU의 동작과 메모리는 서로 영향을 많이 주고 받는다. 만약 공격자가 메모리를 악의적으로 조작한다면 CPU는 공격자의 의도대로 동작할 수 있으며 이를 메모리가 오염됐다고 표현한다. >> 메모리 오염 (memory Corruption) 취약점 * 시스템 해킹의 많은 공격기법들이 메모리 오염을 기반으로 한다. # 리눅스 프로세스의 메모리 구조 리눅스에서는 프로세스의 메모리를 크게 5가지의 세그먼트로 구분한다. + 세그먼트 (segment) : 적재되는 데이터의 .. 2022. 3. 26. [드림핵] Computer Architecture # SYSTEM HACKING * 가상 머신 : 컴퓨터를 에뮬레이팅 한 것 가상 머신을 작동 시키는 컴퓨터를 호스트(Host)라고 부르며, 가상 머신 안에서 작동하는 컴퓨터를 게스트(Guest)라고 부릅니다. 가상 머신을 이용하면 호스트는 게스트에게 독립된 실행환경을 제공할 수 있습니다. 그 위에서 게스트는 윈도우, 리눅스, 맥 등의 운영체제를 구동할 수도 있고, 원하는 특정 프로그램만 실행할 수도 있습니다. 대표적인 가상화 소프트웨어로는 VMware, VirtualBox, Parallels, QEMU 등이 있습니다. # COMPUTER ARCHITECTURE, 컴퓨터 구조 컴퓨터로서 작동할 수 있도록 하는 여러가지 부품에 대한 기본 설계 컴퓨터 구조 : 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및.. 2022. 3. 26. [push_swap] 0. 과제 이해하기 Description This project involves sorting data on a stack, with a limited set of instructions, and the smallest number of moves. To make this happen, you will have to manipulate various sorting algorithms and choose the most appropriate solution(s) for optimized data sorting. 이 프로젝트는 제한된 명령어 집합과 가장 적은 수의 이동으로 스택의 데이터를 정렬하는 것을 포함한다. 이를 위해서는 다양한 정렬 알고리즘을 조작하고 최적화된 데이터 정렬에 가장 적합한 솔루션을 선택해야 합니다. #ke.. 2022. 3. 5. [minitalk] 발전방향 평가는 통과했지만 나도 내 코드가 더 발전해야할 부분이 있음을 이미 알고 있었기 때문에 평가를 통해 얻은 피드백을 잊어버리기전에 기록해두려한다. - static 에 대해 정확히 공부할 것 static을 사용했을때 언제 불러오는지 알고 있다면 초기화가 언제되는지, 자동으로 되는지 혹은 내가 직접해야하는지도 알 수 있었을 것이다. 그랬다면 server.c의 핸들러 함수를 쓸데없이 전역변수 쓰지않고, 더 간결한 코드로 구현할 수 있었을 것 같다. - 산술 연산 줄인다고 했음에도 나는 산술연산을 아직 쓰고 있다. 나의 로직이 애초에 이진수로 변환하여 시그널을 보내는 것이기에 애초에 client에서 server로 시그널을 보낼때 비트 연산자를 이용해서 전달하면 비트 연산만 사용하게되어 시간이 더 단축될 수 있다... 2022. 2. 26. [ minitalk ] 구현과정 두개의 시그널, SIGUSR1와 SIGUSR2만을 이용해서 서버 프로그램에 데이터를 보내야한다. 사전지식에 대한 이야기는 앞의 게시글에서 가득 했으니 넘어가고 과제를 풀어나가는 생각의 흐름만 기록해보자. + 두가지의 신호만 사용할 수 있다. 우선 통신하는데 단지 2가지의 시그널만을 이용해야한다는 점을 통해서 이진법을 떠올릴 수 있다. 우리는 C언어 공부를 통해 각 데이터형이 몇바이트로 이루어지는지, 한 바이트는 몇 비트인지를 공부하면서 이진법으로 왠만한 문자열(아스키코드값내의 문자)을 모두 표기할 수 있음을 알고 있다. 따라서 문자열을 문자로, 문자를 비트로 쪼개어 1(SIGUSR1)과 0(SIGUSR2)로 표현 및, 시그널을 보내면 된다. 각 문자는 아스키코드값에 따라 숫자로 나타낼 수 있으며 8자리의.. 2022. 2. 25. [스프링 스터디] 7주차 - 스프링 핵심 원리.기본편 (마지막) 긴 듯, 짧은 듯 스프링 스터디의 마지막 주차...! 공부한 github : https://github.com/anso33/SpringStudy_second.git [ 섹션 9. 빈 스코프 ] 빈 스코프 : 빈이 존재할 수 있느 범위 스프링은 싱글톤과 프로트타입 등 다양한 스코프를 지원한다. ex) 싱글톤 프로토타입 웹 관련 request session application - @Component를 이용해서 자동으로 등록할 수도 있고, 수동으로 등록할 수도 있다. # 프로토타입 스코프 : 프로토타입 스코프의 빈을 요청하면 스프링 컨테이너가 프로토타입 빈을 생성하고 의존관계를 주입하여 반환한다. 싱글톤과 다르게 요청을 받을 때마다 새로운 프로토타입 빈을 생성하여 반환한다. 스프링 컨테이너는 프로토타입 빈에.. 2022. 2. 24. [ minitalk ] getpid() | pause() | sleep() | usleep() | exit() getpid 실행 중인 프로세스 ID를 구하는 함수 #include pid_t getpid(void); 이 함수는 언제나 successful (https://man7.org/linux/man-pages/man2/getpid.2.html glibc 버전 2.25부터 ID 캐시가 제거됨: getpid ()에 대한 호출은 항상 캐시된 값을 반환하는 대신 실제 시스템 호출 ) (** getppid() : 부모 프로세스 ID를 구하는 함수) pause 시그널을 기다리는 함수 #include int pause(void); 시그널을 잡으면 -1을 반환하고, 실패하면 EINTR sleep 초단위로 지정한 만큼 혹은 지정한 시간 안에 시그널이 올 때까지 프로세스를 멈추는 함수 #include unsigned int sl.. 2022. 2. 24. 이전 1 ··· 4 5 6 7 8 9 10 ··· 22 다음