Wargame.kr

Web_450

login filtering




계정을 가지고 있지만 정지된 상태라고 합니다.

필터링을 우회 할 수 있는 지 알아보는 문제입니다.




소스를 확인 해 보면 mysql_real_escape_string 함수로 addslash를 하고 있습니다. 이로 인해 single quotation과 같은 sql 문에 영향을 끼칠 수 있는 특수문자는 제한이 되었습니다. sql injection을 이용하지 않고 id가 guest 또는 blueh4g일 때 flag를 출력해 주는 것 같습니다.




소스 아래에 주석으로 blocked 된 계정 정보를 알려주고 있습니다.



guest/guest로 로그인 했을 때의 화면입니다.

your account is blocked라는 메시지를 출력하고 끝나네요. 



여기서 ID 부분에 guest가 아닌 대문자를 추가 해 준다면, 쉽게 우회가 가능합니다.

원리는 MYSQL에서는 대/소문자 구분을 하지 않지만 php에서는 대/소문자를 구분하기 때문에 $id에는 대문자로 입력이 되지만, 쿼리문이 실행 될 때는 guest와 동일한 결과 값이 출력됩니다. 따라서 $id는 guesT이지만, 쿼리의 결과값인 $row['id']는 존재하기 때문에 플래그가 출력이 됩니다.

'Wargame > Wargame.kr' 카테고리의 다른 글

[Wargame.kr] Web_500_fly me to the moon  (0) 2016.05.17
[Wargame.kr] Web_500_DB is really GOOD  (0) 2016.05.17
[Wargame.kr] Web_450_WTF_CODE  (0) 2016.05.17
[Wargame.kr] Web_450_flee button  (0) 2016.05.16
[Wargame.kr] Web_300_QR CODE PUZZLE  (0) 2016.05.16

+ Recent posts