Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- mysql
- Python
- 러닝 스칼라
- c++
- Linux
- Scala
- 백엔드
- php
- 웹해킹
- Shellcode
- 딥러닝
- 러닝스칼라
- 리눅스
- 인공지능
- hackthissite
- hackerschool
- 챗GPT
- 경제
- BOF
- hacking
- c
- flask
- deep learning
- ChatGPT
- Javascript
- backend
- Web
- 파이썬
- webhacking
- BOF 원정대
Archives
- Today
- Total
jam 블로그
[bof 원정대] vampire -> skeleton (argv hunter) 본문
728x90
문제의 소스를 보자
풀기위한 과정입니다.
1. 심볼릭 링크를 만들수 있는 shellcode 작성 또는 구하기
2. 심볼릭 링크 생성
3. stack 마지막에 들어간 shellcode의 주소값 구하기
심볼릭 링크를 gdb 실행시켜 main+364에 브레이크 포인트를 겁니다.(main+364는 프로그램 종료 바로 직전입니다.)
이제 심볼릭 링크를 원본 파일로 링크 시켜줍니다.
4. bof 공격
nop 값을 많이 넣어준다음 주소값을 변경을 해주면 shell이 떨어집니다.
[그림 1] skeleton.c
소스분석
1. buffer의 크기는 40
2. 인자값은 적어도 하나이상
3. 환경변수 초기화
4. 첫번째 인자값의 48번째의 값은 \xbf
5. 첫번째 인자값의 길이가 48보다 크면 안됨.
6. buffer 초기화
7. 모든 인자값 초기화
소스분석
1. buffer의 크기는 40
2. 인자값은 적어도 하나이상
3. 환경변수 초기화
4. 첫번째 인자값의 48번째의 값은 \xbf
5. 첫번째 인자값의 길이가 48보다 크면 안됨.
6. buffer 초기화
7. 모든 인자값 초기화
풀기위한 과정입니다.
0. bash2
1. 심볼릭 링크를 만들수 있는 shellcode 작성 또는 구하기
2. 심볼릭 링크 생성
3. stack 마지막에 들어간 shellcode의 주소값 구하기
4. bof 공격
1. 심볼릭 링크를 만들수 있는 shellcode 작성 또는 구하기
심볼릭 링크를 만들기 위해서는 shellcode에 \x2f가 있으면 안됩니다. 심볼릭 링크에 쓸수 있는 shellcode입니다.
48byte입니다.(심볼릭링크에 쓸것이기 때문에 buffer 크기를 신경안쓰셔도 됩니다.)
\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6
\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x51\x69\x30\x30\x74\x69\x69\x30
\x63\x6a\x6f\x8a\xe4\x51\x54\x8a\xe2\x9a\xb1\x0c\xce\x81
2. 심볼릭 링크 생성
[그림 2]심볼릭 링크 생성
3. stack 마지막에 들어간 shellcode의 주소값 구하기
여기서 자세한 이유는 모르겠지만 argv가 전부다 초기화 되어도 stack의 마지막에 풀 경로명과 파일명이 들어가 있습니다.
심볼릭 링크를 gdb 실행시켜 main+364에 브레이크 포인트를 겁니다.(main+364는 프로그램 종료 바로 직전입니다.)
이제 심볼릭 링크를 원본 파일로 링크 시켜줍니다.
4. bof 공격
심볼릭 링크 걸어주실때 shellcode 앞뒤로 \x90을 많이 붙여주시는게 좋습니다. 주소값이 원본파일에서 정확하다는 보장이 없게 때문입니다.
nop 값을 많이 넣어준다음 주소값을 변경을 해주면 shell이 떨어집니다.
'해킹 > 시스템' 카테고리의 다른 글
[bof 원정대] golem -> darkknight (sfp or fpo) (0) | 2012.03.22 |
---|---|
[bof 원정대] skeleton -> golem (stack destroyer) (0) | 2012.03.22 |
[bof 원정대] troll -> vampire (check 0xbfff) (0) | 2012.03.20 |
[bof 원정대] orge -> troll (check argc, argv hunter) (0) | 2012.03.20 |
[bof 원정대] darkelf -> orge (check argv[0]) (0) | 2012.03.19 |
Comments