preg_replace가 실행될 때의 인자를 설정할 수 있는 폼이 주어진다.
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.