[PentesterLab] Code Execution 03(php preg_replace)

쥬스몬·2022년 3월 12일
0

PentesterLab

목록 보기
3/20

PentesterLab의 Code Execution 03 문제에 대한 접근 방법을 기록

이번 문제는 아래와 같이 정규식 패턴(pattern)을 입력받아 문자열(base)을 비교해 새로운 문자열(new)로 수정할 수 있는 페이지이다.

특정 값을 입력받기에 에러를 유발시켜 에러 메세지를 확인해보니 preg_replace함수를 사용하고있으며 해당 PHP에서 유명한 RCE가 함수로 해당 함수는 PHP5.5 이후부터는 사용할 수 없다.

그렇다면 어떤식으로 RCE에 연결할 수 있을까? 먼저 preg_replace함수는 다음과 같은 형태를 가진다.
여기서 우리가 눈여겨볼 부분은 $replacement이다. 해당 인자는 정규식 형태로 입력받으며 여기서 /pattern/e 과 같이 e 옵션을 줄 경우 치환될 문자를 php 코드 그대로 해석한다.

테스트 결과 아래와같이 paatern인자에 "//e"형태의 정규식을 전달하여 new인자가 php 코드로 인식된다😨

profile
블로그 이사 (https://juicemon-code.github.io/)

0개의 댓글