SQL Injection 공격을 하다 보면 뒤를 -- 나 # 으로 주석 처리해서 인증 우회하는 경우가 많다.
하지만 sql 쿼리문을 작성하는 개발자들은 코드의 가독성 때문인지, 성능 때문인지 sql문을 개행(엔터) 처리 해서 많이 작성하곤 한다. 그래서 개행 처리된 로그인 인증에도 인증 우회가 가능한지 알아보기로 했다.
이전의 동시방식에서 개행 처리한 코드
sql 문을 개행 처리해도 쿼리문이 정상 작동하는지 로그인이 잘 되었다.
if ($result = $mysqli->query("select * from member
where id='".$userId."'
and pw ='".$userPw."';")){
while ($row = $result->fetch_object()) {
$Exist = "1";
}
}
인증 우회 테스트 1 ( ' or '1 ) 우회 완료
주석처리가 아닌 sql 문을 참으로 만들어 주는 우회방법은 가능했다.
인증 우회 테스트 2 ( ' or 1=1# ) 우회 성공
sql 문의 뒤를 주석 처리하는 인증 우회 방법 이어서 인지 우회가 불가능했다.
'정보보안 > SQL Injection' 카테고리의 다른 글
BLind SQL Injection (0) | 2021.11.05 |
---|---|
SQL Injection 식별/인증 Hash처리(인증 우회) (0) | 2021.11.01 |
SQL Injection ( 인증 우회 ) 식별/인증 분리방식 (0) | 2021.10.31 |
SQL Injection ( 인증 우회 ) 식별/인증 동시방식 (0) | 2021.10.30 |