[HTB] Web Challenge - FreeLancer

조병근·2020년 8월 23일

HTB

목록 보기
4/7

2 FreeLancer

처음에는 contact_me.js 파일에서 firstname을 html 페이지에 그대로 포함시키길래 reflected XSS를 이용하는 건 줄 알았는데 우선 시작부터 찜찜했음. XSS는 클라이언트 쪽 취약점인데 서버에 있는 FLAG를 어케 가져오지? 라는 생각을 하면서 계속 하다가 결국 안 됐음. 태그가 텍스트 자체로 표시됨.

그래서 다른 곳을 살펴보다가 portfolio.php파일에서 id를 get방식으로 받고, 거기서 sql injection 이 발생.

union select null,null, ... 을 이용해서 몇 개의 컬럼 선택하는 지 확인 ➞ table 명 확인 ➞ 컬럼명 확인 ➞ 

safeadm / 2y$10s2ZCi/tHICnA97uf4MfbZuhmOZQXdCnrM9VM9LBMHPp68vAXNRf4K 확인

비번을 크랙할까 생각하다가 dirb 툴을 사용해 확인한 /administrat/panel.php를 읽어보기로 함.

서버가 아파치임을 확인했기 때문에 mysql에서 사용하는 load_file함수를 이용해서 파일 읽어올 수 있음.

UNION%20ALL%20SELECT%20NULL,NULL,load_file(%27/var/www/html/administrat/panel.php%27)

sqlmap 툴의 옵션 중에 --file-read라는 옵션으로 파일을 읽어오는 게 있는데 아마 load_file을 이용해 읽어오는 것 같음.

그 파일 안에 flag가 있다!

profile
I'm always chobo

0개의 댓글