str_replace() 함수는 특정 문자열을 치환하는 함수입니다.
사용 방법은
str_replace([변경 대상 문자열], [변경할 문자열], [해당 문자열]) 입니다.
<?php
$str = "안녕하세요"; // 원본 문자열
echo "변경 전 : ".$str;
echo "<br>";
$edit = str_replace("하세요", "안하세요", $str); // str_replace() 실행
echo "변경 후 : ".$edit;
?>
해당 예제는 "안녕하세요"를 "안녕안하세요"로 바꾸는 코드입니다.
str_replace() 인수를 보면 "하세요" -> "안하세요" 이렇게 치환됩니다.

해당 코드의 실행 결과입니다. 치환이 된 것을 볼 수 있습니다.
CTF 문제에서 str_replace()로 문자열 필터링을 거는 경우가 있습니다.
str_replace() 인자에 따라 우회가 가능합니다.
str_replace("admin", "", $str) 이렇게 필터링을 걸어놓았다고 해보겠습니다.
<?php
$str = "admin"; // 원본 문자열
$filter = str_replace("admin", "", $str);
echo $filter;
?>
admin -> 공백으로 치환됩니다.

결과 페이지에는 [그림 2]처럼 아무것도 뜨지 않습니다.
<?php
$str = "adadminmin"; // 원본 문자열
$filter = str_replace("admin", "", $str);
echo $filter;
?>
원본 문자열을 "adadminmin"으로 설정해 보겠습니다.

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 |
---|
댓글