Wargame/webhacking2017. 6. 18. 21:59

webhacking.kr 53번 문제를 보면 다음과 같다.

hello wolrd 문자열만 출력되고 아무것도 없다.

일단 페이지 소스를 열어보자.

index.phps 가 주어졌다. 열어보자.

코드를 분석해보자.

hidden_table 변수에 물음표가 문자열로 저장되어 있다.

GET 방식으로 answer 를 전달받으며 이 값이 hidden_table의 값과 같으면 문제가 풀린다.

GET 방식으로 val 을 전달받으며 필터링을 거친다.

val 값을 이용해 select문을 통해 test1 값을 뽑아내며 그 값을 변수 f에 저장한다.

f에 값이 있으면 table name음 입력 하는 form이 생성된다.


일단 val값을 1부터 넣어보자.

위와 같은 화면이 나오며, 2는 guest, 3은 admin, 4는 zombie가 출력이 되며 5부터는 존재하지 않는다.

val 값을 이용해서 테이블 명을 뽑아내야 한다.

이를 위해 사용할 수 있는 것은 mysql 함수인 procedure analyse()이다.

이 함수는 필드명, 최소값, 최대값, 최소길이, 최대길이 등 해당 테이블의 정보를 나타내주는 함수이다.

필드명에는 데이터베이스명.테이블명.칼럼명이 들어있다.

즉, 이를 이용해 테이블명을 확인할 수 있다.

쿼리문을 다음과 같이 만들도록 val 값을 입력하자.

select test1 from $hidden_table where test2=1 procedure analyse()


다음과 같이 테이블명을 알 수 있다.

이 값을 입력하면 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 58번 문제  (0) 2017.06.18
[webhacking.kr] 54번 문제  (0) 2017.06.18
[webhacking.kr] 49번 문제  (0) 2017.06.18
[webhacking.kr] 46번 문제  (0) 2017.06.18
[webhacking.kr] 39번 문제  (0) 2017.06.18
Posted by Imp3rio