본문 바로가기
728x90

전체 글82

Web Basic Info 웹에 대한 기초 지식을 먼저 정리해보자. Web Browser: HTTP를 통해 전달된 데이터나 리소스를 가공해 사용자에게 보여줌 -> 사용자의 입력값으로부터 취약점이 발생함 네트워크 프로그램 CLI(Commend Line Interface) 프로그램을 사용하여 웹을 사용할 수 있음 네트워크 프로그램 $ echo -ne "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"| nc example.com 80 CLI $ curl example.com Web Resource: 웹에서 사용하는 콘텐츠 -> 이를 가리키는 주소를 URL이라고 함(옛날: 실제 위치, 최근: 추상적 위치) 종류: HTML, CSS, JavaScript, ETC(이미지, 음성, 영상...) -> URI(UR.. 2021. 3. 4.
SF5. Format String Bug 보호되어 있는 글 입니다. 2021. 2. 26.
SF4. Stack Pivot 보호되어 있는 글 입니다. 2021. 2. 26.
SF3. ROP(Return Oriented Programming) attack 그런데 이제 Canary를 곁들인 보호되어 있는 글 입니다. 2021. 1. 30.
What is GOT & PLT PLT - Procedure Linkage Table은 실제 호출코드를 담고있는 테이블로써, 해당 내용을 참조하여 "_dl_runtime_resolve"가 수행되고 실제 시스템 라이브러리 호출이 이루어지게 된다. 쉽게 말하자면 외부라이브러리를 연결해주는 코드를 담고 있는 공간이다. 실제 바이너리에서도 사용하고자 하는 함수/라이브러리 주소 대신 PLT를 호출한다. GOT - Global Offset Table은 PLT가 참조하는 테이블로 procedure들의 주소가 있다. PLT가 어떤 외부 프로시저를 호출할 때 GOT를 참조하여 해당 주소로 분기된다. PLT함수들은 GOT라는 테이블의 주소로 분기하고 GOT는 외부 라이브러리의 함수/변수의 주소를 저장한다. 아래는 PLT, GOT가 프로그램 내부에서 pr.. 2021. 1. 24.
SF2. RTL with GOT & PLT 보호되어 있는 글 입니다. 2021. 1. 24.
Security Techniques 1. [ASLR] 스택, 힙, 라이브러리 등의 주소를 랜덤한 영역에 배치하여, 공격에 필요한 Target Address를 예측하기 힘들게 만드는 방법으로 프로그램이 실행될 때마다 각 주소들이 변경된다. 자세하게 설명하자면, libc base의 경우 뒤 3자리는 0x?????000으로 초기화하며(32bit) 이 3개의 자리는 페이지 단위를 의미하고 변동되지 않는다는 특징이 있다. 즉, pwnable을 할 때, libc leak을 성공하였을 경우 libc base의 주소를 알아내는 방법은 뒤 3개의 값을 알아내어 libc database search에 검색하여 알아내면 된다. libc database search (nullbyte.cat) libc database search Query show all libs .. 2021. 1. 22.
SF1. RTL 보호되어 있는 글 입니다. 2021. 1. 22.
Tools setting [운영체제] 본 스토리에서는 우분투 16.04.7 64bit 버전을 사용한다. (우분투 다운로드에 대한 글은 아래를 참고하라) 우분투(Ubuntu 16.04 LTS) 설치하기 :: EMAPP.cc 우분투(Ubuntu 16.04 LTS) 설치하기 이번 포스팅은 우분투(Ubuntu 16.04 LTS) 설치 디스크로 부팅 후부터 다룹니다. 설치 USB 만들기나 VMware 가상 머신에서의 설치 방법은 이전 포스팅을 참고해주세요 2019/09/01 - [OS/Ubuntu] - 우분투(Ubuntu.. blog.emapp.cc [Tools] 0. terminator $ sudo apt-get install terminator 1. pwndbg or peda 단, pwndbg의 경우 ubuntu16 환경에서 아래 명.. 2021. 1. 22.
728x90