티스토리 뷰
포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.
7번 웹페이지다.

단순하다.
소스코드를 보자.

val로 파라미터를 받으며 비어있으면 1로 고정시켜준다.
또한 2, -, +, from, _, =, \s, *, / 가 필터링되어있다.
그리고 쿼리 결과가 2가 되면 문제가 풀린다.
숫자 우회 문제이다.
바로 풀어보자.
val파라미터로 받은 값이 $go 부분에 삽입된다.
하지만 이번엔 2도 필터링되어있기 때문에 url인코딩을 사용할 때도 해당 문자가 포함된 건 사용할 수 없다.
조건에 부합하게 쿼리를 작성해보자.
쿼리 : ?val=5%3

분명히 5%3은 2가 나오는데 쿼리 에러가 뜬다...
무슨 문제인지 찾아보니 테이블에 2에 해당하는 값이 없기 때문이란다.
그리고 union을 사용하여 외부 테이블을 조인시켜 2를 불러와야 한단다.
쿼리를 작성해보자.
val값이 1이면 안되는데, 그 이유는 1에서는 불러오는 데이터가 있기에 비어있는 값이랑 조인을 시키기 위해서 이다.

쿼리 : ?val=5)union(select(5%3)

20 퍼의 확률로 문제를 해결할 수 있다.
그 이유는 rand() 부분에서 5가지의 쿼리 경우의 수가 있다.
우리가 작성한 쿼리의 문법은 rand(1) 일 때 일치하기에 rand(1)이 실행될 때까지 새로고침 해주면 된다.
문제 해결
시행착오
1. select x에서 x값이 없으면 불러올 수 없기에 union을 사용해야 한다.
2. 공백 우회 시 select x 소괄호 공백 처리는 select(x) -> x , (select(x)) -> o 으로 작성해줘야 문법이 맞다.
'SQL injection > webhacking' 카테고리의 다른 글
| Webhacking 9번 (0) | 2022.03.18 |
|---|---|
| Webhacking 8번 (0) | 2022.03.14 |
| Webhacking 6번 (0) | 2022.03.12 |
| Webhacking 5번 (0) | 2022.03.09 |
| webhacking 4번 (0) | 2022.03.08 |
- Total
- Today
- Yesterday
- extends
- 프로그래머스
- 김영한 실전 자바 기초
- 코딩테스트 준비
- 프로그래머스 상품을 구매한 회원 비율 구하기
- 상품을 구매한 회원 비율 구하기 파이썬
- 김영한
- los 15단계
- 백준 피보나치 수열
- lord of sql
- spring
- samron3
- 백준 피보나치
- 자바
- 기술스택
- Los
- webhacking.kr
- ys.k
- samron
- 백준
- 코딩테스트
- 김영한 실전 자바 중급
- 상속
- 김영한 실전 자바 기본
- los 15
- 스프링
- 프로그래머스 상품을 구매한 회원 비율 구하기 파이썬
- static
- java
- zixem
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |