1. 분석
ipaddress 라이브러리
IPv4, IPv6 주소와 네트워크를 생성, 조작 및 운영하는 기능을 제공합니다. 우리가 여기서 중심적으로 봐야 할 것은 IPv6의 표현 방식이 어떻게 되는지를 봐야 합니다.
IPv6는 위와 같이 표현이 되는데 여기서의 중심은 scope_id이다.
IPv6주소는 [IPv6 address]%scope_id로 표현이되고 scope_id는 문자열 타입을 가지게 된다.
참조
https://docs.python.org/3/library/ipaddress.html#module-ipaddress
ipaddress — IPv4/IPv6 manipulation library
Source code: Lib/ipaddress.py ipaddress provides the capabilities to create, manipulate and operate on IPv4 and IPv6 addresses and networks. The functions and classes in this module make it straigh...
docs.python.org
subprocess 라이브러리
새로운 프로세스틑 생성하고, 그들의 입력/출력/에러 파이프에 연결하고, 반환 코드를 얻을 수 있도록 해줍니다.
참조
https://docs.python.org/ko/3/library/subprocess.html#subprocess.check_output
subprocess — Subprocess management
Source code: Lib/subprocess.py The subprocess module allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace seve...
docs.python.org
2. 코드 분석
-ipaddress라는 함수를 사용해서 IP 주소를 받아오는 것을 볼 수가 있습니다.
-만약 받아온 주소가 제대로 된 형태가 아니라면 ‘Invalid IP address’라는 오류 메시지를 출력하게 됩니다.
-제대로 된 형태라면 ping -c 3 [addr] 형태로 cmd에 들어가게 됩니다.
-subprocess는 쉘 명령 등 다른 프로세스를 실행하고 출력 결과를 가져올 수 있게 해주는 것입니다.
-subprocess.check_output을 통해서 cmd를 실행하고 output에 결과 값 줍니다.
-만약 subprocess.check_output이 반환 코드가 0 이 아닐시 'An error occurred while executing the command'라는 오류 메시지를 출력하게 됩니다.
3. Exploit
scope_id에 실행할 명령어를 넣어주고 이것을 host에 넘겨 준다면
이런 식으로 명령어가 잘 실행된 것을 볼 수가 있습니다. 그렇다면 flag 값을 보는 명령어를 넣어주게 되면 flag 값을 찾을 수 있습니다.
'[Dreamhack]wargame > WEB' 카테고리의 다른 글
[Dreamhack] Not-only 문제 (0) | 2025.01.26 |
---|---|
[Dreamhack] CProxy: Inject 문제 (0) | 2024.10.06 |
[Dreamhack] node-serialize 문제 (0) | 2024.09.10 |
[Dreamhack] easy-login 문제 (0) | 2024.09.07 |
[Dreamhack] baby-Case 문제 (0) | 2024.09.03 |