일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 내부침투
- 칼리리눅스
- 권한상승
- Samba
- CTF
- 포트스캔
- 해킹
- sql
- 취약점분석
- SQL Injection
- 해킹툴
- 메타스플로잇
- Hacking
- 취약점
- root권한
- 모의해킹
- 시스템 해킹
- 암호해독
- 스캐닝
- load of sqlinjection
- 해킹도구
- Kioptrix
- 스캔
- 침투테스트
- SQLINJECTION
- Los
- Metasploit
- smb
- web hacking
- 취약점 스캔
- Today
- Total
목록분류 전체보기 (119)
감자 텃밭
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bNndCc/btq5fwz2mhM/PIkufCY9LiTgkRrGHmRm4k/img.png)
HackCTF 내 버퍼가 흘러넘친다!! 이번 문제의 프로그램을 동작을 확인하기 위해 실행시켜보면 name과 input에서 입력을 받는 프로그램이다. 흠.. 일단 gdb로 까 보자 해당 프로그램을 대충 분석해보면 0x14(20byte)의 공간을 스택에 할당하고 read함수와 gets함수로 입력을 받는다 read함수로 입력받는 값은 name변수로 전역 변수임을 알 수 있다 그렇다는 건 스택이아닌 bss영역에 존재한다. 또한 gets에서 버퍼오버플로우를 일으킬 수 있다. 그렇다는건 name변수에 쉘 코드를 삽입하고 input입력값 0x14(20)+sfp(4)를 dummy값으로 채운 후 ret에 name변수의 주소를 삽입하면 될 거 같다. 그럼 이제 payload를 작성하자 이번에는 쉘 코드 대신 pwntool..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b7zjwX/btq434d6kkf/QurkKjXLL27VN8INPMeNH0/img.png)
HackCTF의 Basic_BOF#2번째 문제 해당 프로그램의 동작을 확인하기 위해 실행시켰더니 무언가 입력을 받기를 기다리고 있었다. 임의의 값을 입력했더니..? 하아아아아아앙???.... 흠 마음에 드는 프로그램이군!! 일단 무언가를 입력하면 하아아아아아앙을 출력하는 거 같다 gdb를 이용하여 분석해보자 훔... 별 내용은 없는 거 같다 SUP 함수가 있고 그저 출력해주는 함수이다. 위의 메인코드로 특정값을 입력하면 SUP함수가 실행되어 하아아아아앙이 실행된다. 흠... 이 함수 말고 다른 함수가 숨겨져 있는지 확인해보았다 역시나 의심스러운 shell함수를 발견하였다 이를 확인해보았더니 역시나 시스템 함수를 통해 쉘을 실행시켜주는 함수였다. 그럼 모든 건 해결됐다 ebp-0xc위치에 sup함수의 주소..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/biVBZr/btq44QfzeOR/yNNIdk889rQKr9ohoZDdiK/img.png)
HackCTF의 포 너블 문제 Basic_BOF#1 문제 해당 파일의 동작을 확인하기 위해 실행시켜보았는데 실행시켰을 때 무언가를 입력받기를 기다렸다 입력했을 시 버퍼에 저장하고 해당 버퍼의 주소를 나타낸다고 추측하였다. gdb를 이용해서 분석을 시도해보자!! 흠... 분석을 해보면 일단 처음 ebp-0xc위치에 4030201을 넣고 34번 줄에서 ebp-0x34의 주소를 eax에 넣은 후 fgets의 인자 값으로 받는 걸 볼 수 있다. 또한 86,95,120번 줄에서 비교를 한다 만약 ebp-0xc위치에 deadbeef문자열이 있을 경우 153번의 시스템 함수를 실행시키며 그렇지 않을 경우 177번으로 이동하여 해당 프로그램이 종료된다. 이로서 대충 0x34에서 입력을 받아 fgets의 입력값 인증 취..
ASLR 정의 : 실행 및 호출 할 때 마다 주소가 랜덤하게 바뀌는 기법 - 즉 heap, stack, libc등 주소의 공간이 랜덤하게 바뀜 DEP/NX 정의 : buffer overflow공격에 이용되는 메모리 공간에 있는 코드를 실행 시키지 않는다. - 즉 쉘코드등에 실행 권한을 주지 않는 것 ASCII-Armor 정의 : 라이브러리 함수의 상위주소에 null바이트를 삽입하는 기법 - 즉 인증값없이 쭉 입력받는 함수 gets, scanf, strcpy등과같은 함수들을 통한 공격을 힘들게 만듬 strcpy와 같은 함수들은 null값을 만나면 종료되기 때문 Canary 정의 : buffer와 SFP사이에 buffer overflow를 탐지하기 위한 임의의 데이터를 삽입하는 기법 - 즉 buffer ov..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bCs5eI/btq41mekUi4/o2Wu8xjo5eQ18srSozdGnK/img.png)
이전 gate문제와 동일하게 일단 접속후 ls -l 명령어를 통해 해당 경로에 디렉토리 및 파일을 확인하였다. 역시 같은 내용이다. cobolt 파일과 .c 파일이 존재하였다. 일단 .c파일을 확인하여 해당 실행파일의 소스코드를 확인하였다. 해당 소스코드의 내용은 버퍼에 16바이트를 할당하고 인자값이1개이상이여야하며, 나머지는 이전과 같이 buffer에 인자값을 복사(전달)하고 buffer문자열을 출력한다. gate문제와 비슷하지만 buffer의 크기가 16바이트이므로 쉘코드를 삽입할 수 없다. 해당 버퍼에 크기가 작다면 환경변수를 만들어 환경 변수에 쉘코드를 삽입하면 된다!! 일단 이전과 같이 문제진행을 위해 tmp디렉토리로 이동후 작업을 하였다. my_s라는 환경변수를 설정하고 그 안에 25바이트의 ..
처음 gate로 로그인하여 ls -l을 통해 해당 경로에 존재하는 디렉터리 및 파일을 확인 해당 소스코드의 내용은 1개 이상의 인자를 받아야하며, 그렇지 않을 경우 "argv error"을 출력하고 프로그램이 종료되고, 1개이상의 받았을 경우 해당 인자를 buffer변수로 옮긴 후 해당 문자열을 출력하는 코드라는 것을 알 수 있었다. - 해당 코드의 취약점?이라고 하면 strcpy함수이다 이 함수는 입력값 검증 없이 해당 인자 값을 버퍼에 옮기기 때문이다. 코드 분석을 위해 gdb를 실행하려 하였지만 권한 문제가 발생하여 임시파일을 생성할 수 있는 디렉터리인 tmp파일에 복사하였음 그 후 gdb를 통해 분석을 시도!!! esp를 0x100 (10진수로 변환했을 때 256)256) 크기만큼 늘린 후 인자 ..