python jail 문제이다.

 

nc로 접속하면 아래와 같이 python 코드가 출력이 되고 사용자에게 입력을 받는다.

입력받은 문자열은 필터링을 거치고 exec() 함수로 실행이 된다.

python code

 

python3 버전 이므로 __builtins__ 모듈을 사용하여 내장 객체를 이용할 수 있다.

아래와 같이 dir() 함수로 __builtins__ 모듈에 포함되어 있는 메소드를 볼 수 있다.

 

__dict__ 를 사용하여 dictionary 타입으로 출력 할 수 있다.

 

dictionary 타입으로 변경을 했기 때문에, 위에 나와있는 키 값을 이용하여 payload를 완성 시킨다.

dictionary 타입으로 변경을 하지 않았을 때는, list 타입으로 return이 되므로 indexing 으로 사용하려는 모듈의 위치를 적어줘야 한다. 이러한 귀찮음을 해결하기 위해 dictionary 타입으로 변경한 것이다.

 

 

__import__ 를 이용하여 os 모듈을 불러왔다. 하지만 filter 목록에 __import__ 와 os 가 있으므로 이를 우회 해야한다.

 

filter를 우회하기 위해서는 lower() 함수를 이용한다.

 

os 모듈에는 system 명령어를 실행해주는 system() 함수가 있으므로, 이를 이용하기 위해 __dict__ 으로 변환하여 키 값을 "system" 으로 주면 된다

 

system 함수를 불러왔으므로, ls 명령어를 실행해보자.

'CTF > HackCTF' 카테고리의 다른 글

[HackCTF] - [Misc] 탈옥 write up  (0) 2020.04.26