일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 파일구조
- 디피헬먼
- Cross Site Scripting
- 보안
- codeup
- RVA
- ImageBase
- C언어
- StoredXSS
- 알고리즘
- 인공지능
- XSS
- 공개키
- 웹
- 암호학
- 딥러닝
- db
- 심층학습
- RSA
- Database
- dsa
- injection
- 머신러닝
- dvwa
- SQL_Injection
- 기계학습
- ReflectedXSS
- SQL
- 코드업
- Today
- Total
목록2022/10 (6)
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..