본문 바로가기
PHP

[PHP] str_replace() 문자열 치환 함수 사용법과 우회 방법

by spareone 2022. 10. 25.

str_replace() 함수는 특정 문자열을 치환하는 함수입니다.

사용 방법은
str_replace([변경 대상 문자열], [변경할 문자열], [해당 문자열]) 입니다.

<?php
$str = "안녕하세요";     // 원본 문자열
echo "변경 전 : ".$str;

echo "<br>";

$edit = str_replace("하세요", "안하세요", $str);  // str_replace() 실행
echo "변경 후 : ".$edit;
?>

해당 예제는 "안녕하세요"를 "안녕안하세요"로 바꾸는 코드입니다.
str_replace() 인수를 보면 "하세요" -> "안하세요" 이렇게 치환됩니다.

[그림 1] 예시 코드 실행 결과

해당 코드의 실행 결과입니다. 치환이 된 것을 볼 수 있습니다.


CTF 문제에서 str_replace()로 문자열 필터링을 거는 경우가 있습니다.
str_replace() 인자에 따라 우회가 가능합니다.

str_replace("admin", "", $str) 이렇게 필터링을 걸어놓았다고 해보겠습니다.

<?php
$str = "admin";     // 원본 문자열
$filter = str_replace("admin", "", $str);
echo $filter;
?>

admin -> 공백으로 치환됩니다.

[그림 2] 예시 코드 실행 결과

결과 페이지에는 [그림 2]처럼 아무것도 뜨지 않습니다.

<?php
$str = "adadminmin";     // 원본 문자열
$filter = str_replace("admin", "", $str);
echo $filter;
?>

원본 문자열을 "adadminmin"으로 설정해 보겠습니다.

[그림 3] 예시 코드 실행 결과

str_replace()를 실행한 뒤 남은 문자열이 재조합되여 admin이 되었습니다.

해당 원리를 이용한 CTF 문제입니다.
https://spareone.tistory.com/45

[CTF] webhacking.kr 24번 Write-Up

webhacking.kr 24번 문제풀이 Write Up 입니다. client ip와 agent 정보가 나오고, 잘못된 IP라고 뜹니다. 소스코드입니다. PHP 영역만 따로 빼서 분석해 보겠습니다. <?php extract($_SERVER); extract($_COOKI..

spareone.tistory.com


'PHP' 카테고리의 다른 글

[PHP] ereg(), eregi() 문자열 검사 함수  (0) 2022.11.01

댓글