반응형
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 |