일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- Widget
- ML
- system hacking
- Computer Architecture
- Flutter
- study book
- rao
- 영상처리
- Kaggle
- FastAPI
- MATLAB
- BOF
- pytorch
- DART
- BAEKJOON
- ARM
- Image Processing
- fastapi를 사용한 파이썬 웹 개발
- PCA
- Dreamhack
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- C++
- BFS
- MDP
- Stream
- bloc
- Got
- Algorithm
- llm을 활용 단어장 앱 개발일지
- Today
- Total
목록system hacking (7)
Bull

FSB C언어에 포맷 스트링이라하면 대표적으로 printf, scanf, fprintf, fscanf, sprintf, sscanf가 있다. 이 함수들은 포맷 스트링을 채울 값들을 레지스터나 스택에서 가져온다. 그런데 이들 내부에는 포맷 스트링이 필요로 하는 인자의 개수와 함수에 전달된 인자의 개수를 비교하는 루틴이 없다. 그래서 만약 사용자가 포맷 스트링을 입력할 수 있다면, 악의적으로 다수의 인자를 요청하여 레지스터나 스택의 값을 읽을 수 있다. Printf() https://cplusplus.com/reference/cstdio/printf/ https://cplusplus.com/reference/cstdio/printf/ function printf int printf ( const char *..

개념 Return To Library(RTL)는 NX를 우회하는 공격 기법으로 널리 알려져있다. NX로 인해 공격자가 버퍼에 주입한 셸 코드를 실행하기는 어렵지만, 스택 버퍼 오버플로우 취약점으로 반환 주소를 덮는 것은 여전히 가능하다. 프로세스에 실행 권한이 있는 메모리 영역은 일반적으로 바이너리의 코드 영역과 바이너리가 참조하는 라이브러리의 코드 영역이다. Return-to-Libc: 공격자는 특정 libc 함수의 주소를 리턴 주소로 설정합니다. 가장 일반적인 목표는 system 함수로의 실행 흐름을 변경하는 것이며, 이를 통해 임의의 시스템 명령을 실행할 수 있다. 예를 들어, 공격자는 system("/bin/sh") 호출을 통해 셸을 획득할 수 있다. Dreamhack 실습코드 // Name: r..

시스템 해킹과 보안 분야에서 "PLT(Procedure Linkage Table)"와 "GOT(Global Offset Table)"는 주로 동적 링킹을 지원하는 시스템에서 사용되며, 실행 시간에 함수와 변수의 실제 주소를 결정하는 역할을 한다. 여기서 동적 링킹이란 프로그램이 실행되는 동안 필요한 코드나 데이터를 다른 파일로부터 불러와 연결하는 과정이다. PLT(Procedure Linkage Table) PLT는 동적 링킹을 사용하는 프로그램이 외부 함수를 호출할 때 사용하는 테이블이다. 예를 들어, 어떤 프로그램이 C 라이브러리의 printf 함수를 호출하려 할 때, 해당 프로그램의 실행 파일 자체에는 printf의 실제 코드가 포함되어 있지 않다. 대신, 실행 시간에 동적 링커(dynamic li..

NX (No eXecute) NX는 실행 금지 비트라고도 하며, 특정 메모리 영역에 실행 권한을 부여하지 않아 공격자가 악의적인 코드를 그 영역에 삽입하고 실행하는 것을 방지하는 기술이다. 스택이나 힙과 같이 데이터를 저장하는 용도로 사용되는 메모리 영역에서 코드 실행을 금지하여, 버퍼 오버플로우 공격을 통한 악성 코드 실행을 막는다. 위 사진과 같이 vmmap을 통해 어느 스택 주소에 실행권한이 있는지 없는지 판별할 수 있다. NX의 또다른 명칭 인텔 AMD ARM 윈도우 XD(eXecute Disable) NX DEP(Data Execution Prevention XN(eXecute Never 명칭만 다를 뿐 모두 비슷한 보호 기법이다. 5.4.0 미만 버전 스택 영역 뿐만 아니라 힙, 데이터 영역 ..

Stack Cnanary란? Stack Canary는 스택 버퍼 오버플로우 공격을 탐지하고 방지하기 위해 사용된다. 이 기술은 '카나리아'라는 새에 비유되는데, 과거에 광부들이 가스 누출을 감지하기 위해 새를 채굴장에 가져갔던 것에서 유래한다. 마찬가지로, 스택 카나리는 메모리의 특정 부분에 의도적으로 배치된, 변경되면 안 되는 값(카나리 값)으로, 스택 버퍼의 오버플로우를 감지하는 데 사용된다. 프로그램이 실행될 때, 스택 카나리 값은 스택에 있는 로컬 변수와 반환 주소 사이에 배치된다. 이 값은 실행 동안 불변이어야 하며, 보통 실행 때마다 또는 프로그램이 시작될 때마다 무작위로 생성된다. 공격자가 버퍼 오버플로우를 이용하여 스택의 메모리를 덮어쓰려고 시도할 때, 카나리 값도 변경될 가능성이 높다. ..

Return Address Overwrite Return Address Overwrite는 공격자가 프로그램의 실행 흐름을 조작하기 위해 사용하는 기법 중 하나이다. 이 기법은 주로 버퍼 오버플로우 취약점을 이용하여 실행된다. 버퍼 오버플로우란 프로그램이 데이터를 저장하기 위해 할당받은 메모리 영역(버퍼)을 초과하여 데이터를 쓸 때 발생하는 보안 취약점을 말한다. char buf[0x30]; scanf("%s", buf); buf에 0x28만큼 스택에 할당되었다고 하자. 그런데 scanf는 크기를 얼마나 받을 지 정해놓지 않았기때문에 buf에 0x30보다 많이 넣으면 오버플로우가 일어난다. 이렇게 인덱스의 값이 배열의 크기보다 커지는 현상을 Index Out Of Bound (OOB)라고 하며 OOB취약..

Shell Code란? 셸코드(Shellcode)는 공격자가 취약한 소프트웨어를 이용해 임의의 코드를 실행하기 위해 사용하는 바이트 코드이다. "셸"이라는 용어는 이 코드가 종종 공격자에게 시스템의 셸에 접근을 제공하기 때문에 붙여졌다. 즉, 공격자는 셸코드를 사용해 시스템에 명령을 내릴 수 있는 권한을 얻는다. 셸코드는 다음과 같이 나타낼 수 있다. \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 실행파일에서 호출할 수 있는 부분을 조작할 수 있다면 임의의 셸코드를 넣어서 공격할 수 있다. 셸코드를 직접 만들기 전 프로그램이 어떻게 돌아가는 지 알아 볼 것이다. sysca..