@22번 문제
Blind Injection 문제로 자신있었던 문제이다. :)
(22번 문제)
(문제 화면)
문제 화면을 보면 필터링 되고있는 단어들을 보여주고 있다.
먼저 id에 입력되는 값이 numeric인지 string인지 체크하기 위하여
주석을 사용해보았다.
(여기서 이 사이트가 내가 풀던 사이트랑 조금 다른데? 라고 느꼈던 부분이 있는데
DB를 MsSQL을 쓰는 것 같았다.)
MySQL에서 #이 주석으로 먹혔는데 여기서는 #이 주석으로 먹히지 않았다.
그래서 주석 -- 를 사용했다. 다행히 --은 필터링 하지 않았다.
(주석 이용)
주석만 사용했을 때 에러가 났고 이로써 numeric이 아니라 string인 걸 확인 할 수 있었다.
즉 쿼터로 닫아주고 다시 -- 주석처리를 해주니
(OK admin)
admin으로 로그인이 되었다.
이제 여기서 admin의 비밀번호를 찾으면 되는데
여기서 DB가 MsSQL이라는 것에 확신이 간 계기가 있었다.
MySQL에서 사용하던 함수들이 먹히지 않는 것들도 있다는 것이다.
예를들어 아래 Length() 함수가 MsSQL에서는 Len()으로 사용되는데 이러한 차이가 있었고
다시 찾아보면서 Injection하느라 조금 시간이 걸렸다.
DB별로 미묘한 차이들이 있으므로 정리해 둘 필요가 있는것 같다.
다시 문제로 돌아와서 먼저 비밀번호의 길이부터 구했다.
(Injection)
확인해보니 9보다 크고..
(Injection)
길이는 10글자였다.
이제 한글자씩 찾으면 된다.
물론 손으로 찾기는 힘드니 파이썬을 이용했다.
ascii나 hex, ord 가 가능했다면 손으로도 금방 찾긴했을테지만
전부 필터링 되어있으니
직접 하나하나 체크하는 수 밖에 없다.
(코드 작성)
코드 작성 후
돌려준다. :)
(문제 해결)
이렇게 문제를 해결했다. :)
'WarGame > SuNiNaTaS' 카테고리의 다른 글
SuNiNaTaS : Challenge WEB 23 (0) | 2017.03.30 |
---|---|
SuNiNaTaS : Challenge WEB 8 (0) | 2017.03.29 |
SuNiNaTaS : Challenge WEB 6 (0) | 2017.03.28 |
SuNiNaTaS : Challenge WEB 5 (0) | 2017.03.27 |
SuNiNaTaS : Challenge WEB 4 (2) | 2017.03.23 |