본문 바로가기

전체 글

(68)
딥러닝, 머신러닝 머신러닝이 진화한 게 딥러닝이라고 함딥러닝은 이름부터 deep 임       머신 러닝: 데이터를 분석하고, 데이터로부터 학습한 다음, 학습한 것을 적용해 정보에 입각한 결정을 내리는 알고리즘을 포함하는 인공지능의 애플리케이션새로운 데이터가 유입됨에 따라 특정 기능을 수행하는 데 점점 더 능숙해지지만, 여전히 인간의 개입 필요AI 알고리즘이 부정확한 예측을 반환하면 엔지니어가 개입하여 조정해야 함딥러닝: 알고리즘을 계층으로 구성하여 자체적으로 배우고 똑똑한 결정을 내릴 수 있는 '인공 신경망'을 만드는 딥러닝의 하위 분야알고리즘이 자체 신경망을 통해 예측의 정확성 여부를 스스로 판단할 수 있어 인간의 도움이 필요하지 않음머신 러닝의 주요 유형지도 학습: 훈련 데이터와 데이터에 대응하는 모델 제공정답이 있..
[NLP] 자연어 처리란 자연어(natural language): 사람들이 일상적으로 쓰는 언어, 인공적으로 만들어진 인공어와 구분하여 부르는 개념 자연어 처리(NLP, Natural Language Processing): 인공적이지 않은, 즉 자연스럽게 발생한 모든 언어(한국어, 영어, 일본어 등)를 컴퓨터가 처리하고 응용하게끔 해주는 모든 기법을 다루는 인공지능의 한 분야- 인간 언어를 규칙 기반으로 모델링하는 전산언어학과 통계적 머신러닝 및 딥러닝 모델을 결합- 컴퓨터가 텍스트 또는 음성 데이터의 형태로 인간의 언어를 처리하고, 발화자 또는 작성자의 의도와 감정을 포함한 완전한 의미를 이해할 수 있도록 함- 인풋을 다루는 NLU(Natural Language Understanding): 각 언어 텍스트의 문법과 문맥 등을 ..
[배포] React, Django 배포 - 프레임워크, 동작 과정 정리 프론트엔드 react, 백엔드 django 로 개발한 웹사이트를 배포하려고 함Reactnpm run build 하면 디렉토리 내 build 폴더가 생성되고, 배포 버전 파일들이 만들어짐 Nginx:HTTP 및 리버스 프록시 서버, 메일 프록시 서버 및 일반 TCP/UDP 프록시 서버- 웹 서버(web server)는 HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램- 주된 기능은 웹 페이지를 클라이언트에게 전달하는 것WSGI(Web Server Gateway Interface): 웹 서버와 웹 애플리케이션의 인터페이스를 위한 파이썬 프레임워크- WSGI 요청을 처리하려면 서버단에서 환경정보와 콜백함수를 애플리케이션단에 제공해야..
[시스템해킹] PIE ASLR이 적용되면서 바이너리 실행 시마다 스택, 힙, 공유 라이브러리 등이 무작위 주소에 매핑되었지만 main의 주소는 항상 동일했음-> 고정된 주소의 코드 가젯을 활용한 ROP 공격이 가능했음 PIE(Position-Independent Executable): ASLR이 코드 영역에도 적용되게 해주는 기술PIC(Position-Independent Code)- 리눅스에서 ELF는 실행 파일(executable)과 공유 오브젝트(shared object, SO)로 두 가지 존재- 공유 오브젝트는 기본적으로 재배치가 가능하도록 설계 -> 메모리의 어느 주소에 적재되어도 코드의 의미가 훼손되지 않음  => 이런 성질의 코드를 PIC라 함 PIE(Position-Independent Executable)- ..
[시스템해킹] Return Oriented Programming(ROP); ret2main 함수 실행 후 main으로 다시 돌아가게 가젯 구성; GOT overwrite 안해도 쉘 획득 가능임  basic_rop_x86-> 이번엔 32비트임, canary X 32비트 함수 호출 규약- rdi, rsi 등 레지스터로 인자를 전달해주던 64비트와 달리 32비트는 스택으로 전달해줌- x86 바이너리에서 pop 명령어의 피연산자는 중요하지 않다고.. - 인자 2개 필요하면 pop; pop; ret 이런 가젯을 찾아야 한다고.. 익스플로잇       - puts_plt 구해서 read 함수 실제 주소 구하고 main으로 return- x86 함수 호출 규약 알아야 함- 함수 인자 개수만큼 pop 필요- 지금 보니까 ret 가젯은 필요 없고- 첫번째 payload로 구한 read 주소를 이용해 libc ..
[시스템해킹] Return Oriented Programming(ROP); GOT Overwrite - ASLR이 걸린 환경에서 system 함수를 사용하려면 프로세스에서 libc가 매핑된 주소를 찾고, 그 주소로부터 system 함수의 오프셋을 이용하여 함수의 주소를 계산해야 함 ROP: 리턴 가젯을 사용하여 복잡한 실행 흐름을 구현하는 기법 코드// Name: rop.c// Compile: gcc -o rop rop.c -fno-PIE -no-pie#include #include int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0); // Leak canary puts("[1] Leak Canary"); write(1, "Buf: ", 5); //..
[시스템해킹] Return to Library Return to Library: 라이브러리 함수로 NX를 우회하고 셸을 획득하는 공격 기법 rtl.c// Name: rtl.c// Compile: gcc -o rtl rtl.c -fno-PIE -no-pie#include #include #include const char* binsh = "/bin/sh";int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0); // Add system function to plt's entry system("echo 'system@plt'"); // Leak canary printf("[1] Leak Canar..
[시스템해킹] Background: Library 라이브러리(Library) : 컴퓨터 시스템에서 프로그램들이 함수나 변수를 공유해서 사용할 수 있게 함 ex) printf, scanf, strlen, memcpy, malloc 등 - 같은 함수를 반복적으로 정의해야 하는 수고를 덜 수 있어 코드 개발의 효율이 높아짐 링크(Link) : 컴파일의 마지막 단계 - 프로그램에서 어떤 라이브러리의 함수를 사용하면, 호출된 함수와 실제 라이브러리의 함수가 링크 과정에서 연결됨 - 리눅스에서 C 소스 코드는 전처리, 컴파일, 어셈블 과정을 거쳐 ELF 형식을 갖춘 오브젝트 파일(Object file)로 번역됨 - 오브젝트 파일은 실행 가능한 형식을 갖추지만, 라이브러리 함수들의 정의가 어디 있는지 알지 못하므로 실행 불가능 동적 링크: 동적 라이브러리를 링크하는..