티스토리 뷰

SQL injection/webhacking

webhacking 53번

ys.k 2022. 8. 21. 09:56

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

이전 문제인 52번 문제는 문제를 풀 수 있는 사전 지식이 갖추어져있지 않아 추후에 업로드할 예정입니다.

53번 문제이다.

소스코드를 볼 수 있는 하이퍼링크 하나만 있다.

한번 보자.

get 파라미터로 answer, val을 입력받을 수 있으며, answer이 hidden_table과 같으면 문제가 풀린다.

또한 val에는 select, by가 대소문자를 구분하지 않고 필터링되어있다.

밑에 쿼리를 보니 우리가 찾아야 하는 hidden_table에서 데이터를 가져오는 모습을 볼 수 있다.

우리는 procedure analyse() 함수를 사용하여 이 문제를 해결할 수 있다.

풀어보자.

일단 val 파라미터를 통해 1을 입력했다.

그대로 1을 출력했다.

테스트 결과 문자는 출력되지 않았고 숫자는 1~4까지만 출력되었다.

procedure analyse() 함수는 구분자로. 을 사용하며, 현재 사용 중인 database를 순서대로 database(), table_name, column_name 순으로 출력된다.

따라서 우리는 hidden_table 인 chall53_755fdeb36d873dfdeb2b34487d50a805 을 구했다.

한번 검증해보자.

문제 해결

시행착오

1. procedure analyse() 함수를 새로 배우게 되었다.

   ㄴ from table_name 뒤에 올 수 있으며, select 한 칼럼명이 포함된 db, table, column명을 순서대로 출력해준다.

 

'SQL injection > webhacking' 카테고리의 다른 글

webhacking 55번  (0) 2022.08.21
webhacking 54번  (0) 2022.08.21
webhacking 51번  (0) 2022.08.19
webhacking 50번  (0) 2022.08.15
webhacking 49번  (0) 2022.08.11
댓글