# 3DUSH3LL ###### tags: `unsolved` ```python= #!/usr/local/bin/python import sys def hook(event, args): if not all([e not in ['subprocess', 'system', 'spawn'] for e in event.split(".")]): print("Bad system call (core dumped)") sys.exit() sys.addaudithook(hook) SOURCE = open(__file__).read() if __name__ == "__main__": assert(sys.version_info[:3] == (3, 8, 5)) print(""" ________ __ ________________ ____ / _/ __ )/ |/ / ____< / __ \/ __ \\ / // __ / /|_/ /___ \ / / / / / / / / _/ // /_/ / / / /___/ // / /_/ / /_/ / /___/_____/_/ /_/_____//_/\____/\____/ """) while True: try: command = input("JohnTitor@IBM5100:~$ ").strip() command.encode('ascii') except EOFError: break except Exception: print(f'/bin/sh: \|/') continue if command == "": continue parts = command.split(" ") if parts[0] == "ls": print("shell.py\tflag") continue if parts[0] == "cat": if parts[1] == "flag": print("cat: flag: I am not here :)") continue elif parts[1] == "shell.py": print(SOURCE) continue else: print(f"cat: {parts[1]}: No such file or directory") continue for bad in ['mro', 'base', '__code__', '__subclasses__', '__dict__', 'import', 'builtins', 'module', 'attr', 'globals']: if bad in command: print(f"{bad}: Permission denied") break else: try: print(eval(command, {"__builtins__": {}})) except Exception: print(f'/bin/sh: {command}: not found') ``` * 這題是 python sandbox escape,打出像是 ```().__class__``` 有東西回來,但他的限制有夠多... * https://hackmd.io/@splitline/BJDtweFLN#