dalgorithm
달공의 개발기
dalgorithm
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • Back-end (0)
    • Java (11)
    • 자료구조 (7)
    • Network (31)
    • Database (9)
    • Baekjoon Online (24)
    • 클라우드 (6)
    • Android (15)
      • Kotlin (14)
    • AI (27)
      • Machine Learning&Deep Learn.. (27)
    • Web (23)
      • Webhacking (17)
      • WebProgramming (6)
    • 기술면접 (1)
      • JAVA&자료구조 (0)
      • Spring (0)
      • 컴퓨터구조&운영체제 (0)
      • 네트워크 (0)
      • 데이터베이스 (0)
    • CTF 스터디 (15)
    • 대외활동 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 데이터베이스
  • CTF
  • 클라우드
  • cs
  • gcp
  • 웹해킹
  • 네트워크
  • 포너블
  • 코드리뷰
  • db
  • python #백준
  • 머신러닝
  • 인공지능
  • java
  • kotlin
  • 자료구조
  • Guacamole
  • 딥러닝
  • 자바
  • 침입탐지

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dalgorithm

달공의 개발기

[pwnable.kr] 10번_ shellshock 풀이
CTF 스터디

[pwnable.kr] 10번_ shellshock 풀이

2021. 5. 3. 20:35
728x90

포너블 10번 shellshock 문제를 풀어보았다.

 

bash에 대한 충격적인 소식이 있다고 한다.

먼저 ssh로 로그인을 해주었다.

 

./shellshock 라고 입력하면 shock_me라는 문구가 출력되고 별다르게 진행되는 사항은 없었다. 

shellshock.c 파일의 코드를 확인해보았다.

 

uid와 gid만 세팅한 뒤, 시스템에서 출력하는 함수를 호출하고 마친다.

아까 문제에서 bash에 대한 취약점을 다루는 것 같았는데, 일단 코드만으로는 이해가 제대로 되지 않아

셸과 그에 대한 취약점을 확인해보았다. 

 

먼저 코드에 사용된 명령어들을 확인해보았다.

setresuid, setresgid를 shellshock_pwn의 권한으로 부여받는다.

위 두 명령어는 set real, effective and saved user or group ID의 뜻을 가진다.

그리고 나서 시스템출력함수로 bash 쉘을 실행하고 shock_me를 출력한다.

 

셸이란 운영 체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다.

셸(껍데기의 영어 단어)은 사용자와 운영 체제의 내부(커널) 사이의 인터페이스를 감싸는 층이기 때문에 그러한 이름이 붙었다.

 

bash 셸의 취약점 : bash에는 환경변수가 존재하는데, 환경변수에 값이 아닌 함수를 등록하고

bash -c [변수명]과 같이 -c 옵션으로 변수에 등록된 함수를 실행시킬 수 있다. 그 다음으로 bash 쉘의 취약점이다.

 

 bash에는 환경변수가 존재하고 이 환경변수에는 값이 아닌 함수를 등록하고

bash –c [변수명]과 같이 –c 옵션으로 변수에 등록된 함수를 실행시킬 수 있다.

 

즉 변수에 함수를 등록하는 과정을 쉽게 바꾸어 쓸 수 있다는 것이다. 다음을 보자.

 

C언어의 경우 함수에서 실제 수행되는 코드는 중괄호인 { }의 사이 부분만이지만,

bash에서 함수를 실행하기 위한 과정에서 중괄호의 끝인 }와 '사이에 있는 명령과 '뒤의 명령을 실행시키는 버그가 있다.

따라서 이 명령을 수행하게 되면 bash의 취약점에 따라 원래 실행이 되면 안되는 문장이 실행되게 된다.

 

 

env x='() { :;}; echo vulnerable' bash -c "echo test"

 

위 명령어를 통해 bash 취약점을 확인해 볼 수 있다. 

그러면 다음과 같이 실행이 되면 안되는 문장이 실행되게 된다.

 

이를 flag 파일에 적용시켜보았다.

 

flag 출력

위 방법을 통해 /bin/cat flag를 실행해주었더니, 답을 확인할 수 있었다.

 


ko.wikipedia.org/wiki/%EC%85%B8

 

 

728x90

'CTF 스터디' 카테고리의 다른 글

[pwnable.kr] 12번_blackjack 풀이  (0) 2021.05.12
[pwnable.kr] 11번_coin1 풀이  (0) 2021.05.03
[pwnable.kr] 9번_ mistake 풀이  (0) 2021.04.23
[pwnable.kr] 8번_ leg 풀이  (0) 2021.04.23
[pwnable.kr] 7번_input 풀이  (0) 2021.04.05
    'CTF 스터디' 카테고리의 다른 글
    • [pwnable.kr] 12번_blackjack 풀이
    • [pwnable.kr] 11번_coin1 풀이
    • [pwnable.kr] 9번_ mistake 풀이
    • [pwnable.kr] 8번_ leg 풀이
    dalgorithm
    dalgorithm

    티스토리툴바