WebGoat - SQL Injection (advanced 2)
WebGoat - SQL Injection (advanced 2)
‘tom’ 계정으로 로그인하기
Blind SQL Injection 이란 SQL 쿼리의 참/거짓 결과를 통해 데이터베이스 정보를 파악하는 공격이다.
기존에 사용했던 방법으로는 LOGIN이 되지 않아 REGISTER에서 방법을 찾아보기 위해 ‘test’ 계정을 생성하였다.
같은 ID를 생성하려고 하니 이미 존재하는 계정이기 때문에 생성할 수 없다고 한다. 이는 REGISTER 과정에 SELECT문이 숨어있다는 것을 의미하므로 SQL Injection을 시도해보았지만 통하지 않는다.
Blind SQL Injection을 시도해보니 참/거짓 조건에 따라 결과가 달라지는 것을 알 수 있다.
또한, 해당 테이블에 ‘userid’, ‘password’ 라는 애트리뷰트가 있고, tom의 비밀번호는 23자리라는 것을 확인할 수 있다.
하지만 아래와 같은 방법으로 23자리의 비밀번호에 대해 각각 ‘a’부터 ‘z’까지 비교하며 알아내는 것은 오랜 시간이 걸린다. 하여 Burp Suite의 자동화 툴을 이용하였고 최종적으로 찾은 비밀번호는 ‘thisisasecretfortomonly’ 이다.
LOGIN에서 ‘tom’과 ‘thisisasecretfortomonly’를 입력하니 성공이다.