29번 - File Upload Vulnerability

2020. 11. 9. 16:27

 

파일 선택을 통해 파일을 올린 뒤

 

 

제출 버튼을 클릭하면,

 

 

이와 같이 파일이 올라가죠.

 

여기서 다음과 같이 유추해낼 수 있을 것 같네요.

DB에 insert 하기 위해 질의되는 쿼리문

1. insert into '??' values(time or ip, ip or time, filename)
2. insert into '??' values(time or ip, filename, ip or time)
3. insert into '??' values(filename, time or ip, ip or time)

 

각각의 경우를 테스트 해봅시다.

 

 

1번은 탈락!

 

 

2번도 탈락!

 

 

3번 성공!

 

하지만, 파일이 등록되지 않는 이유가 무엇일까요?

파일 업로드에 성공했을 때 나타나는 ip를 패킷에 실어 보내보겠습니다.

 

 

두번째 위치에 보냈더니 오류가 나오네요.

세번째 위치에 보내봅시다.

 

 

성공!

최종 쿼리문은 대충 이렇게 되겠네요.

insert into '??' values(filename, time, ip)

 

이제 뒤에 value를 하나 더 추가한 뒤 그 곳에서 flag를 알아내는데 필요한 정보들을 수집해봅시다.

 

 

database 이름은 chall29라고 하네요.

 

 

여러 개의 테이블 이름 중 첫번째 이름인 'files'가 나왔네요.

아무래도 지금까지 올린 파일들을 저장하는 공간같죠?

두번째 이름을 확인해보죠.

 

 

flag_congratz 라는 테이블 이름이 나왔네요.

이제 컬럼 이름을 알아봅시다.

 

 

컬럼 이름은 'flag'네요.

이제 마지막으로 안에 값이 뭐가 있는지 봅시다!

 

 

성공적으로 FLAG를 추출했네요.

이제 auth 페이지에 인증을 합시다.

 

'[▒] 보안 > webhacking.kr' 카테고리의 다른 글

31번 - 포트포워딩  (0) 2020.12.29
30번 - .htaccess  (0) 2020.12.29
28번 - File Upload Vulnerability(.htaccess)  (0) 2020.10.29
27번 - sql injection  (0) 2020.10.16
26번 - URL DECODE  (0) 2020.10.16

BELATED ARTICLES

more