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
- hackerschool
- hackthissite
- Linux
- deep learning
- Shellcode
- c++
- mysql
- 인공지능
- 경제
- 파이썬
- Web
- Python
- php
- hacking
- 러닝스칼라
- BOF 원정대
- Scala
- ChatGPT
- 챗GPT
- 러닝 스칼라
- 웹해킹
- 딥러닝
- flask
- webhacking
- Javascript
- 리눅스
- BOF
- c
- 백엔드
- backend
Archives
- Today
- Total
jam 블로그
[bof 원정대] gate -> gremlin (simple BOF) 본문
728x90
bof를 기본적으로 공부할 수 있게 해주신 해커스쿨께 감사의 인사를 드립니다. ^^
gremlin의 파일을 bof 시켜야 하는데 gremlin파일의 소스코드는 다음과 같습니다.
[그림 1] bof 원정대 입구~
gremlin의 파일을 bof 시켜야 하는데 gremlin파일의 소스코드는 다음과 같습니다.
[그림 2] gremlin.c
소스분석
1. 인자값이 적어도 하나 이상이 되어야한다.
2. buffer의 크기는 256이며 첫번째 인자값을 buffer에 복사합니다.
3. buffer를 뿌려줍니다.
bof 할 방법은 환경변수에 shellcode 올려놓고 그것을 불러와서 실행하는 방법으로 할 생각입니다.
우리가 해야할 일은 다음과 같습니다.
0. bash2로 실행시키세요 (콘솔에 bash2를 치고 시작합니다. bash에 버그가 있다고 하네요)
1. shellcode 생성(또는 검색 후 가져오기)
2. shellcode를 환경변수에 올리기
3. 환경변수의 주소 알아내기
4. 주소를 바탕으로 bof시 불러오기
1. shellcode를 생성 또는 검색해서 가져옵니다. shellcode는 다음과 같습니다. 생성 방법은 추후에 공부하고 글을 작성하겠습니다.
"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80"
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh"
2. 환경변수에는 shellcode를 넣습니다.
[그림 3] 환경변수에 shellcode 입력
3. 환경변수의 주소를 알아내기
2번 처럼 환경변수를 제대로 넣었다면 환경변수명 shellcode가 메모리 어디에 올라가있는지 주소값을 얻어야합니다. 다음 소스는 환경변수의 주소값을 보여주는 소스입니다.
[그림 4] 환경변수 주소값 받아오는 소스[그림 5] 컴파일 후 shellcode 환경변수 주소값 가져오기.
4. 주소를 바탕으로 bof 공격하기
[그림 6] bof 공격
gremlin 파일에 perl 스크립트로 A를 260 넣고 그 다음에 shellcode 환경변수의 주소값을 순서 거꾸로 해서 넣습니다. (거꾸로 넣는 이유는 redhat은 little endian 이므로)
공격이 제대로 되었다면 bash$이 떨어질것이고 id 쳐서 권한이 올라갔는지 보고 my-pass로 다음 레벨의 암호를 보면 됩니다.
gremlin 파일에 perl 스크립트로 A를 260 넣고 그 다음에 shellcode 환경변수의 주소값을 순서 거꾸로 해서 넣습니다. (거꾸로 넣는 이유는 redhat은 little endian 이므로)
공격이 제대로 되었다면 bash$이 떨어질것이고 id 쳐서 권한이 올라갔는지 보고 my-pass로 다음 레벨의 암호를 보면 됩니다.
'해킹 > 시스템' 카테고리의 다른 글
[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 원정대] goblin -> orc (egghunter) (0) | 2012.03.19 |
[bof 원정대] cobolt -> goblin (small buffer, stdin) (0) | 2012.03.16 |
[bof 원정대] gremlin -> cobolt (small buffer bof) (0) | 2012.03.16 |
Comments