뉴비에욤

Webhacking.kr 13번 본문

Webhacking.kr

Webhacking.kr 13번

초보에욤 2015. 8. 15. 23:03

 

빈 칸에 입력하면 "no" 파라미터로 전송 됨

삽질을 좀 해보면 "like", 공백, limit 등이 필터링 됨

 

like 필터링 우회는 "in", 공백 우회는 "%0a" 사용하면 됨

그리고 조건을 참으로 만들면 result 컬럼의 리턴 값이 '1'

 

 

조건을 거짓으로 만들면 result 컬럼의 리턴 값이 '0'

 

리턴 값을 기준으로 인젝션 쿼리의 참/거짓을 판별할 수 있음

 

 

서브 쿼리 사용 여부를 테스트 하기 위해 위 사진과 같이 입력하면 참을 의미하는 '1' 리턴 됨

 

 

힌트를 보면 flag 컬럼을 "prob13password"에서 가져오는데 해당 컬럼의 데이터가 몇개 인지 모름

따라서 개수를 알아보기 위해 "count" 함수를 이용하여 위 사진과 같이 개수가 '1'인지 확인

=> 거짓을 의미하는 '0'이 리턴되기 때문에 flag 컬럼 데이터는 1개가 아님

 

 

이전 count 쿼리에서 비교 숫자를 '2'로 변경하면 참을 의미하는 '1'이 리턴되기 때문에 flag 컬럼 데이터는 2개임

 

 

* 지금처럼 컬럼의 데이터가 복수개인 경우에는 원래라면 limit 함수를 사용하여 제약을 걸 수 있음

* 문제는 limit 함수가 필터링 되기 때문에 다른 방법을 이용해야 함

- group by + having

- group_concat

- max, min 등의 보조 함수

 

 

max,min 함수를 이용하여 첨부된 블라인드 인젝션 쿼리 스크립트를 실행하면 위 사진처럼 결과가 나옴

'Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 15번  (0) 2015.08.15
Webhacking.kr 14번  (0) 2015.08.15
Webhacking.kr 12번  (0) 2015.08.15
Webhacking.kr 11번  (0) 2015.08.15
Webhacking.kr 10번  (0) 2015.08.15
Comments