일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 취약점 스캔
- SQL Injection
- 암호해독
- 칼리리눅스
- 취약점
- 스캐닝
- root권한
- Hacking
- 시스템 해킹
- 포트스캔
- 모의해킹
- sql
- SQLINJECTION
- 해킹
- 해킹도구
- load of sqlinjection
- 침투테스트
- 내부침투
- CTF
- Metasploit
- 스캔
- web hacking
- 메타스플로잇
- 취약점분석
- Los
- 권한상승
- Kioptrix
- Samba
- 해킹툴
- smb
- Today
- Total
목록System (31)
감자 텃밭

이번 포스팅에서는 NOP seld기법에 대해 다뤄보도록 하겠다. 우선 NOP이란 어셈블리어 명령어중 하나로 "No Operation"의 약자이다. 프로그램의 실행에 아무런 영향을 주지 않는 명령어이다. 프로그램이 작동중 NOP 명령어를 만났을 시 해당 명령어를 수행하지 않고 무시하고 다음 명령어로 넘어가게 된다. NOP sled는 해당 NOP명령어를 이용한 것으로 고의적으로 프로그램의 실행 흐름을 다음 명령어들로 흘러 보내는 것이다. 해당 기법은 ASLR이 걸려 있어 주소값이 계속 변경되는 환경에서 return-to-shellcode 기법이나 heap Spray형태의 공격 코드들에서 반복구문과 NOP sled를 쓴다. 해당 이유는 임의의 메모리를 참조하게 되면 해당 위치에 무조건 악의적인 행위를 실행 하..

시스템 해킹(포너블)을 하다보면 PLT, GOT 어디선가 들어봤고, plt, got 라고 불리우는것들을 막 호출하고 변조하고 할겁니다. 이번에는 이러한 plt와 got가 뭔지에 대해 알아보도록 하겠습니다. 보통 함수가 실행되면 plt 주소로 찾아가고 plt에는 got의 주소가 담겨져 있어 got를 참조하고 got에는 함수의 실제주소가 담겨져있다고들 설명한다 그럼 대체 왜 plt는 got를 참조하는거지? 바로쓰면 안되는건지 왜이렇게 왔다갔다 하는지 알아보도록 하겠습니다. 우선 PLT와 GOT의 의미부터 알아보도록 하겠습니다. PLT : 외부 프로시저를 연결해주는 테이블. GOT : PLT가 참조하는 테이블. 프로시저들의 주소가 들어있음. 여기서 프로시저란 무엇인가?? 프로시저 : 매개변수는 존재하지만 반환..

함수의 프롤로그가 있다면 에필로그도 있기 마련이죠 이번엔 함수 에필로그에 대해 다뤄보도록 하겠습니다. 우선 프롤로그 과정에서는 push ebp mov ebp, esp 과정을 통해 이루어집니다. 에필로그 과정에서는 2가지로 나뉘어 진행되게 됩니다. 우선 코드를 보시게 되면, 마지막에 leave ret 로 구성 되어 있는대 저 두개의 과정을 거치게 되는것이 에필로그입니다 우선 leave 부터 살펴보도록 하겠습니다. "leave" mov esp, ebp pop ebp leave는 위와 같은 구조로 되어있습니다. mov를 통해 esp와 ebp의 위치를 같게 만들어 스택 상태를 정리해준다고 보시면 됩니다. 즉 스택에 존재하던 지역변수들을 정리해주는 과정입니다. 그 후 pop ebp를 통해 스택에 가장 위에 있던 ..

영화나 웹툰등 시작할떄 플롤로그와 에필로그가 있듯 함수도 실행이 되면 플로로그 과정과 에필로그 라고 불리는 과정이 존재한다 이번에는 프롤로그 과정에 대해 알아보도록 하겠다. 우선 플롤로그는 실행되에 해당 함수의 Stack Frame이 생성되면 가장 먼저 실행되는 순서의 명령어들이다. 우선 해당 함수가 호출되면 Stack Frame가 생성되고, 스택에는 RET와 SFP가 쌓이게 되고 그 후 메모리 어딘가에 존재하는 ebp와 esp가 스택에 쌓이며, 해당 스택의 크기를 지정하게된다. 아래 사진을 이해를 도와보자. 사진과 같이 스택에는 함수 인자 | RET | SFP | 지역함수, 변수 등으로 쌓이게되며 프롤로그 과정을 거치게 된다. 위 사진과 같이 제일처음 PUSH ebp를 한다 즉 스택에 베이스가되는 eb..

What is Stack?? - Stack이란 프로그램이 실행되면 지역변수, 매개변수, 반환값 등이 저장되는 메모리 공간이다. 메모리 구조를 간략하게 설명하게 되면 실제 메모리 구조는 좀 더 복잡하게 되어있지만 간단하게 알고 넘어가자면 위와같이 정의되어 있다. 위의 사진을 보면 알 수 있듯 스택은 높은 주소에서부터 낮은 주소로 흐르며 반대로 Heap 영역은 낮은 주소에서 높은주소로 흐르게되는대 이러한 이유는 운영 체제의 Kernel영역을 절대 침범할 수 없도록 하기 위함이다. 또한 스택과 힙이 마주보게 되어 메모리를 효율적으로 사용할 수 있다. Stack은 LIFO 구조 즉 선입후출 구조로 되어있다. 먼저 들어간 자료가 가장 나중에 나오는 구조이다. 그럼 본격적으로 Stack Frame에 대해 다뤄보도록..
시스템 해킹의 바이너리 해킹이 일어나는 취약점 중 대표적이며 제일 흔한것이 Buffer overflow이다. 여기서 Buffer over flow란 무엇인가? buffer에 할당된 이상의 크기를 입력받아 스택 내에 다른 buffer영역에 침범하는 행위 이다. 이게 무슨 말인가?? buffer와 overflow에 대해 알아보자. Buffer 란? 1. 데이터의 이동을 위해 일시적으로 데이터를 저장하고있는 저장 공간 2. 키보드로 부터 입력받는 장치에 의해 저장되거나 출력하는 장치에 의해 해당 버퍼의 값이 출력됨. Overflow 란? 1. over와 flow의 합성어로 넘친다는 의미를 가짐 그럼 Buffer Overflow는 즉 Buffer의 정해진 크기보다 더 많은 값이 들어와 해당 Buffer가 넘친다..

포너블 문제를 풀며 64bit ROP를 진행할 때 가젯이 부족하거나 없는 경우가 존재한다. [64bit ROP 는 rdi,rsi,rdx 와 같이 순서에 맞는 레지스터가 필요하기 때문] 보통 로컬에서 풀때는 해당 로컬에 립시파일에서 가젯을 찾을 수 있지만 보통 원격에서 문제를 풀 경우 문제와 함께 립시파일을 주지 않으면 립시파일에서 가젯을 찾을 수 없다. 이럴 경우 사용하는 기법이 RTC 이다. RTC란 __libc_csu_init() 함수의 일부 코드를 Gadget으로 이용하는 기법이다. 위 사진과 같이, __libc_csu_init( ) -> _start( ) -> __libc_start_main( ) 를 거쳐서 main( )가 실행된다. 해당 기법을 사용하기 위해서는 2가지의 순서로 나뉘게 된다. 첫..
readelf -s [파일명] - 해당 명령어로 해당 파일의 섹션값들을 보여줌