https://dreamhack.io/wargame/challenges/336/
I have accounts. but, it's blocked.
can you login bypass filtering?
Abstract
MySQL이 대소문자를 구분하지 않는 특성을 이용하여 로그인 필터링을 우회하는 문제입니다.
Analysis
접속하면 로그인 창이 뜹니다. get source를 눌러서 서버의 코드를 확인할 수 있습니다.
mysqli_real_escape_string()
을 이용하여 SQL injection을 방어하고 있습니다. 아이디에 입력한 값이 guest
와 blueh4g
이 아니면서 로그인에 성공한 경우, 플래그를 획득할 수 있습니다.
Exploit
로그인 결과를 확인할 때, 쿼리의 실행 결과로 나온 아이디가 아니라 사용자가 입력한 아이디로 검사합니다. MySQL 쿼리에서는 대소문자 구분이 없기 때문에, Guest
로 요청해도 그 결과로는 데이터베이스에 존재하는 guest
가 나오게 되어 로그인에 성공합니다.
따라서 아이디에 Guest
를 넣고 패스워드에 guest
를 넣으면 플래그를 획득할 수 있습니다.
728x90