websec.fr level14 solving
2018. 3. 24. 21:34
이 문제는 RCE를 이용해서 플래그를 얻는 것 같은데, RCE는 어떻게 할지 구상을 했지만 어떻게 풀어야 할지를 모르겠다.
Challenge Analyse
필터링을 보면, 관리자가 안전하다고 여기는 4개의 함수말고는 사용하지 못하도록 되어있다. 또한, 전역변수에 대한 접근이 제한된 것을 볼 수 있다.
PHP function trick?
이런 식으로 "문자열"(); 식으로 함수를 불러올 수 있다.
PHP Array access trick?
Curly brace로도 Array의 Element 에 접근할 수 있다. 이것말고도 current, next 같은 함수를 이용해도 되지만, 이 문제에서는 eval code가 25byte로 길이가 제한되어 있으므로 그런 류의 함수를 사용하는 것은 힘들어 보인다.
RCE POC.
echo $blacklist{562}();
이렇게 입력하게 되면, phpinfo() 함수가 실행된 것을 볼 수 있다. 하지만, 여기서 더 어떻게 해야할지 감이 잡히지 않는다.
system 함수가 막혀있지 않으면 쉽게 풀 수 있었을텐데, system 함수를 포함해서 몇몇 함수들이 막혀있다.
exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file |
이 함수들이 막혀있는데 어떻게 우회해야할지 감이 잡히지 않는다.
이것을 보면 sha1($flag) 하면 된다고 하는데 sha1은 실행시킬 수 있지만, $flag 가 정의된 변수가 아니기 때문에 내가 할 수 있는 것이 무엇이 있는지 의문이 든다.
'write-ups > websec.fr' 카테고리의 다른 글
websec.fr level25 write up (0) | 2018.07.03 |
---|---|
websec.fr level28 write up (1) | 2018.06.28 |
websec.fr level15 write up (0) | 2018.03.21 |
websec.fr level06 write up (0) | 2017.12.11 |
websec.fr level17 write up (0) | 2017.12.11 |