일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 해킹툴
- Los
- 메타스플로잇
- 해킹도구
- 스캐닝
- 칼리리눅스
- 시스템 해킹
- smb
- SQLINJECTION
- 내부침투
- web hacking
- Kioptrix
- 취약점
- 모의해킹
- 침투테스트
- load of sqlinjection
- CTF
- Metasploit
- sql
- 취약점 스캔
- root권한
- Samba
- 암호해독
- Hacking
- SQL Injection
- 스캔
- 해킹
- 취약점분석
- 권한상승
- 포트스캔
- Today
- Total
감자 텃밭
Gate 문제 본문
처음 gate로 로그인하여 ls -l을 통해 해당 경로에 존재하는 디렉터리 및 파일을 확인
해당 소스코드의 내용은 1개 이상의 인자를 받아야하며, 그렇지 않을 경우 "argv error"을 출력하고
프로그램이 종료되고, 1개이상의 받았을 경우 해당 인자를 buffer변수로 옮긴 후 해당 문자열을 출력하는 코드라는 것을
알 수 있었다.
- 해당 코드의 취약점?이라고 하면 strcpy함수이다 이 함수는 입력값 검증 없이 해당 인자 값을 버퍼에 옮기기 때문이다.
코드 분석을 위해 gdb를 실행하려 하였지만 권한 문제가 발생하여 임시파일을 생성할 수 있는 디렉터리인
tmp파일에 복사하였음
그 후 gdb를 통해 분석을 시도!!!
esp를 0x100 (10진수로 변환했을 때 256)256) 크기만큼 늘린 후 인자 값을 1개 이상 받았는지 확인 후 에러 출력 등의 기능을 수행하는 어셈블리어 코드들이 보인다. 여기서 중요한 건 버퍼라고 생각했다. 해당 문제는 버퍼오버플로우를 일으켜 버퍼에 쉘 코드를 삽입하여 ret가 돌아갈 주소에 버퍼의 주소를 집어넣게 되어ret가 버퍼의 시작 주소로 찾아가 쉘 코드를 수행하여 쉘을 획득할 수 있다. 해당 코드를 봤을 때 스택에는 bup(256)-sfp(4)-ret(6) bup(256)-sfp(4)-ret(6)으로 되어 있다.
이를 통해 buf+sfp 총 260 크기만큼을 더미 값+쉘 코드를 삽입하고 ret에 버퍼의 주소를 삽입하여 공격하는 방식으로 추측
A를 집어넣어 해당 버퍼의 주소를 확인하였을 때 버퍼의 시작 주소는 0xbffff9280 xbffff928이라는 것을 알 수 있었다.
그리하여 이제 python을 이용하여 payload를 작성하여 인자 값으로 보내었다.
앞의 버퍼와 sfp의 주소를 채우기 위해nop(\x90)을 앞에 100개를 배치하고 그 뒤에 25byte의 쉘 코드를 삽입 나머지 136바이트 만큼 nop(\x90)을 삽입하여 buf+sfp를 덮은 후 ret가 돌아갈 주소에 버퍼의 시작 위치인 0xbffff9280 xbffff928를 넣어 공격한 결과!!!!!!!!!!!!!
성공적으로 공격에 성공하고 쉘을 획득하여 해당 문제의 FLAG를 획득할 수 있었다.
FLAG=hello bof world