뉴비에욤
Webhacking.kr 13번 본문
빈 칸에 입력하면 "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