-
[CrackUs] LEVEL 17[+] Security [+]/CrackUs 2020. 7. 20. 21:39
LEVEL 17!
SQL Injection 교재에서는 16번 문제까지만 다루지만 업데이트되면서 20번까지 늘어났다!
선배님께서 말씀하시길 함정을 많이 파놓았다는데... 한번 시도는 해보자.
더보기이번에는 sleep을 막아놓으셨다.
이전처럼 Good J0b :) 같은 후크도 없고 무엇을 기준으로 비밀번호를 알아내야할까.
이번에도 여전히 Time base!
sleep은 시간을 늦춰주는 함수지만 sleep이 아니더라도 시간을 지연시킬 방법은 있다!
sleep 함수 대채제
Benchmark() : 해당 명령어를 특정 횟수만큼 반복시킨다.
count(*) from Table.columns: 테이블에 있는 모든 쿼리를 조회한후 숫자를 더해서 반환. 테이블의 칼럼 수에 따라 수행시간이 다르다.
(CrackUs사이트는 워게임 실습을 위해 만들어진 사이트라서 아마... 칼럼수가 적을 것같은데 쓸 수 있을지 모르겠다.)
?pw='||if(length(pw)={},benchmark(20000000,MD5('a')),1)%23 쿼리를 삽입하여 MD5해시를 200만번 수행하도록 하였다.
MD5해시는 20만번 수행 시 0.25초의 수행시간이 소요된다고한다.
하지만 이는 작업환경에 따라 상이하니 한번 체크해보았다.
2000만회당 3.6초 정도 소요된다!
이전 까지와 다른 점이 있다면, Post방식으로 입력을 받는다.
실제 상용 서비스에서도 그렇다.
Get방식은 로그인시 계정을 확인 할 수 있고, 변조가 쉬워서 사용되지 않는다.
Post방식으로 로그인을 만들어 놓는 것이 일반적이다.
Login Fail 텍스트를 기준으로 Blind SQL Injection을 실행할 수 있다.
관리자 도구를 열고
위와 같이 추가하여, 로그인 폼을 생성할 수 있다.
'[+] Security [+] > CrackUs' 카테고리의 다른 글
[CrackUs] LEVEL 19 (0) 2020.07.20 [CrackUs] LEVEL 18 (0) 2020.07.20 [CrackUs] LEVEL 16 (0) 2020.07.19 [CrackUs] LEVEL 15 (1) 2020.07.18 [CrackUs] LEVEL 14 (0) 2020.07.18