Dreamhack/Dreamhack Wargame (Challenge)

[33] IT 비전공자 [dreamhack]Path Finder문제 풀기

imaginefuture-1 2024. 10. 12. 08:48

 

33번째 문제다 가보자굿

 

ssh로 접속인 것 같다

 

 

일단 문제 파일을 ida로 디컴파일했다

 

IDA(Interactive DisAssembler)는 리버스 엔지니어링 및 맬웨어 분석 분야에서 널리 사용되는 강력한 디스어셈블러 및 디버거입니다.

IDA 개요

  1. 분해 :
    • IDA는 바이너리 파일(실행 파일, DLL 등)을 어셈블리 언어 코드로 변환합니다. 이를 통해 사용자는 프로그램이 저수준에서 어떻게 작동하는지 분석할 수 있습니다.
    • 여러 아키텍처(x86, x64, ARM, MIPS 등)를 지원하므로 다양한 유형의 바이너리를 분석하는 데 다재다능합니다.
  2. 그래픽 사용자 인터페이스(GUI) :
    • IDA는 사용자가 분해된 코드를 쉽게 탐색할 수 있는 대화형 GUI를 제공합니다.
    • 사용자는 제어 흐름 그래프(CFG)를 보고 프로그램 논리의 흐름을 이해할 수 있습니다.
  3. Hex-Rays 디컴파일러 :
    • IDA에는 어셈블리 코드를 고수준 C 유사 의사코드로 변환하는 디컴파일러(Hex-Rays)가 포함되어 있어 프로그램의 논리를 이해하기가 더 쉽습니다.
  4. 스크립팅 및 자동화 :
    • IDA는 IDAPython을 통한 스크립팅을 지원하여 사용자가 반복적인 작업을 자동화하거나 도구의 기능을 확장할 수 있도록 합니다.
    • 사용자는 스크립트를 작성하여 바이너리를 분석하고, 디스어셈블리를 수정하거나, 보고서를 생성할 수 있습니다.
  5. 디버깅 :
    • IDA는 사용자가 실시간으로 프로그램을 실행하고 분석할 수 있는 디버깅 기능을 제공합니다.
    • 디버거를 감지하고 회피하려는 맬웨어를 분석하는 데 유용한 원격 디버깅을 지원합니다.
  6. 교차 참조 :
    • IDA는 함수, 변수 및 기타 코드 요소에 대한 교차 참조를 자동으로 생성하여 사용자가 프로그램 전체에서 특정 코드가 호출되거나 참조되는 위치를 파악하는 데 도움이 됩니다.
  7. 데이터 구조 및 유형 정의 :
    • 사용자는 사용자 정의 데이터 유형과 구조를 정의하여 바이너리 내에서 사용된 복잡한 데이터를 보다 쉽게 ​​분석할 수 있습니다.
  8. 플러그인 :
    • IDA는 광범위한 플러그인을 지원하여 기능을 강화합니다. 사용자는 기존 플러그인을 설치하거나 직접 만들어 IDA의 기능을 확장할 수 있습니다.
  9. 정적 및 동적 분석 :
    • IDA는 정적 분석(코드를 실행하지 않고 분석)과 동적 분석(제어된 환경에서 코드 실행)을 모두 제공하여 프로그램의 동작에 대한 통찰력을 얻을 수 있습니다.

사용 사례

  • 맬웨어 분석 : 리버스 엔지니어는 IDA를 사용하여 맬웨어를 분석하여 기능을 이해하고, 동작을 탐지하고, 영향을 완화할 수 있는 방법을 찾습니다.
  • 취약성 연구 : 보안 연구원은 IDA를 사용하여 바이너리를 분석하여 소프트웨어의 취약성을 찾습니다.
  • 펌웨어 분석 : IDA는 종종 내장된 장치의 펌웨어 이미지를 분석하는 데 사용되며, 이를 통해 연구자는 취약성을 발견하거나 프로토콜을 역엔지니어링할 수 있습니다.

결론

IDA는 리버스 엔지니어링이나 보안 연구에 참여하는 모든 사람에게 필수적인 도구입니다. 강력한 기능과 유연성으로 초보자와 숙련된 전문가 모두에게 적합합니다. 특정 질문이 있거나 IDA의 특정 측면에 대해 자세히 알고 싶다면 언제든지 물어보세요!

 

 

 

이후 우분투로 가서 ssh@chal로 접속했는데 

비밀번호가 계속 디나이됐다

뭐지 싶어서

 

아하 ssh pwn으로 접속해야하는군요!

 

./chal 을 입력하니

헤에 타다~

 

이걸 어떡하지 싶었는데 질문글들을 보니 환경변수 수정해라는 것 같았다.

어떻게 chal파일 실행하면서 flag를 실행하나요...
넵! setgid에 의해 pwned권한 잠시 획득해서 flag 확인하면 됩니다 그런데 이걸 어떻게 권한을 획득하죠? =환경변수 수정

The PATH Environment Variable

 

The PATH Environment Variable - LinuxForDevices

In all Linux/Unix-like environments, we have the PATH environment variable which tells the shell where to look for executable binaries/scripts when commands

www.linuxfordevices.com

보시다시피, 바이너리는 전체 경로를 사용하지 않고도 명령 서비스를 호출할 수 있습니다. 따라서 실행 파일에 SUID 권한이 있으므로 이를 악용하여 루트 액세스를 얻을 수 있습니다 .

 

이 블로그 글을 보면 중간에 하이재킹(!)해버린다..어마무시하다..

 

https://hyungin0505.tistory.com/76

 

 

[DreamHack] Path Finder #702

처음으로 써보는 워게임 풀이이다. 시작한지 얼마 안 됐는데 시스템 해킹 너무 어렵다ㅜㅜ 이것저것 찾아보면서 하고 있긴 한데 이번 문제는 자료 찾아가면서 혼자서 풀어내서 그냥 기록용이나

hyungin0505.tistory.com

이 블로그에서는 gcc파일을 만들지않고 명령어로 손 쉽게 하이재킹하셨다.

 

 

 

 

id로 확인해보면 pwned 권한을 잠시 획득했다.