[root-me]PHP preg_replace()

e modifier 취약점 문제.

찾아보니까  real world에서는 대부분 패치되어 이용하기 힘든 취약점이라고 한다.

preg_replace함수는 특정 문자열을 필터링할 수 있는 함수인데,

/e 옵션을 넣어주면 "치환되는 문자"부분을 php코드 그대로 해석해준다.

즉, php코드로 실행시킬 수 있다는 말이 된다.

search부분에는 /[0-9]/e 로 /e옵션을 줬고,

replace부분에는 원격 파일을 읽을 수 있는 방법 중 하나인

file_get_contents('flag.php'); 를 입력했다.

content부분에는 숫자 1을 입력해줘서 문자열이 치환되도록 했다.





*fopen함수를 이용해서 읽었을 때는 resource id #2 라는 문구가 출력됐는데,
나중에 좀 더 알아보자.

댓글