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
- 러닝 스칼라
- deep learning
- 백엔드
- php
- 딥러닝
- Python
- BOF
- flask
- mysql
- 리눅스
- Javascript
- c++
- Web
- 러닝스칼라
- BOF 원정대
- hackerschool
- Shellcode
- c
- 파이썬
- hacking
- 챗GPT
- Scala
- 경제
- 인공지능
- Linux
- ChatGPT
- 웹해킹
- webhacking
- hackthissite
- backend
Archives
- Today
- Total
jam 블로그
[bof 원정대] goblin -> orc (egghunter) 본문
728x90
우리가 풀 문제의 소스이다.
우리가 해야할 과정이다.
1. shellcode 구하기
2. buffer의 리턴값 구하기
컴파일 후 버퍼에 44만큼 아무값을 넣고 리턴값을 \xbf\xbf\xbf\xbf를 넣어줍니다.(48번째 값이 \xbf이면 됩니다.)
[그림 3] buffer의 리턴값 구하기
coredump가 생기긴 했으나 무시하셔도 됩니다.
3. bof 공격
buffer에 20byte의 쓰레기 값과 24byte의 shellcode를 넣고 그 뒤에 buffer의 리턴값을 넣으면 됩니다.
ps. 주소값이 복사한 소스의 파일과 원본 파일의 주소값이 다를수 있습니다. "a"x20 말고 "\x90"x20(nop) 으로 바꾸시고 주소값을 앞뒤로 약간씩 변경하시면 됩니다.
[그림 1]orc.c
소스분석
1. buffer의 크기는 40
2. 인자값은 적어도 하나이상
3. 환경변수 초기화
4. 첫번째 인자값의 48번째 글자는 \xbf 이어야 함.
5. 첫번째 인자값을 buffer에 복사
6. buffer 출력.
여기서는 환경변수에 등록해서 공격할 수 없다. 그래서 환경변수에 넣지 않고 buffer 넣어서 공격할 것이다.
소스분석
1. buffer의 크기는 40
2. 인자값은 적어도 하나이상
3. 환경변수 초기화
4. 첫번째 인자값의 48번째 글자는 \xbf 이어야 함.
5. 첫번째 인자값을 buffer에 복사
6. buffer 출력.
여기서는 환경변수에 등록해서 공격할 수 없다. 그래서 환경변수에 넣지 않고 buffer 넣어서 공격할 것이다.
우리가 해야할 과정이다.
0. bash2
1. buffer 크기인 40byte 보다 작은 shellcode 구하기 (앞에서 쓰던 shellcode는 40byte보다 큽니다.)
2. buffer의 리턴값을 구함.
3. bof 공격
1. shellcode 구하기
구글링하여 24btye 크기인 shellcode를 찾았습니다.
"\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52
\x53\x89\xe1\x8d\x42\x0b\xcd\x80"
2. buffer의 리턴값 구하기
buffer의 리턴값을 구하려면 문제 소스를 복사하여 다음과 같이 한줄 추가해 줍니다.
컴파일 후 버퍼에 44만큼 아무값을 넣고 리턴값을 \xbf\xbf\xbf\xbf를 넣어줍니다.(48번째 값이 \xbf이면 됩니다.)
[그림 3] buffer의 리턴값 구하기
coredump가 생기긴 했으나 무시하셔도 됩니다.
3. bof 공격
1번의 shellcode와 2번의 리턴값으로 공격합니다.
buffer에 20byte의 쓰레기 값과 24byte의 shellcode를 넣고 그 뒤에 buffer의 리턴값을 넣으면 됩니다.
ps. 주소값이 복사한 소스의 파일과 원본 파일의 주소값이 다를수 있습니다. "a"x20 말고 "\x90"x20(nop) 으로 바꾸시고 주소값을 앞뒤로 약간씩 변경하시면 됩니다.
'해킹 > 시스템' 카테고리의 다른 글
[bof 원정대] wolfman -> darkelf (egghunter, buffer hunter, check length of argv[1]) (0) | 2012.03.19 |
---|---|
[bof 원정대] orc -> wolfman (egghunter, buffer hunter) (0) | 2012.03.19 |
[bof 원정대] cobolt -> goblin (small buffer, stdin) (0) | 2012.03.16 |
[bof 원정대] gremlin -> cobolt (small buffer bof) (0) | 2012.03.16 |
[bof 원정대] gate -> gremlin (simple BOF) (0) | 2012.03.16 |
Comments