난이도 하 작은따옴표(') 를 삽입하여 데이터베이스의 종류(MySQL)를 확인할 수 있었다. 아이디에 항상 참인 결과를 출력해주는 쿼리 ' or 1=1# 을 삽입해봤다.
비밀번호를 입력하지 않고 아이디에만 쿼리를 입력해도 출력이 되는 것을 확인할 수있다. 해당 페이지는 변수를 따로 입력받지 않고 AND 연산자를 사용하여 아이디와 비밀번호를 출력하는 취약점이 존재해서 결과가 출력되는 것이다.
/var/www/bWAPP /sqli_3.php 위치로 가서 소스코를 확인해 보았다. AND 연산자를 사용하는 것이 보인다.
AND 연산자는 OR 연산자보다 우선순위가 높기 때문에 AND 연산자를 먼저 계산하고 무조건 참이 결과를 가져오는 ' or 1=1# 쿼리문으로 결과가 출력된다. 무조건 참인 결과를 가져오는 쿼리문으로 'heroes' 테이블에 저장된 아이디를 출력한 것이 neo이다.
만약 'heroes'테이블에 다른아이디도 있다는 전재하라면, 어떤 아이디가 존재하는지, 어떻게 불러올 것인지를...
#
beebox
#
loginform
#
SQLInjection
원문 링크 : SQL 인젝션 - Login Form/Hero