21번 - blind sql injection
2020. 10. 15. 01:18
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※
blind sql injection 문제네요.
조금 귀찮지만, 이게 또 은근히 재밌긴합니다.
제일 간단한걸 적어보겠습니다.
어떤 질의를 통한 결과 값을 출력하는 것이 아닌 참/거짓 여부만 알려주는 것 같네요.
비밀번호를 틀렸을 땐 어떻게 될까요?
그저 로그인에 실패했다고만 뜨네요.
없는 아이디 비밀번호로 로그인 시도하면 어떻게 될까요?
똑같이 로그인에 실패했다고 뜹니다.
이제 sql injection을 시작해보겠습니다.
제일 만만한 부분은 아무래도 id겠죠?
guest로 시작해보겠습니다.
오 새로운 결과입니다.
예상되는 쿼리문은 다음과 같습니다.
select id from TABLE_NAME where id = '{}' and pw = '{}'
정확하진 않아도 대략 맞을겁니다.
저렇게 입력 값을 보내게 되면 쿼리문은 다음과 같아집니다.
select id from TABLE_NAME where id = 'guest' and if(true, 1, 0) or '1'='0' and pw = 'ff'
따라서, id는 참 값, 비밀번호는 거짓 값이 되어 비밀번호가 잘못되었다고 나옵니다.
if문을 이용해서 admin 계정의 pw값을 알아보겠습니다.
payload는 다음과 같습니다.
admin' and if(substr(pw,위치,1)="문자",1,0) or '1'='0
파이썬을 이용해서 password를 알아냈습니다.
admin 계정으로 로그인하면,
'[▒] 보안 > webhacking.kr' 카테고리의 다른 글
23번 - POSIX Regex/PCRE Regex (0) | 2020.10.15 |
---|---|
22번 - blind sql injection (0) | 2020.10.15 |
20번 - time out (0) | 2020.10.15 |
19번 - etc. (0) | 2020.10.14 |
18번 - sql injection (0) | 2020.10.14 |