강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

blackjack_96님의 프로필 이미지
blackjack_96

작성한 질문수

모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1

[실습9-2] 취약한 로그인 기능을 안전한 로그인 기능으로 구현하기(시큐어 코딩 적용)

str_replace함수의 순서에 따라 오류가 발생하는 원인

작성

·

381

2

$id = str_replace("\\","\\\\",$id);
$id = str_replace("'","\'",$id);
 
이 순서대로 입력을 하면 괜찮은데
 
$id = str_replace("'","\'",$id);
$id = str_replace("\\","\\\\",$id);
 
이 순서대로 입력을 하면 다음과 같은 오류가 발생하는데 원인이 무엇일까요?
 

답변 1

1

크리핵티브님의 프로필 이미지
크리핵티브
지식공유자

안녕하세요.

두번째 변경한 코드의 경우

id 변수 값이 test'  라면

$id = str_replace("'","\'",$id);

코드에 의해 test\' 이렇게 치환이 되고,

$id = str_replace("\\","\\\\",$id);

아래의 코드에 의해 test\\' 이렇게 변경됩니다.

그러면 \ 문자가 \\ 이렇게 사용되면 단순 \ 문자로 처리됩니다. 즉, \ 문자가 이스케이프 처리가 됩니다.

그래서 ' 문자가 이스케이프 처리가 되지 않아서 공격이 가능해집니다.

 

blackjack_96님의 프로필 이미지
blackjack_96
질문자

감사합니다!

blackjack_96님의 프로필 이미지
blackjack_96

작성한 질문수

질문하기