Study/Wargame
[root-me] PHP - preg_replace()
JY.L
2020. 1. 8. 17:01
반응형
PHP 함수 중 preg_replace() 함수 관련된 취약점 문제를 풀어보겠습니다.
preg_replace() 함수는 문장 내 정규표현식 패턴을 찾아 다른 패턴으로 바꿔주는 역할을 하는 함수이다.
preg_replace("[패턴]" , "[바꿀 패턴]" , "[바꿀 문장]"); << 형식으로 사용한다.
이 함수에서 사용할 수 있는 변경자 중 하나가 /e 인데 이는 replacement 인수에 php 함수를 쓸 수 있도록 허용한다.
문제에 접속해보니 3개의 입력 값을 받는 창이 존재하고 있다.
임의로 a, b, c를 넣어보았다.
Warning이 발생하면서 하단에 에러 메시지가 출력되고 있습니다.
순서대로 /a/e, phpinfo(), a를 입력한다면(flag.php가 아니라 a를 입력해도 가능하다.)
a가 phpinfo()의 반환값으로 변환되어 phpinfo() 함수 실행이 가능하다.
이 문제의 목표인 flag.php를 읽어보자.
system 함수를 이용해서 flag.php를 시도해보았다.
system 함수의 사용이 막혀있어서 해당 명령어 실행이 불가능하였다.
system 함수가 아닌 file_get_contents 함수를 이용해서 flag.php 페이지를 불러왔더니,
flag값이 출력되었다.
반응형