티스토리 뷰

Wargame/Webhacking.kr

Challenge 53

do9dark 2015. 9. 6. 01:14

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
댓글
«   2024/11   »
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
링크
공지사항
Total
Today
Yesterday