SQLInjection2 로그인 식별/인증 동시 sql문 개행방식 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"; .. 2021. 11. 3. SQL Injection ( 인증 우회 ) 식별/인증 분리방식 이전 글( 식별/인증 동시 방식 )과 다르게 유저가 입력한 아이디에 대한 패스워드를 가져와 코드 안에서 if 문으로 비교하였다. 동시 방식에서 사용했던 ' or '1 , ' or '1 우회방법을 대입해보니 실패 두 번째 참으로 만들고 뒤를 주석 처리해 버리는 ' or 1=1# 그러나 아무 아이디만 넣었을 때와 다르다는 건 아이디에 대해서는 우회가 되는 것 같다. 따라서 추측해보면, 코드 아래에서 if 조건을 우회하려면 단순히 참, 거짓이 아니라 내가 아이디에 임의로 패스워드에 입력할 값을 주입시켜야 할 것 같았다. 지금까지 지식에선 SQL문에 내가 원하는 값을 주입하는 것은 이전 강의에서 들었던 union이 전부였고, 그래서 union을 사용해서 우회해 보았다. 처음에 컬럼의 개수를 파악해 보려고 adm.. 2021. 10. 31. 이전 1 다음