GOLEM 풀이 입니다.
쿼리를 보면 pw 에 = 와 or and substr 필터링이 걸려있습니다.
or은 || 를 이용해서 우회
and 는 && 를 이요하면 되는데 url 에서 & 는 다른 get 을 넘길 때 사용하므로 %26으로 바꾸셔서 우회하시면 됩니다.
%26은 쿼리 단으로 들어가서 mysql 에서 핵스를 자동적으로 해석 하기 때문에 상관 없습니다.
?pw=1' || id like 'admin' #
?pw=1' || id like 'admin' %26%26 pw like '8%' #
like 함수를 이용해서 블라인드 인젝션을 수행할 것입니다.
like 함수는 특별하게 정규식이 사용 가능합니다.
예를 들면 pw like '1%' 이런 식으로 사용하면 pw 에서 1글자만 비교합니다. 계속 해서 '1a%' 이런식으로 이용하면 됩니다.
이것은 pw 을 길이를 확인하는 것 입니다. length라는 함수를 사용하여 글자 길이를 알 수 있습니다. 한번 해보시면 이해 하실 것 입니다.
length(pw)<8을 하면 Hello admin이 안뜹니다. (<9는 뜸) pw의 길이는 8이 되겠습니다.
python 으로 간단하게 툴을 짜서 돌려 보면서 pw를 추출 할 수 있습니다.
저는 vm 에서 돌렸구여 python3 을 사용 했습니다.
라이브러리는 requests를 사용했습니다.
python 2.7.x 버전이라면 urllib2를 사용하셔도 무방합니다.
python 3.x 버전이라면 urllib
(제가 직접 짠 코드라서 별로입니다. 공부용으로 사용하세요)
python 2.7.x golem
python 3.x
'Study > los' 카테고리의 다른 글
los bugbear (0) | 2017.04.30 |
---|---|
los darkknight (0) | 2017.03.17 |
los SKELETON (0) | 2016.12.18 |
los vampire (0) | 2016.12.18 |
los troll (1) | 2016.12.18 |
댓글