SQL Injection (3)

밍기적·2022년 12월 25일
0

웹해킹

목록 보기
14/35

SQL Injection 2에서 AND를 사용한 우회를 사용했습니다

이제 보안 레벨을 올려서 진행했습니다

SELECT * FROM accounts WHERE username='$USERNAME' AND password=' $PASSWORD'

저번에는 password에 변조를 진행했지만 이번에는 username에 입력 값을 우회했습니다

username에 admin#으로 입력해봅니다

SELECT * FROM accounts WHERE username='admin'#' AND password=' $PASSWORD'

비밀번호를 아무 값이나 작성해도 SQL 인젝션이 존재하면 관리자로 로그인이 가능할 것입니다

자동으로 필터링 되어 오류메시지를 보여줍니다

새롭게 username에 정상적인 입력값을 대입합니다

ID : admin
PW : aa' or 1=1#

로 로그인 해봅니다

마찬가지로 로그인 오류가 발생합니다

필터링


오류 메시지에서 보여지는 필터링은 클라이언트 측에서 진행하는 경우와 서버 측에서 진행하는 경우로 나눠집니다

클라이언트 사이드 측에서 진행하는 필터링은 서버로 메시지를 전달하기 전에 입력 내용에 관해 점검 후 서버로 보내집니다

그렇기 때문에 클라이언트 사이드 필터링의 경우 프록시 툴을 이용하여 서버로 보내는 메시지를 변조할 수 있기 때문에 취약합니다

프록시 툴에서 전송하는 패스워드를 변경하여 전송해봅니다

올바른 값을 전송했기 때문에 클라이언트 측에서 오류 검출에 나타나지 않기 때문에 오류 메시지를 보여주지 않습니다

SQL 인젝션이 작동하고 서버 측에서 입력값 검증이 이뤄지지 않는다면 admin으로 로그인이 성공적으로 진행될 것입니다

정상적으로 admin으로 로그인이 된다는 것을 확인했습니다

0개의 댓글