일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Linux
- 리눅스
- 딥러닝
- 인공지능
- 웹해킹
- backend
- flask
- c++
- BOF 원정대
- 백엔드
- c
- 챗GPT
- webhacking
- php
- ChatGPT
- Shellcode
- hacking
- Javascript
- hackthissite
- 러닝스칼라
- Web
- BOF
- 파이썬
- deep learning
- Scala
- 러닝 스칼라
- 경제
- mysql
- Python
- hackerschool
- Today
- Total
목록BOF 원정대 (20)
jam 블로그
다음 문제의 소스 입니다. [그림 1] assassin.c 소스분석 1. buffer의 크기는 40 2. 인자값은 적어도 하나 이상 3. 첫번째 인자값의 48번째 값이 \xbf이면 안됨. 4. 첫번째 인자값의 48번째 값이 \x40이면 안됨. 5. buffer, sfp 초기화 문제 푸는 과정입니다. 1. 리턴, system, exit, /bin/sh의 주소값 구하기 2. bof 공격 1. 리턴, system, exit, /bin/sh의 주소값 구하기 [그림 2] 리턴, system, exit의 주소값 [그림 3] /bin/sh 주소값 2. bof 공격 공격방법은 ret에 도달하면 ret에 있는 주소값으로 넘어가고 그 주소값에 있던 값 4byte를 실행시킵니다. 따라서 ret에 똑같은 ret의 주소값을 한..
다음 문제의 소스를 봅시다. [그림 1] giant.c 소스 분석 1. buffer의 크기는 44 2. /home/giant/assasin 파일에서 연계된(?) library에서 execve의 주소값을 얻어옵니다. 3. libc.so.6의 정보들에서 __execve의 주소값을 받아옵니다. 4. argv[1]의 45번째값부터 4byte를 ret에 복사합니다. 5. ret과 위에서 만든 execve 주소값과 같아야 합니다. 풀기위한 과정은 다음과 같습니다. 0. bash2 1. 소스 복사시 /home/giant/assassin -> /home/bugbear/giant로 변경 2. execve의 주소값 구하기 3. exit의 주소값 구하기 4. /bin/sh의 주소값 구하기 5. argv[0]의 주소값 구하기..
다음 문제 소스입니다. [그림 1] bugbear.c 소스 분석 1. buffer의 크기 40 2. 인자값은 적어도 하나 이상 3. 첫번째 인자값의 48번째의 값은 \xbf 풀기 위한 과정입니다. 여기서는 RTL(return to library)를 사용해서 풀어봅시다. 0. bash2 1. system 함수 주소값 구하기 2. /bin/sh 주소값 구하기 3. bof 공격 1. system 함수 주소값 구하기 [그림 2] system 주소값 구하기 2. /bin/sh 주소값 구하기 [그림 3] /bin/sh의 주소값 구하기 BASE_ADDR에 위에서 구한 system 주소값을 넣어서 컴파일 후에 실행하시면 됩니다. 3. bof 공격 [그림 4] bof 공격 1. 공격문은 다음과 같습니다. [buffer ..
다음은 문제 소스입니다. [그림 1] darkknight.c 소스분석 1. 인자값이 적어도 하나이상 2. problem_child 함수 안에 buffer의 크기는 40 3. problem_child 함수 안에 buffer에 src 복사시의 길이는 41 문제 푸는 과정입니다. 힌트가 있다시피 stack frame point를 사용해서 푸는 문제입니다. 0. bash2 1. problem_child에서 buffer의 주소값 찾기 2. stack frame point을 이용한 bof 공격 1. problem_child에서의 buffer의 주소값을 찾기 buffer의 주소값 구하는건 쉽습니다. gdb를 사용하여 찾아봅시다. (어셈블리어 쪽에 빨간상 위치에 브레이크 포인트 걸려있는 곳입니다.) [그림 2] gdb..
다음 문제 소스입니다. [그림 1] golem.c 소스분석 1. buffer의 크기 40 2. 인자값은 적어도 하나 이상 3. 첫번째 인자값의 48번째값은 \xbf 4. 버퍼의 리턴값을 제외한 버퍼부터 끝까지 초기화 문제를 풀 과정입니다. 0. bash2 1. shared library 만들고 환경변수 등록하기 2. bof 공격 1. shared library 만들고 환경변수 등록하기 [그림 2] 임의의 소스 만든후 shared library로 컴파일 후 LD_PRELOAD 환경변수에 등록 공유라이브러리를 만든 후에 LD_PRELOAD 환경변수에 등록을 하면 프로그램이 시작시 적재가 된다. 2. bof 공격 [그림 3] bof 공격 주소값은 buffer 주소보다 낮아야 하며 \x90값이 많이 넣었기 때문..