-
<Webhacking.kr> old-07Wargame/Webhacking.kr 2021. 11. 15. 17:38
'auth' 버튼을 누르면
"접근이 거부되었다"는 메시지를 출력한다.
view-source를 통해 페이지 소스 코드를 살펴보면
GET 방식으로 전달받은 'val'의 값을 변수 '$go'라 한다.
$go의 값에서 2, -, +, from, _, =, \s, *, / 를 필터링한다.
그리고 1부터 5까지를 랜덤으로 정해 각기 다른 쿼리를 실행한다.
각기 20%의 확률이므로 $rand가 1일 경우에 맞춰 문제를 풀었다.
그리고 $data[0]가 2가 되어야 문제를 해결할 수 있다.
2를 만들기 위해서는 '1+1', '3-1' 등과 같은 방법은 연산자가 필터링되기 때문에 사용할 수 없다.
2를 만들기 위해서는 chr(50), mod(5,3) 등을 이용할 수 있다.
?val=char(50)을 입력하면
"query error"라는 메시지를 출력한다.
괄호가 필터링 되지 않았기 때문에 괄호를 사용해서 문제를 풀 수 있다.
"select * from table"은 "select(*)from(table)"과 쿼리가 동일하다는 점을 이용할 수 있다.
?val=1)union(select(chr(50))을 입력하면
문제가 풀리게 되는데 "nice try"라는 메시지를 출력할 수 도 있다.
이는 1~5까지의 숫자가 랜덤이기 때문에, 새로고침을 하다보면 문제를 해결할 수 있다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
<Webhacking.kr> old-09 (0) 2021.11.18 <Webhacking.kr> old-08 (0) 2021.11.16 <Webhacking.kr> old-05 (0) 2021.11.14 <Webhacking.kr> old-06 (0) 2021.11.11 <Webhacking.kr> old-03 (0) 2021.11.09