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

BELATED ARTICLES

more