본문 바로가기
Web/Webhacking.kr

Webhacking.kr Challenge old-48 문제 풀이

by jh117jh 2024. 4. 2.
728x90

\

이번 문제는 파일, 게시글 업로드 기능과 파일, 게시글을 확인, 삭제하는 기능이 있다.

 

처음에 xss를 시도해봤지만 위에 사진과 같이 문자로 출력되는 걸 볼 수 있다.

 

그다음 파일 업로드 취약점을 시도해본 결과 

 

pre 태그로인해 문자열 취급을 받아 실행되지 않았다.

 

또한 파일명을 %2E%2E%2F %2E%2E%2F %2E%2E%2Fflag.txt로 변경 후 업로드 결과

파일명이 url로 들어가면서 디렉토리 리스팅 취약점을 시도했지만 파일도 없을뿐더러 권한도 막혀있어 실패했다.

다른 파일명으로도 시도해 본 결과 나오지 않았다.

 

여기서 얻을 수 있는 것은 웹서버가 우분투기반으로 되어 있다는 것이다.

 

여러 시도를 해본 결과 파일 업로드, 게시판 업로드 기능에서 flag를 찾을 수 없어 삭제 기능을 이용해보려 했다.

 

delete from board where title=???

대충 이런 sql이 작동할 것을 예상하고 파일명을 이용해 시도하려는 찰나에

생각해 보니 삭제 기능을 가지고 다른 컬럼값을 조회할 수 있나?라는 생각이 들었다.

 

여기서 아까 찾은 우분투 기반인 것을 이용하면 되는데

 

우분투는 리눅스 기반으로 만들어져 리눅스 명령어를 사용한다.

\

우분투 파일 삭제만 검색해도 rm이라는 명령어가 쓰이는 걸 알 수 있는데

여기서 사용할 수 있는 게 comand injection이다.

리눅스 명령어는 ;을 이용해 여러 개의 명령어를 작성할 수 있는데

 

파일 삭제를 누르면 rm "파일명"의 형태로 작동할 것이다.

그럼 ;을 이용해 rm "파일명"; 추가 명령어~~~ 형태로 작성하면 다른 명령어를 실행시킬 수 있다.

파일 조회에 흔히 쓰는 ls를 이용해 현제 디렉토리에 있는 파일들을 출력해 보면 flag에 대한 힌트를 얻을 수 있을 것이다.

 

 

파일명을 ;ls로 작성하고 삭제를 누르면 

 

 

현재 디렉토리 파일들이 출력되면서 flag를 얻을 수 있다.

728x90