일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 내부침투
- Hacking
- SQL Injection
- 해킹툴
- sql
- SQLINJECTION
- 칼리리눅스
- 메타스플로잇
- 모의해킹
- 스캔
- 취약점
- CTF
- 포트스캔
- root권한
- 스캐닝
- 권한상승
- web hacking
- Los
- 암호해독
- load of sqlinjection
- 취약점 스캔
- 해킹도구
- 침투테스트
- 해킹
- 취약점분석
- Samba
- Kioptrix
- smb
- Metasploit
- 시스템 해킹
- Today
- Total
목록System (31)
감자 텃밭
ASLR이란 특점 프로그램에서 스택, 힙, 공유라이브러리들의 메모리 주소를 랜덤화 즉 실행시킬 때 마다 주소값이 바뀌게 하는 메모리 보호 기법이다. 해당 기법이 걸려있을 때 우회 방법은 대표적으로 아래의 2가지 방법이다. 1. "A" 또는 "\x90" 사용 - 더미값으로 불리며 프로그램에 아무런 영향을 끼치지 않고 eip를 다음 명령어로 넘김. 그러므로 버퍼안에 더미값을 충분히 채워놓은 후 뒤쪽에 쉘코드를 삽입하여 프로그램이 랜덤한 주소로 리턴하거나 점프해도 더미값 안에 eip가 떨어질 확률을 높히는 것 여러개의 더미값 중 한군데에만 떨어져도 eip는 더미값을 타고 끝까지 가서 쉘코드를 실행시키기 때문 하지만 버퍼의 크기가 작으면 대량의 더미값을 넣을 공간이 부족할 수 있음. 2. 반복 실행 - 더미값을..
RTL이란 RET 즉 리턴주소에 함수 공유 라이브러리에 있는 함수들 execv(), system()등의 함수를 불러와 사용할 수 있는 방법이다. RTL방법은 NX메모리 보호기법을 우회할 수 있다. 여기서 NX란 쉽게 설명해서 권한을 없애는것 HEAP, STACK등 메모리상에서 쉘코드등을 이용한 공격코드를 실행하지 못하게 하는것이다. PAYLOAD는 dummy+(ret위치(system()))+dummy(4byte)+/bin/sh 같이 쓰인다. 함수와 인자값 사이에 더미가 들어가는것이 이상하게 느껴질 수 있다. 이는 32bit환경에서 함수가 호출될 때 인자 값을 가지고오기위해 ebp+0x8의 주소에서 가져오기 때문이다.그러기때문에 ebp+0x8위치에 /bin/sh를 넣는다.
[ASLR 해제]sudo또는 root로1. sudo sysctl -w kernel.randomize_va_space=02. sysctl -w kernel.randomize_va_space=0 0 - 해제1 - 랜덤 스택 , 라이브러리2 - 랜덤 스택 , 라이브러리 , 힙 gcc 컴파일시에 메모리보호기법 해제gcc yncflag.c -fno-stack-protector -mpreferred-stack-boundary=2 -z execstack -no-pie -fno-pic -m32
#include int main(int argc, char **argv) { long shell; shell = [system() 함수 주소] while (memcmp((void *)shell, "/bin/sh",8)) { shell++; } printf("\"/bin/sh\" : 0x%x\n", shell); printf("print %s\n", shell); return 0; } long타입 변수 shell을 선언 shell변수에 시스템함수의 주소를 대입 while문을 사용 memcmp함수를 사용하여 shell함수에 존해자는 "/bin/sh"라는 문자열을 null문자포함 8바이트를 비교하며 찾음
core dump - 프로그램이 비 정상적으로 종료 되었을 경우 당시의 메모리 상태를 저장하는 것 (디버깅시 유용하게 사용)
ASLR 정의 : 실행 및 호출 할 때 마다 주소가 랜덤하게 바뀌는 기법 - 즉 heap, stack, libc등 주소의 공간이 랜덤하게 바뀜 DEP/NX 정의 : buffer overflow공격에 이용되는 메모리 공간에 있는 코드를 실행 시키지 않는다. - 즉 쉘코드등에 실행 권한을 주지 않는 것 ASCII-Armor 정의 : 라이브러리 함수의 상위주소에 null바이트를 삽입하는 기법 - 즉 인증값없이 쭉 입력받는 함수 gets, scanf, strcpy등과같은 함수들을 통한 공격을 힘들게 만듬 strcpy와 같은 함수들은 null값을 만나면 종료되기 때문 Canary 정의 : buffer와 SFP사이에 buffer overflow를 탐지하기 위한 임의의 데이터를 삽입하는 기법 - 즉 buffer ov..