일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 취약점 스캔
- Metasploit
- sql
- 포트스캔
- 모의해킹
- SQLINJECTION
- 해킹도구
- web hacking
- load of sqlinjection
- Hacking
- root권한
- 스캐닝
- 해킹
- 메타스플로잇
- 내부침투
- 취약점분석
- Kioptrix
- 시스템 해킹
- 스캔
- smb
- 해킹툴
- Samba
- 취약점
- 칼리리눅스
- 권한상승
- 암호해독
- 침투테스트
- SQL Injection
- Los
- CTF
- Today
- Total
목록분류 전체보기 (119)
감자 텃밭
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/HCUS9/btrlLvkhDYl/LZ42jK0tvPPKvoXd88Qyw1/img.png)
libc-Database란 보통 시스템해킹(포너블)을 할때 사용하는 유틸리티 프로그램이며, glibc 라이브러리 버전별로 원하는 함수의 주소(offset)를 저장하고 있는 데이터베이스이다. 주로 포너블을 할경우 제공되는 바이너리파일에는 ASLR 메모리 보호기법이 적용되어있다. 이 경우 함수의 주소값을 찾기 힘들며, 변경되는 주소의 오차 범위도 크다. 이럴 경우 libc-Database 를 사용하면 편리하게 주소값을 찾을 수 있다. 보통 리눅스자체에 립시 파일이 존재하지만 해당 리눅스 버전별로 립시파일에 있는 주소는 모두 다르다. 아래 사진을 보면 확인이 가능하듯 특정 바이너리파일을 실행시키면 linker되어 있는 libc파일은 base주소를 정해둔다. 마지막 1.5바이트는 000으로 맞추고 나머지 값들을..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bzM6CO/btrlGdEyDrY/KftSEP6jgHvhK1aR72Whj0/img.png)
RTL-Chining는 RTL기법을 연속해서 사용하는 방식의 기법이다. 본래 RTL 기법에서 함수호출과 파라미터로받아오는 부분 사이에 4바이트 만큼의 더미값을 줬다. 그부분은 해당 호출하는 함수가 종료되고 돌아가 RET 주소라고 설명했다. 이 부분을 이용해서 연속적으로 함수들을 호출하여 프로그램을 제어할 수 있다. RTL기법을 선행학습 하지 않았다면 먼저 보고 오도록 하자. https://hg2lee.tistory.com/65 [시스템] Return-to-Libc (RTL) 해당 기법은 프로그램이 정상적으로 종료되면 돌아갈 주소를 담고있는 RET영역에 메모리에 적재되어 있는 공유 라이브러리 함수의 주소로 변경하여, 해당 함수를 호출하는 방식의 기법이다. 해 hg2lee.tistory.com RTL-Cha..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cD3Hfp/btrlIcFpy5m/rGMPzI3SJbGKX25LKKfcSk/img.png)
해당 기법은 프로그램이 정상적으로 종료되면 돌아갈 주소를 담고있는 RET영역에 메모리에 적재되어 있는 공유 라이브러리 함수의 주소로 변경하여, 해당 함수를 호출하는 방식의 기법이다. 해당 기법은 DIP/NXbit 메모리 보호기법을 우회할 수 있다. 해당 기법은 함수 에필로그를 이해하고 있어야 수월할 것이다. https://hg2lee.tistory.com/60 [시스템] epilogue [에필로그 과정] 함수의 프롤로그가 있다면 에필로그도 있기 마련이죠 이번엔 함수 에필로그에 대해 다뤄보도록 하겠습니다. 우선 프롤로그 과정에서는 push ebp mov ebp, esp 과정을 통해 이루어집니다. 에필로그 과 hg2lee.tistory.com 보통 해당 기법은 RET영역에 system(), execv() 함..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/n1rcM/btrlJNL61Zv/7KJ8EzIRKHNOnysOSaoF0k/img.png)
Return-to-Shellcode 기법은 프로그램이 종료되면 돌아갈 주소가 담긴 RET 영역에 Shell Code가 저장된 주소값을 악의적으로 저장하게하여 프로그램이 종료 되면 RET가 정상적으로 돌아갈 위치로 이동하는 것이 아닌 Shell Code가 저장되 주소로 이동하게 되는방식이다. 해당 기법을 이해하기 위해서는 함수 에필로그 과정을 이해하고 있어야 한다. https://hg2lee.tistory.com/60 [시스템] epilogue [에필로그 과정] 함수의 프롤로그가 있다면 에필로그도 있기 마련이죠 이번엔 함수 에필로그에 대해 다뤄보도록 하겠습니다. 우선 프롤로그 과정에서는 push ebp mov ebp, esp 과정을 통해 이루어집니다. 에필로그 과 hg2lee.tistory.com 에필로그..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Rde2f/btrlFaVmUET/3fnrmQZsk37PN2eaPYvIuk/img.png)
메모리의 원하는 특정 값을 저장할 경우 2가지 방식의 저장 방식을 사용하게 된다. 1. 빅 엔디안(big endian) 2. 리틀 엔디안(little endian) 위의 두 가지 방법을 이용해서 저장하게 된다. 빅 엔디안 방식은 낮은 주소에 데이터의 높은 바이트부터 저장하는 방식이며, 보통 사용자 관점에서 숫자를 사용하는 선형 방식과 같은 방식이다. 즉 메모리에 저장된 순서 그대로 읽을 수 있으며, 이해하기가 쉽다. 리틀 엔디안 방식은 낮은 주소에 데이터의 낮은 바이트 부터 저장하는 방식이며, 빅 에디안 방식의 반대로 거꾸로 읽어 들인다 대부분 x86아키텍처에서 리틀 에디안 방식을 사용하며 이를 인텔포맷이라 부른다. 위 사진과 같이 0xfd806729 라는 값을 메모리에 저장시키기 위해서 빅 엔디안 방식..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eqGxnj/btrlDc7VxJU/Nyoqb8G0ZUmAIsKclzjBB1/img.png)
이번 포스팅에서는 NOP seld기법에 대해 다뤄보도록 하겠다. 우선 NOP이란 어셈블리어 명령어중 하나로 "No Operation"의 약자이다. 프로그램의 실행에 아무런 영향을 주지 않는 명령어이다. 프로그램이 작동중 NOP 명령어를 만났을 시 해당 명령어를 수행하지 않고 무시하고 다음 명령어로 넘어가게 된다. NOP sled는 해당 NOP명령어를 이용한 것으로 고의적으로 프로그램의 실행 흐름을 다음 명령어들로 흘러 보내는 것이다. 해당 기법은 ASLR이 걸려 있어 주소값이 계속 변경되는 환경에서 return-to-shellcode 기법이나 heap Spray형태의 공격 코드들에서 반복구문과 NOP sled를 쓴다. 해당 이유는 임의의 메모리를 참조하게 되면 해당 위치에 무조건 악의적인 행위를 실행 하..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cjAXjO/btrlDvTDVpe/spbr0VqkoWV1lq27WpKjf1/img.png)
시스템 해킹(포너블)을 하다보면 PLT, GOT 어디선가 들어봤고, plt, got 라고 불리우는것들을 막 호출하고 변조하고 할겁니다. 이번에는 이러한 plt와 got가 뭔지에 대해 알아보도록 하겠습니다. 보통 함수가 실행되면 plt 주소로 찾아가고 plt에는 got의 주소가 담겨져 있어 got를 참조하고 got에는 함수의 실제주소가 담겨져있다고들 설명한다 그럼 대체 왜 plt는 got를 참조하는거지? 바로쓰면 안되는건지 왜이렇게 왔다갔다 하는지 알아보도록 하겠습니다. 우선 PLT와 GOT의 의미부터 알아보도록 하겠습니다. PLT : 외부 프로시저를 연결해주는 테이블. GOT : PLT가 참조하는 테이블. 프로시저들의 주소가 들어있음. 여기서 프로시저란 무엇인가?? 프로시저 : 매개변수는 존재하지만 반환..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bqZlIL/btrlnUl7lB1/KR5bK8knedUnMfqXyBk8dk/img.png)
함수의 프롤로그가 있다면 에필로그도 있기 마련이죠 이번엔 함수 에필로그에 대해 다뤄보도록 하겠습니다. 우선 프롤로그 과정에서는 push ebp mov ebp, esp 과정을 통해 이루어집니다. 에필로그 과정에서는 2가지로 나뉘어 진행되게 됩니다. 우선 코드를 보시게 되면, 마지막에 leave ret 로 구성 되어 있는대 저 두개의 과정을 거치게 되는것이 에필로그입니다 우선 leave 부터 살펴보도록 하겠습니다. "leave" mov esp, ebp pop ebp leave는 위와 같은 구조로 되어있습니다. mov를 통해 esp와 ebp의 위치를 같게 만들어 스택 상태를 정리해준다고 보시면 됩니다. 즉 스택에 존재하던 지역변수들을 정리해주는 과정입니다. 그 후 pop ebp를 통해 스택에 가장 위에 있던 ..