이번에 풀 문제는 7번!
소스 코드를 보면
2,+,-,from,=,/,*,_,공백이 필터링되어 있고
val 파라미터에 입력값이 없으면 1로 자동 입력되게 되어있다.
또한 1~5까지 랜덤으로 숫자를 생성하여 각 숫자마다 sql문에서 val파라미터를 입력받는 부분의 ()가 하나씩 늘어나게 되어 있다.
문제는 val파라미터에 2가 입력되면 풀리는거 같다.
여기서 우리는 rand가 1일때를 가정하여 문제를 풀 것이다. 다음에 올 수를 예측할 수 없을뿐더러 1이 나올 때까지 돌리는 게 더 빠르다.
일단 val파라미터에 2를 MOD(5,3)으로 우회해서 넣어보면
query error가 출력된다. 즉, 애초에 2라는 데이터 자체가 존재하지 않았다. (query error는 데이터가 존재하지 않을 시 출력된다.)
그러면 우리는 2를 추가해서 출력 해야된다.
61번 문제에서 ALIAS를 사용해 가상의 컬럼을 출력했던걸 떠올릴 수 있다.
하지만 지금 쿼리상 AS를 사용할 수는 없고 UNION을 사용하여 가상의 컬럼을 출력해야겠다.
UNION에 대한 내용은 https://jh-hack.tistory.com/59
[개념정리] UNION
UNION, UNION ALL이란? UNION은 두 개 이상의 select문을 합칠 때 사용하며 각각의 select문의 컬럼 수와 데이터 타입이 같아야 사용할 수 있다. UNION ALL도 두 SQL 문의 결과를 결합하는데 사용되는 명령이다
jh-hack.tistory.com
UNION을 사용해서 가상의 컬럼을 어떻게 만드느냐
이 테이블은 제가 만든 웹사이트의 게시판을 저장하는 테이블로, 간단한 테스트를 해보겠다.
여기서 쿼리문을 SELECT * FROM `topic` UNION SELECT 1,2,3,4,5;을 입력해 보자
아래 1,2,3,4,5가 입력된 게 보이는가?
이처럼 존재하지 않는 값을 추가해 출력할 수 있다.
이를 이용해서 문제를 풀어보면
345)UNION(select(MOD(5,3))을 입력해 보면 -> 공백이 필터링되어 있으므로 띄어쓰기를 ()로 대체했다.
'Web > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr Challenge old-51 문제 풀이 (0) | 2024.01.31 |
---|---|
Webhacking.kr Challenge old-59 문제 풀이 (0) | 2023.07.13 |
Webhacking.kr Challenge old-21 문제 풀이 (0) | 2023.07.07 |
Webhacking.kr Challenge old-23 문제 풀이 (0) | 2023.07.05 |
Webhacking.kr Challenge old-42 문제 풀이 (0) | 2023.07.03 |