본문 바로가기

Programming Language/PHP3

[PHP] 비교 연산자 ==, !=, ===, !== php에는 == 연산자와 === 연산자가 존재합니다.차이점은 == 연산자는 값의 일치 여부를 확인하며, === 연산자는 값의 일치 여부와 자료형의 일치 여부를 검사합니다.==의 경우 값의 일치 여부만 검사하기 때문에, 자료형이 다를 경우 대충 변환해 보고 맞으면 true를 반환하게 됩니다.여러 경우를 [그림 1]의 표에서 확인할 수 있습니다.===의 경우 값의 일치 여부와 자료형 일치 여부를 검사합니다. 두 가지 모두 만족해야 true를 반환하므로, 자료형이 다르면 다르다고 취급됩니다.엄격한 검사가 필요할 때 ===를 사용하지 않으면, 의도하지 않은 취약점이 발생할 수 있습니다. 참고– https://www.php.net/manual/en/language.operators.comparison.php– h.. 2025. 4. 30.
[PHP] ereg(), eregi() 문자열 검사 함수 문자열 검사 함수 ereg(), eregi()입니다. 문자열 필터링에 많이 사용되었던 함수입니다. 이 두 개의 함수들은 현재는 사용 불가능한 함수지만, 한 번 정리해 봅니다. (사용 불가능한 이유는 아래에서 작성) 1. ereg() 사용법은 ereg([검색할 문자열], [검사할 문자열]) 입니다. 문자열에 admin이 있는지 확인하려면 ereg("admin", $str) 하면 됩니다. $str에 admin이 있는지 검사하는 코드입니다. admin이 있으면 no hack을 출력하고, 그렇지 않으면 $str을 출력합니다. no hack이 출력됩니다. 다만 ereg()함수는 대소문자를 구별합니다. 위의 예제처럼 Admin으로 바꾼 후 실행을 해 보겠습니다. 필터링되지 않는 모습이 보입니다. 이러한 특성 때문에.. 2022. 11. 1.
[PHP] str_replace() 문자열 치환 함수 사용법과 우회 방법 str_replace() 함수는 특정 문자열을 치환하는 함수입니다. 사용 방법은 str_replace([변경 대상 문자열], [변경할 문자열], [해당 문자열]) 입니다. 해당 예제는 "안녕하세요"를 "안녕안하세요"로 바꾸는 코드입니다. str_replace() 인수를 보면 "하세요" -> "안하세요" 이렇게 치환됩니다. 해당 코드의 실행 결과입니다. 치환이 된 것을 볼 수 있습니다. CTF 문제에서 str_replace()로 문자열 필터링을 거는 경우가 있습니다. str_replace() 인자에 따라 우회가 가능합니다. str_replace("admin", "", $str) 이렇게 필터링을 걸어놓았다고 해보겠습니다. admin -> 공백으로 치환됩니다. 결과 페이지에는 [그림 2]처럼 아무것도 뜨지 않.. 2022. 10. 25.