SISS/Webhacking.kr

old-53(350)

3190024 2020. 11. 7. 17:24

SQLinjection인 것 같다. 코드를 보니, val에는 select나 by가 들어가면 안 된다. val의 값이 a의 값으로 설정된다.

answer와 $hidden_table이 같은 경우에 문제가 풀리는 것으로 보아, 테이블 명($hidden_table)을 알아내야 한다.

val = true

쿼리를 날린 뒤, 그 결과의 첫번째를 출력하므로, val에 이것 저것 넣어본다.

val=0
val=1
val=2
val=3
val=4
val=5

val에 값을 넣었더니 true, 1,2,3,4에서 a의 값이 나온 것을 알 수 있다.

어떻게 하면 테이블명을 알 수 있을까 검색하는 차에 procedure analyse()를 알게 되었다. procedure analyse()를 사용하여 쿼리를 명령하면 데이터베이스명.테이블명.컬럼명 형태의 정보를 획득할 수 있다.

 

a에 포함되는 1을 이용하여 val=1 procedure analyse(); 를 입력해준다.

데이터베이스명은 webhacking이고, 칼럼명은 a이다. 그리고 가운데에 있는 저 긴 문자열(chall...a805)이 테이블명이다.

answer=가운데 있던 문자열 을 입력한다.