일단 소스를 살펴봅시당
먼저 소스코드를 해석해 보면,
1. tablename.php 파일을 불러온다.
2. 만약 answer변수가 hidden_table 변수값과 같다면 문제 해결
3. val변수값의 select, by를 필터링함(대소문자 상관 X)
4. a=val변수값에 해당하는 hidden_table 값을 가져온다.
먼저 val 값이 1, 2, 3, 4일 떄를 각각 입력해 봤더니 각각 1, 2, 3, 4를 내놓는다.
아마도 val값 입력할 때를 이용해 table이름을 알아야 할 거 같다.
table 이름을 알아내는 가장 일반적인 방법은
SELECT table_name FROM information_schema.tables;
을 사용하는 것이다.
현재 사용하는 테이블의 이름만 알고 싶다면
WHERE table_schema = database()
를 같이 사용한다.
그런데 문제는 여기서 "select" 를 필터링 한다는 것이다.
그러면 아래 함수를 이용해 테이블명을 알아낸다.
procedure analyse();
이 함수는 각 칼럼들에 대한 해당 테이블을 분석한 결과를 보여준다.
./?val=1%0aprocedure%20analyse();
를 입력해 보면,
이렇게 DB명.TABLE명.FIELD명 형식으로 나타나게 된다.
그럼 여기서 알 수 있는 TABLE명은
chall53_755fdeb36d873dfdeb2b34487d50a805
이 되고,
./?answer=chall53_755fdeb36d873dfdeb2b34487d50a805
를 주소창에 입력하면 문제는 풀린다.
'보안 공부 > webhacking.kr' 카테고리의 다른 글
webhacking.kr 55번 풀이 (0) | 2022.01.15 |
---|---|
webhacking.kr 51번 풀이(PHP md5함수 취약점) (0) | 2022.01.05 |
webhacking.kr 41번 풀이(마지막 부분 오류 해결 방법) (0) | 2022.01.04 |
webhacking.kr 36번 풀이 (0) | 2022.01.04 |
webhacking.kr 46번 풀이 (0) | 2021.12.14 |