3omh4n
3omh4
3omh4n
  • 분류 전체보기 (65)
    • wargame - system (0)
      • DreamHack (9)
      • FTZ (5)
      • LoB (4)
      • pwnable.kr (1)
    • wargame - reversing (0)
      • DreamHack (5)
    • wargame - web (6)
      • webhacking.kr (3)
      • DreamHack (3)
      • HackCTF (0)
    • CS (21)
      • system (19)
      • reversing (0)
      • Linux (2)
    • python (5)
      • Flask (5)
    • C++ (3)
    • 개인기록 (2)
    • 이거저거 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

태그

  • python
  • BOF
  • ftz
  • pwntools
  • error
  • webhacking
  • langage
  • RELRO
  • Dreamhack
  • hacking
  • Programming
  • hackerschool
  • System
  • systemhacking
  • Devtools
  • ROP
  • LOB
  • Reversing
  • C++
  • flask

티스토리

전체 방문자
오늘
어제
3omh4n
wargame - system/LoB

[LoB] Level3 : cobolt >> goblin

[LoB] Level3 : cobolt >> goblin
wargame - system/LoB

[LoB] Level3 : cobolt >> goblin

2022. 11. 13. 16:56
ID : cobolt
PW : hacking exposed

이번에도 전체적인 흐름은 다음과 같다.

  1. 취약점 찾기
  2. 페이로드 작성
  3. 취약점 트리거 및 비밀번호 획득

이 과정을 잊지말고 leve3을 진행해보자.

1. 취약점 찾기

디렉토리 내에 어떤 파일이 존재하는지 먼저 확인해본다. 이번에도 다음 레벨(goblin)로 setreuid가 설정되어 있는 실행파일 하나와 그 바이너리의 소스코드파일(goblin.c)이 있다. 역시나 다음 할 일은 goblin.c를 보고 취약점을 찾는 일이다.

[cobolt@localhost cobolt]$ nl goblin.c
1 /*
2 The Lord of the BOF : The Fellowship of the BOF
3 - goblin
4 - small buffer + stdin
5 */
6 int main()
7 {
8 char buffer[16];
9 gets(buffer);
10 printf("%s\n", buffer);
11 }

이번에는 작은 버퍼에 gets 함수를 통해 입력을 받고있다. gets함수에서 buffer overflow가 발생할 수 있다!! gets함수는 문자열을 입력 받는 함수이지만, 문자열을 담을 공간의 크기(여기서는 buffer의 크기)와 입력받을 문자열의 크기를 확인하지않고 입력을 받아 buffer overflow가 일어날 수 있다. 그럼 이제 level2의 환경변수를 이용한 방법과 비슷하게 문제를 해결하면 될 것이다. 근데 이번엔 argv로 인자를 전달할 수 없기 때문에 파이프라인(pipeline, |)을 이용해 인자를 전달해준다.

 

2. 페이로드 작성

level1의 환경변수 방법과 동일하다. 자세한 풀이는 다음 글의 2-5를 참고 바란다.

 

[LoB] Level1 : gate >> gremlin

id : gate pw : gate LoB의 문제들은 해당 level의 권한에서 다음 level 권한을 획득하여 다음 level의 비밀번호를 알아내는 방식이다. 그래서 level1의 gate로 접속해 취약점을 찾아 level2의 gremlin의 권한을 획

3omh4.tistory.com

 

 다만, 위의 방식과는 살짝 다르게 argv로 인자를 넘기는 것이 아니라 파이프라인을 이용해 입력값을 넘겨준다. 파이프라인은 한 라인으로 여러 명령어를 실행하는 방법 중 하나로, 앞 명령의 결과가 뒤 명령의 입력값으로 들어가는 특징이 있다. 따라서 python -c로 페이로드를 먼저 실행하고 다음 명령으로 ./goblin을 실행하면 될 것이다.

 

3. 취약점 트리거 및 비밀번호 획득

환경변수 SHELLCODE의 주소

(python -c 'print("\x90"*20+"\x60\xfe\xff\xbf")';cat) | ./goblin

'wargame - system > LoB' 카테고리의 다른 글

[LoB] Level2 : gremlin >> cobolt  (0) 2022.11.13
[LoB] Level1 : gate >> gremlin  (0) 2022.11.05
[LoB] The Load of BoF - 해커스쿨 BoF 환경 구축  (0) 2022.10.31
  • 1. 취약점 찾기
  • 2. 페이로드 작성
  • 3. 취약점 트리거 및 비밀번호 획득
'wargame - system/LoB' 카테고리의 다른 글
  • [LoB] Level2 : gremlin >> cobolt
  • [LoB] Level1 : gate >> gremlin
  • [LoB] The Load of BoF - 해커스쿨 BoF 환경 구축
3omh4n
3omh4n

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.