ROOTME] preg_replace()

노션으로 옮김·2020년 3월 7일
0

wargame

목록 보기
13/59
post-thumbnail

문제


preg_replace가 실행될 때의 인자를 설정할 수 있는 폼이 주어진다.


풀이

e modifier

php document - modifier

If this deprecated modifier is set, preg_replace() does normal substitution of backreferences in the replacement string, evaluates it as PHP code, and uses the result for replacing the search string.

e modifier가 설정될 경우, replacement의 문자열이 PHP코드로서 실행이 되고, 그 결과가 replacement로 contents에 삽입된다.

익스플로잇

패턴을 '/.*/e'처럼 e modifier가 사용되도록 설정한 후에, replacement를 flag.php를 읽을 수 있도록 명령어를 설정해주면 되겠다.

system('flag.php')를 입력해봤으나, system함수가 보안설정으로 막혀있었기 때문에 include('...filter...resource=flag.php)의 페이로드로 flag.php를 확인했다.

주의할 점

e modifier는 악용소지가 크기 때문에 PHP 5.5 이후로 사용되지 않는다고 한다.

php document - modifier

Warning

This feature was DEPRECATED in PHP 5.5.0, and REMOVED as of PHP 7.0.0.

0개의 댓글