티스토리 뷰
포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
55번 문제이다.
초록색 유령이 있다.
마우스를 움직이면 따라온다.
하지만 우린 초록이랑 놀아줄 시간이 없다.
rank를 한번 눌러보자.
rand, id, score순으로 출력되어있는 페이지가 나온다.
맨 밑에 이런 쿼리가 보인다.
데이터 삽입 쿼리인데 마지막 칼럼에 flag값이 들어가 있다.
하지만 웹페이지에서는 해당 부분은 표시가 되어있지 않는 듯하다.
점수 중 하나를 눌러보니 get파라미터로 score을 받는다는 사실을 알 수 있었다.
해당 부분에 취약점이 있는지 살펴보자.
if구문이 삽입되며 참 거짓에 의한 출력이 다르다.
blind sql injection을 사용할 수 있다.
우리는 flag가 삽입된 마지막 칼럼명을 알아내야 한다.
스키마 데이터에 접근하려 시도했지만 select가 필터링당했다.
하지만 방법이 또 있다.
입력값에 따라 출력되는 value가 있다.
따라서 procedure analyse()와 limit을 통해 원하는 칼럼명을 알아낼 수 있다.
procedure analyse()가 제대로 작동한다.
이제 limit을 통해 원하는 값을 찾아보자.
칼럼명을 추출했다.
이제 flag값을 추출해보자.
테스트 결과 ascii와 substr 문자열이 필터링당했다.
문제를 푸는 데는 지장 없다.
ascii -> ord로 우회한다.
substr()-> right(left(column_name,1),1)로 우회한다.
작동한다.
이제 인젝터를 만들어보자.
만들기 전 flag의 길이를 먼저 알아보자.
막일했다.
다시 인젝터를 만들어보자.
검증해보자.
문제 해결
시행착오
1. procedure analyse() 함수는 limit을 사용해 여러 개의 칼럼명을 알아낼 수 있다.// 다만 select 구문에서 조회된 칼럼까지만 불러옴.
'SQL injection > webhacking' 카테고리의 다른 글
webhacking 57번 (0) | 2022.08.21 |
---|---|
webhacking 56번 (0) | 2022.08.21 |
webhacking 54번 (0) | 2022.08.21 |
webhacking 53번 (0) | 2022.08.21 |
webhacking 51번 (0) | 2022.08.19 |
- Total
- Today
- Yesterday
- lord of sql
- 김영한
- 백준 피보나치
- zixem
- 백준 피보나치 수열
- java
- 스프링
- Los
- los 15단계
- 상품을 구매한 회원 비율 구하기 파이썬
- extends
- 코딩테스트 준비
- static
- 프로그래머스
- ys.k
- webhacking.kr
- 김영한 실전 자바 기초
- los 15
- 기술스택
- 상속
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- spring
- 김영한 실전 자바 중급
- 김영한 실전 자바 기본
- samron
- 프로그래머스 상품을 구매한 회원 비율 구하기
- samron3
- 자바
- 백준
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |