일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 칼리리눅스
- 내부침투
- 취약점 스캔
- Metasploit
- CTF
- 스캔
- 메타스플로잇
- web hacking
- 해킹툴
- Los
- SQLINJECTION
- 해킹
- Kioptrix
- load of sqlinjection
- sql
- smb
- 취약점분석
- 권한상승
- Hacking
- 포트스캔
- 해킹도구
- 모의해킹
- SQL Injection
- root권한
- 침투테스트
- 암호해독
- 시스템 해킹
- 스캐닝
- 취약점
- Samba
- Today
- Total
목록전체 글 (119)
감자 텃밭
영화나 웹툰등 시작할떄 플롤로그와 에필로그가 있듯 함수도 실행이 되면 플로로그 과정과 에필로그 라고 불리는 과정이 존재한다 이번에는 프롤로그 과정에 대해 알아보도록 하겠다. 우선 플롤로그는 실행되에 해당 함수의 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 [파일명] - 해당 명령어로 해당 파일의 섹션값들을 보여줌
ASLR이란 특점 프로그램에서 스택, 힙, 공유라이브러리들의 메모리 주소를 랜덤화 즉 실행시킬 때 마다 주소값이 바뀌게 하는 메모리 보호 기법이다. 해당 기법이 걸려있을 때 우회 방법은 대표적으로 아래의 2가지 방법이다. 1. "A" 또는 "\x90" 사용 - 더미값으로 불리며 프로그램에 아무런 영향을 끼치지 않고 eip를 다음 명령어로 넘김. 그러므로 버퍼안에 더미값을 충분히 채워놓은 후 뒤쪽에 쉘코드를 삽입하여 프로그램이 랜덤한 주소로 리턴하거나 점프해도 더미값 안에 eip가 떨어질 확률을 높히는 것 여러개의 더미값 중 한군데에만 떨어져도 eip는 더미값을 타고 끝까지 가서 쉘코드를 실행시키기 때문 하지만 버퍼의 크기가 작으면 대량의 더미값을 넣을 공간이 부족할 수 있음. 2. 반복 실행 - 더미값을..
이번에 풀어볼 문제는 pwning라는 문제이다 제목으로는 어떤 문제인지 추측이 불가능하니 해당 문제를 우선 실행시켜보자. 높은 수를 입력하게 되면 크다고 하고 종료되고 작은 수를 넣으면 통과되어 한번 더 입력을 받도록 되어있다. 해당 프로그램의 메모리 보호기법을 확인해보자. NX가 걸려있다. 쉘코드작성은 불가능할 것이고, IDA를 통해 상세 확인을 해보도록 하자. MAIN함수에서는 특별한 걸 발견할 수 없었다 바로 vuln함수를 호출하는 듯하다 해당 함수를 확인해보자. nptr이라는 변수의 크기를 32로 지정해놓고 get_n이라는 사용자 정의함수로 nptr에 입력을 받는 듯하며 해당 입력값을 v2변수에 넣고 해당 변수가 32이상일 경우 크다는 내용 추려과 함께 종료되며, 그렇지 않을 경우 한번 더 입력받..
해당 문제는 함께 제공되는 소스코드 또는 아래와 같다. 별 내용 없이 시스템 함수가 실행된다. 해당 문제를 해결하기위해서 사용한 방법은 2014년 발표된 bash의 취약점인 shellshock를 활용했다 shellshock란 환경변수에 함수를 저장하고 서브 쉘로 변경 시 함수 부분 뒤에 이어 나오는 문자열을 명령어로 인식하고, 필터링 없이 실행되는 취약점이다. 즉 아래와 같이 환경변수를 만든 후 shellshock함수에 존재하는 시스템 함수로 bash를 실행시켜 서브 쉘로 변경될 때 해당 함수 뒤에 나오는 명령어를 실행시켜 플래그를 획득할 수 있다. 해당 문제는 export가 아닌 env함수로도 해결할 수 있다. 위의 함수 제작에서 :은 1 즉 무조건 참임을 의미한다. 결론은 flag라는 환경변수에 함수..