일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- ImageBase
- 기계학습
- 심층학습
- 보안
- 머신러닝
- XSS
- 딥러닝
- 암호학
- injection
- Cross Site Scripting
- 프로그래머스
- db
- codeup
- SQL_Injection
- RSA
- StoredXSS
- 웹
- 디피헬먼
- 인공지능
- dsa
- 파일구조
- 공개키
- dvwa
- ReflectedXSS
- C언어
- SQL
- 코드업
- Database
- RVA
- Today
- Total
목록정보보안/포너블 (4)
Ye0ngJae
PLT(Procedure Linkage Table) & GOT(Global Offset Table) C언어 프로그램은 컴파일을 진행할 때 링크라는 과정을 거친다. 목적 파일들끼리의 링킹이면 코드만 넣어주면 된다. 하지만 라이브러리를 링킹 할 때에는 이렇게 할 수 없다. 따라서 정적 링킹(Static Link)과 동적 링킹(Dynamic Link)이 있다. 동적 링킹은 프로그램에서 사용하는 모든 라이브러리 모듈들을 프로그램을 컴파일할 때 복사하지 않고 해당 모듈의 주소 값을 가지고 있다가 프로그램이 실행되어서 실행 파일과 라이브러리가 메모리에 로드될 때 해당 주소 값을 이용하여 특정 함수를 불러오는 방식이다. 이러한 방식으로 컴파일을 하면 라이브러리가 프로그램 외부에 있기 때문에, 함수의 주소 값을 알아내..
PLT와 GOT를 모른다면 아래 게시물을 한 번 보고 오자 2022.10.20 - [정보보안/포너블] - [Pwnable] PLT & GOT Libc leak Libc란? printf, scanf 등을 비롯한 C언어의 여러 함수들이 들어있는 라이브러리이다. Libc는 C언어의 표준 라이브러리인데 이 Libc 라이브러리는 로딩될 때 항상 일정한 규칙을 가진다. 바로 하위 1.5바이트가 0이라는 것이다. 이것은 Libc base라고 부른다. 즉, Libc base는 메모리에 매핑되어 있는 Libc의 시작 주소이다. Libc의 각 함수들에게는 오프셋이라는 것이 있는데 이 offset은 Libc base에 더해져서 실제 함수의 주소가 된다. ASLR 보호 기법에 의하여 여러 주소들이 랜덤화 되는데 Libc ba..
RTL(Return To Libc) 기존의 BOF는 Shellcode를 넣어서 시작 주소로 RET를 덮어써줬다면, RTL은 실행파일과 링킹 된 Libc 안에 있는 라이브러리 함수의 주소를 ret에 넣어 변조시키는 공격 기법이다. 32bit와 64bit에서의 함수 인자 전달 방식이 다르므로 각 문제마다 RTL 방법이 다르다. 우선 RTL 기법에 대하여 알아보기 전에 PLT와 GOT를 알아둘 필요가 있다. PLT(Procedure Linkage table) 외부 라이브러리 함수를 이용할 수 있도록 주소를 연결해주는 테이블 GOT(Global Offset Table) PLT 함수를 통하여 구한 라이브러리의 절대 주소가 저장되어 있는 테이블 NX-Bit 우회 RTL 기법 혹은 ROP 기법을 이용하면 된다. RT..
메모리 보호 기법 NX Bit / DEP 보호기법 NX Bit / DEP 보호기법이란 스택이나 힙 같은 영역에서 코드가 실행되는 것을 방지하기 위하여 실행 권한을 제한함으로써 셸의 실행을 막는 기법이다. 데이터 저장 공간에서는 굳이 실행 권한이 필요하지 않기 때문에, 해당 부분에서 실행 권한을 제외함으로써 만일 셸코드가 정상 코드를 덮어도 실행권한이 없어 셸이 실행되지 않는다. 이 기법은 윈도우에서는 DEP. 리눅스에서는 NX Bit 기법이라고 부른다. 위 코드와 같이 일반적인 C코드를 컴파일 한다고 했을 때, 명령어는 다음과 같다. DEP-disabled : gcc -z execstack -o DEP-disabled DEP.c DEP-enabled : gcc -o DEP-enabled DEP.c NX ..