어려움으로 분류된 포너블 문제였으나
대회 특성상(EZ) 그렇게 어렵지는 않은 문제였다.
포너블 문제가 전부 슈퍼마리오와 연관된 내용으로 구성되어 있었는데
첫번째가 파이프라인을 이용한 문제였다면 이번 문제는 Jail Escape 와 관련된 문제이다.
문제 설명에 Help her break out the python is near! 이라고 적혀있는걸 보니
python jail escape 문제인듯 하다.
별다른 바이너리 파일이나 소스코드 없이 원격 접속 주소만 제공이 되고 있다.
nc 명령어를 이용해 위처럼 접속을 할 수 있다.
시험삼아서 hi 라고 입력해봤는데 아무런 응답 없이
>>> 표시만 출력되었다.
참고로 >>> 표시는 파이썬 쉘에서 자주 사용하는 프롬포터이다.
일단 해당 서버 내에 파이썬이 돌아가고 있음을 알 수 있다.
실험삼아서 print(1+1) 이라고 입력해봤더니
연산이 잘 수행되어서 2가 출력된 것을 확인했다.
어떻게 접근해야하나 고민하다가 import, exec 이런 명령어들을 쳐봤지만
서버에서 아무 반응이 없었다.
구글에 좀 검색해보니 pyjail 문제를 풀때는 __builtins__ 를 많이 사용한다고 한다.
built-in 함수라고 해서 파이썬에 기본으로 내장되어 있는 함수들을 접근할수 있도록 해준다고 한다.
print(__builtins__.__import__('os')) 라고 시험삼아 입력해 봤다.
built-in 함수 중, 운영체제 명령어를 실행할 수 있는 os 명령을 가져와 본 것이다.
<module 'os' from '/usr/lib/python2.7/os.pyc'> 라고 출력되는걸 보니
os 명령을 사용할 수 있는것 같았다.
현재 디렉토리 내의 파일 목록을 확인하기 위해 ls 명령어를 사용했다.
print(__builtins__.__import__('os').system('ls')) 라고 입력해 봤더니
flag.txt 파일이 있는것을 확인했다.
이제 이 파일의 내용을 확인하면 된다.
파일의 내용을 출력할 때는 cat 명령어를 사용해주면 된다.
print(__builtins__.__import__('os').system('cat flag.txt')) 라고 입력해주면
플래그를 획득할 수 있다.
'CTF > 포너블' 카테고리의 다른 글
[SharkyCTF] GIVE AWAY 0 - 포너블 / 버퍼오버플로우 / PEDA / IDA / Pwntool (50) | 2022.08.19 |
---|---|
[ImaginaryCTF] ret2win - 포너블 / 버퍼오버플로우 (40) | 2022.07.22 |
[EZCTF] Mario bros! - 포너블 / Bash / Pipe (62) | 2022.05.16 |
[DwagCTF] bof to the top - 포너블 / 버퍼오버플로우 / Pwntool / gdb (28) | 2022.04.17 |
[DwagCTF] Tom Nook the Capitalist Racoon - 포너블 / Pwntool (46) | 2022.04.16 |