일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스캔
- SQLINJECTION
- 포트스캔
- smb
- SQL Injection
- 모의해킹
- 취약점분석
- 암호해독
- 취약점
- 해킹도구
- 스캐닝
- load of sqlinjection
- web hacking
- 취약점 스캔
- sql
- Los
- 내부침투
- 해킹툴
- 시스템 해킹
- Kioptrix
- 해킹
- Hacking
- 메타스플로잇
- Samba
- Metasploit
- 칼리리눅스
- CTF
- 침투테스트
- 권한상승
- root권한
- Today
- Total
목록System (31)
감자 텃밭
우리가 주로 익스플로잇을 하기위해 "leak"한다. 라는말을 들어봤을 것이다. 우선 Memort-leak 즉 leak라 부르는 행위는 메모리의 주소값을 유출시키는 행위이다. 특정한 메모리의 주소를 유출시킬 수 있으며, 인접한 영역의 메모리도 유출시킬 수 있다. 특정 주소의 실제 메모리주소를 알아내어 원하고자 하는 함수의 주소를 얻기위해 사용되며 보통 실제 주소를 얻었을 경우 해당 주소의 offset을 빼서 libc_base 주소를 구해 해당 libc_base 주소에 원하는 함수의 offset주소를 더해 원하고자 하는 함수의 실제 주소를 얻게 된다. 두 가지의 방법이 존재하며. 1. Buffer Overflow를 이용하여, 변수들 사이의 값을 NULL값을 덮어씌워 인접 메모리를 유출시키는 방법 2. Ret..
GOT Overwrite란 기법은 PLT, GOT의 GOT를 조작하여 사용하는 기법이다. https://hg2lee.tistory.com/61 [시스템] PLT 와 GOT [초급] 시스템 해킹(포너블)을 하다보면 PLT, GOT 어디선가 들어봤고, plt, got 라고 불리우는것들을 막 호출하고 변조하고 할겁니다. 이번에는 이러한 plt와 got가 뭔지에 대해 알아보도록 하겠습니다. 보통 hg2lee.tistory.com 해당 기법은 PLT와 GOT는 Dynamic Link 방식에서 공유라이브러리를 사용하는 과정을 이해한다면 쉽게 이해 할 수 있을것이다. 함수가 호출되면 plt를 참조하고 plt는 got를 참조하는대 got에는 함수의 실제 주소가 들어가있다고 했다. 그럼 여기서 plt가 참조하는 got영..
Gadget의 본래의 개념은 프로그램 상에서 코드 조각을 지칭하였으며, 프로그램 내에 존재하는 명령어 조각 이다. 기존 프로그램에 존재하지만 libc파일에도 존재한다. 포너블(시스템 해킹)에서 주로 바이너리해킹에서 가젯을 사용하는경우 ret로 끝나는 연속된 명령어들을 의미하기도 한다. 주로 pop pop pop ret; 형식이며 여기서 pop은 호출된 함수에서 인자를 정리해주는 용도이다. 즉 read(0, buf, 64) 형식의 read()함수를 호출 했을시 인자값이 0, buf, 64 로 3개이므로 3개의 인자를 정리하기위해 pop pop pop를 쓰는것이다 그 후 ret;로 원하는 함수를 다시 한번 호출 할 수 있다. 하는 함수의 인자가 3개 일 경우 : "pop; pop; pop; ret" 호출 하..
libc-Database란 보통 시스템해킹(포너블)을 할때 사용하는 유틸리티 프로그램이며, glibc 라이브러리 버전별로 원하는 함수의 주소(offset)를 저장하고 있는 데이터베이스이다. 주로 포너블을 할경우 제공되는 바이너리파일에는 ASLR 메모리 보호기법이 적용되어있다. 이 경우 함수의 주소값을 찾기 힘들며, 변경되는 주소의 오차 범위도 크다. 이럴 경우 libc-Database 를 사용하면 편리하게 주소값을 찾을 수 있다. 보통 리눅스자체에 립시 파일이 존재하지만 해당 리눅스 버전별로 립시파일에 있는 주소는 모두 다르다. 아래 사진을 보면 확인이 가능하듯 특정 바이너리파일을 실행시키면 linker되어 있는 libc파일은 base주소를 정해둔다. 마지막 1.5바이트는 000으로 맞추고 나머지 값들을..
RTL-Chining는 RTL기법을 연속해서 사용하는 방식의 기법이다. 본래 RTL 기법에서 함수호출과 파라미터로받아오는 부분 사이에 4바이트 만큼의 더미값을 줬다. 그부분은 해당 호출하는 함수가 종료되고 돌아가 RET 주소라고 설명했다. 이 부분을 이용해서 연속적으로 함수들을 호출하여 프로그램을 제어할 수 있다. RTL기법을 선행학습 하지 않았다면 먼저 보고 오도록 하자. https://hg2lee.tistory.com/65 [시스템] Return-to-Libc (RTL) 해당 기법은 프로그램이 정상적으로 종료되면 돌아갈 주소를 담고있는 RET영역에 메모리에 적재되어 있는 공유 라이브러리 함수의 주소로 변경하여, 해당 함수를 호출하는 방식의 기법이다. 해 hg2lee.tistory.com RTL-Cha..
해당 기법은 프로그램이 정상적으로 종료되면 돌아갈 주소를 담고있는 RET영역에 메모리에 적재되어 있는 공유 라이브러리 함수의 주소로 변경하여, 해당 함수를 호출하는 방식의 기법이다. 해당 기법은 DIP/NXbit 메모리 보호기법을 우회할 수 있다. 해당 기법은 함수 에필로그를 이해하고 있어야 수월할 것이다. https://hg2lee.tistory.com/60 [시스템] epilogue [에필로그 과정] 함수의 프롤로그가 있다면 에필로그도 있기 마련이죠 이번엔 함수 에필로그에 대해 다뤄보도록 하겠습니다. 우선 프롤로그 과정에서는 push ebp mov ebp, esp 과정을 통해 이루어집니다. 에필로그 과 hg2lee.tistory.com 보통 해당 기법은 RET영역에 system(), execv() 함..
Return-to-Shellcode 기법은 프로그램이 종료되면 돌아갈 주소가 담긴 RET 영역에 Shell Code가 저장된 주소값을 악의적으로 저장하게하여 프로그램이 종료 되면 RET가 정상적으로 돌아갈 위치로 이동하는 것이 아닌 Shell Code가 저장되 주소로 이동하게 되는방식이다. 해당 기법을 이해하기 위해서는 함수 에필로그 과정을 이해하고 있어야 한다. https://hg2lee.tistory.com/60 [시스템] epilogue [에필로그 과정] 함수의 프롤로그가 있다면 에필로그도 있기 마련이죠 이번엔 함수 에필로그에 대해 다뤄보도록 하겠습니다. 우선 프롤로그 과정에서는 push ebp mov ebp, esp 과정을 통해 이루어집니다. 에필로그 과 hg2lee.tistory.com 에필로그..
메모리의 원하는 특정 값을 저장할 경우 2가지 방식의 저장 방식을 사용하게 된다. 1. 빅 엔디안(big endian) 2. 리틀 엔디안(little endian) 위의 두 가지 방법을 이용해서 저장하게 된다. 빅 엔디안 방식은 낮은 주소에 데이터의 높은 바이트부터 저장하는 방식이며, 보통 사용자 관점에서 숫자를 사용하는 선형 방식과 같은 방식이다. 즉 메모리에 저장된 순서 그대로 읽을 수 있으며, 이해하기가 쉽다. 리틀 엔디안 방식은 낮은 주소에 데이터의 낮은 바이트 부터 저장하는 방식이며, 빅 에디안 방식의 반대로 거꾸로 읽어 들인다 대부분 x86아키텍처에서 리틀 에디안 방식을 사용하며 이를 인텔포맷이라 부른다. 위 사진과 같이 0xfd806729 라는 값을 메모리에 저장시키기 위해서 빅 엔디안 방식..