728x90
반응형
- 문제 페이지를 보면 로그인 화면과 함께 Blind SQL Injection 문제라고 적혀있고, 필터링 키워드들이 적혀있다.
- Blind SQL Injection은 오류가 출력되지 않을 때 사용하는 공격 기법으로, 한 문자씩 알아내며 DB 정보를 알아내는 SQL Injection의 한 종류이다.
- 소스코드를 확인해보면, 게스트 계정 정보가 나와있고, 나는 admin pw를 알아내는것이 목표라고 적혀있다.
- 우선 guest 계정으로 로그인을 해보았다.
- OK guest 라고 문자열이 출력되는 것 외에는 다른점이 보이지 않는다.
- id에는 guest를 입력하고, 뒤에 주석을 달았다. pw는 1234를 넣어보았다.
- guest의 pw는 guest임에도 불구하고 1234로도 로그인에 성공했다.
- 이번에는 id는 admin으로 pw는 위와 동일하게 1234로 시도했다.
- 로그인에 성공했으나 해야 할 일은 admin의 pw값을 찾는 것 이므로 공격을 시도한다.
- 비밀번호 길이를 알아내기 위해서 아래 공격문을 사용했다.
- ?id=admin' and len(pw)<20-- &pw=0
- ?id=admin%27%20and%20len(pw)<20--%20&pw=0
- ?id=admin' and len(pw)=10-- &pw=0 ⇒ pw의 값은 10자리인 것을 확인했다.
- ?id=admin%27%20and%20len(pw)=10--%20&pw=0
- ?id=admin' and len(pw)<20-- &pw=0
- 알아낸 pw 길이를 참고하여 값을 찾아내기 위해 코드를 사용했다.
- 패스워드는 password : N1c3Bilnl) 라고 나왔다.
- 로그인 화면으로 가서 admin / N1c3Bilnl) 를 입력 한 결과 로그인에 성공했다.
- 인증 페이지로 가서 알아낸 pw 값을 입력하면 문제가 풀렸다는 알림창이 뜬다.
728x90
반응형