반응형

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값이 출력되었다.

반응형

'Study > Wargame' 카테고리의 다른 글

[root-me] NoSQL Injection - Authentication  (0) 2020.03.03
[root-me] File upload - ZIP  (0) 2020.02.12
[root-me] LDAP injection - Authentication  (0) 2020.01.08
[root-me] Remote File Inclusion  (0) 2020.01.08
[root-me] PHP - assert()  (0) 2020.01.02

+ Recent posts