LOS 13번 문제인 bugbear이다!!
아니 근데 무슨 블라인드 SQL만 나옴미까!!!!
이번엔 상당히 많은 것을 필터링한다.
substr, ascii, or, and, like 문자열
0x, '(single quote), =(equals), 공백까지 필터링한다.
띠용-
substr, ascii, or, and는 이전 문제에 사용했던 것들을 사용하면 된다.
0x는 뭘 의미한 건지 아직 잘 모르겠다. 하지만 나는 이거 신경 쓰지 않고 풀었다.
나중에 다시 풀어볼 때 알아봐야겠군.
공백은 딱히 신경 안 써도 된다. 우리에겐 많은 해결법이 있으니!
like는 어떻게 해야할까. 이퀄까지 필터링하니 어떻게 비교를 해야할까.
작은 꺽쇠로 해도 되긴 하다. 만약 50이라면 pw < 51은 참이지만 pw < 50은 거짓이겠지.
물론 이렇게 풀면 하루종일 풀기 때문..
스크립트를 짜도 되긴 하겠지만 상당히 복잡해질 것 같아서 더 쉬운 방법을 사용해야 한다!!
in 함수를 사용해보자.
나는 사용하지 않는 것이지만 딱 봐도 뭔가 있었다.
a in (10, 20, 30) a컬럼 안에 10, 20, 30을 찾아내는 것? 정도로 생각했다.
이쯤하면 이제 풀어볼 수 있을 것 같다.
길이부터 구해보자~!
하나는 주석을 통해서 띄웠다. 밑엔 %0a 문자를 통해 띄웠다!! 아래 것이 그래도 이쁘게 나오니 공백 문자를 사용하기로 하자.
이건 아무래도 한 번 짚고 갈 필요가 있으니 살펴보도록 하자!
select id from prob_bugbear where id='guest' and pw='' and no=1 || id in("admin") && length(pw) in (8) |
일단
id in("admin")을 살펴보자.
id컬럼에 "admin" 문자열이 있느냐! 라고 DB에 물어보는 것이다. 있으면 당연히 해당 컬럼을 반환하겠다.
length(pw) in (8)을 보면 like절처럼 패스워드의 길이를 묻는 것이다!!
이것도 마찬가지로 길이가 8인 것을 알 수 있다..
이제 패스워드를 구해봐야겠다.
띠용-
간과한 것이 있었다..
or 문자열을 필터링한다. 헌데 ord도 자세히 보지 않아도 보인다. 알파벳 or이 들어간다는 것!! 그래서 필터링이 된다..
우리는 아쉬운 마음을 뒤로한 채로...
그냥 해보자.
조금 더 귀찮을 뿐 뽑아내는 데엔 문제가 없었다.
비밀번호는 = '735c2773'
인증 잘 된당
'computer > web hacking' 카테고리의 다른 글
[LOS] prob_assassin (0) | 2018.09.19 |
---|---|
[LOS] prob_giant (0) | 2018.04.30 |
[LOS] prob_darkknight (0) | 2018.04.30 |
[LOS] prob_golem (0) | 2018.04.30 |
[LOS] prob_skeleton (0) | 2018.04.28 |