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 | 31 |
Tags
- php
- flask
- 인공지능
- c++
- 러닝스칼라
- 백엔드
- hackthissite
- Web
- hacking
- BOF 원정대
- 러닝 스칼라
- 파이썬
- deep learning
- 웹해킹
- Python
- 챗GPT
- Linux
- 리눅스
- Shellcode
- mysql
- backend
- c
- ChatGPT
- webhacking
- hackerschool
- Javascript
- BOF
- Scala
- 경제
- 딥러닝
Archives
- Today
- Total
jam 블로그
[bof 원정대] giant -> assasin (no stack, no RTL) 본문
728x90
다음 문제의 소스 입니다.
소스분석
1. buffer의 크기는 40
2. 인자값은 적어도 하나 이상
3. 첫번째 인자값의 48번째 값이 \xbf이면 안됨.
4. 첫번째 인자값의 48번째 값이 \x40이면 안됨.
5. buffer, sfp 초기화
문제 푸는 과정입니다.
1. 리턴, system, exit, /bin/sh의 주소값 구하기
2. bof 공격
[그림 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의 주소값을 한번더 넣어주고 바로 다음에 system 함수를 넣으면 RTL 같은 형식이 됩니다.
즉,
[buffer 40byte][sfp 4byte][ret 주소값][system 주소값][exit 주소값][/bin/sh 주소값] 이런식입니다.
RTL은 ret에 직접 system의 주소값을 넣었다면 여기서는 ret에 ret의 주소값을 한번더 넣고 RTL 한다고 보시면 됩니다.
[그림 4] bof 공격
'해킹 > 시스템' 카테고리의 다른 글
[bof 원정대] zombie_assassin -> succubus (calling functions continuously) (0) | 2012.03.29 |
---|---|
[bof 원정대] assassin -> zombie_assassin (FEBP;fake ebp) (0) | 2012.03.27 |
[bof 원정대] bugbear -> giant (RTL2, only execve) (0) | 2012.03.23 |
[bof 원정대] darkknight -> bugbear (RTL1) (0) | 2012.03.22 |
[bof 원정대] golem -> darkknight (sfp or fpo) (0) | 2012.03.22 |
Comments