SISS/Webhacking.kr
old-53(350)
3190024
2020. 11. 7. 17:24
SQLinjection인 것 같다. 코드를 보니, val에는 select나 by가 들어가면 안 된다. val의 값이 a의 값으로 설정된다.
answer와 $hidden_table이 같은 경우에 문제가 풀리는 것으로 보아, 테이블 명($hidden_table)을 알아내야 한다.
쿼리를 날린 뒤, 그 결과의 첫번째를 출력하므로, val에 이것 저것 넣어본다.
val에 값을 넣었더니 true, 1,2,3,4에서 a의 값이 나온 것을 알 수 있다.
어떻게 하면 테이블명을 알 수 있을까 검색하는 차에 procedure analyse()를 알게 되었다. procedure analyse()를 사용하여 쿼리를 명령하면 데이터베이스명.테이블명.컬럼명 형태의 정보를 획득할 수 있다.
a에 포함되는 1을 이용하여 val=1 procedure analyse(); 를 입력해준다.
데이터베이스명은 webhacking이고, 칼럼명은 a이다. 그리고 가운데에 있는 저 긴 문자열(chall...a805)이 테이블명이다.
answer=가운데 있던 문자열 을 입력한다.