티스토리 뷰
hello world
소스를 보면 index.phps 파일이 주어져 있다.
index.phps 파일을 보면 answer 파라미터로 $hidden_table 을 입력해주면 문제를 풀 수 있다.
그리고 val 파라미터를 통해서 입력을 할 수 있지만 필터링이 되어있는 것을 볼 수 있다.
select test1 from $hidden_table where test2=$_GET[val]
val 이 입력되는 부분을 보면 '(single-quote)가 없는 것을 볼 수 있다.
val=1 을 입력하면 test
val=2 를 입력하면 guest
val=3 을 입력하면 admin
val=4 를 입력하면 oldzombie
가 출력이 되지만, 테이블 명을 알아낼 수는 없다.
테이블 명을 알아내기 위해서는 UNION을 써야하지만 해당 문자도 필터링이 되어 있기 때문에 사용할 수가 없다.
이때, PROCEDURE ANALYSE() 함수를 이용해서 테이블 명을 알아낼 수 있다.
https://dev.mysql.com/doc/refman/5.0/en/procedure-analyse.html
이 함수는 테이블의 최적화를 위해서 사용되는 분석함수로 첫번째 컬럼이 Field_name 이고 컬럼값을 보면 데이터베이스명.테이블명.컬럼명을 출력한다.
따라서, 해당 함수를 이용해서 데이터베이스 명과 테이블 명을 알아낼 수가 있다.
알아낸 테이블 명을 입력해주면 문제를 풀 수 있다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
Challenge 58 (0) | 2015.09.09 |
---|---|
Challenge 57 (0) | 2015.09.08 |
Challenge 56 (0) | 2015.09.07 |
Challenge 55 (0) | 2015.09.06 |
Challenge 54 (0) | 2015.09.06 |
Challenge 52 (0) | 2015.09.06 |
Challenge 51 (0) | 2015.09.05 |
Challenge 50 (0) | 2015.09.05 |
Challenge 49 (0) | 2015.09.03 |
Challenge 48 (0) | 2015.08.31 |
댓글