3주차_Webhacking 과제1 ([webhacking.kr] old - 28번)

2023. 9. 27. 22:35SWLUG/web hacking

3주차 첫번째 문제를 풀어보겠다.

 

 

 

Mission은 주어진 url을 읽는 것인거 같았고, 나의 파일이 어떤 경로에 업로드될 것이라 있다고 쓰여있다.

그냥 바탕화면에 있는 아무 파일이나 클릭해서 제출했는데 파일이 크다고한다.

 

업로드한 파일 크기가 문제인건지 원래 이렇게 뜨는건지 확인해보기위해 다른 파일도 업로드해봤다.

 

 

또 file too big이라고 뜬다. 

내 파일의 경로를 수정해야하는걸까? 한번 더 시도해봤다.

 

 

시도해보기전에 갑자기 궁금해져서 해당 url을 클릭해보았다.

 

파일을 읽는 문제인데 그렇게 쉽게 보일리가 없지, 이렇게 아무것도 안뜬다.

 

 

개발자도구를 봤는데, 필요한 코드만 있고 문제를 푸는 힌트는 없어보이는거 같다. (잘은 모르겠지만..)

 

 

음 여기에 flag.php가 있고 , 이걸 활용해야할지도 모르니 여기에 이게 있다는 걸 기억하고 돌아갔다.

그리고 다시한번 다른 파일을 업로드해봤다. 

 

그랬더니 위와 같이  file too big이 아닌 업로드된 업로드된 url이 뜬다.

보니까 경로는 같다. 혹시 몰라서 url을 클릭해보았다.

 

 

들어가보니 다 깨져서(외계어)가 쓰여있다..(ㅎ)

 

 

다시 개발자도구를 열어서 혹시하고 이름을 flag.php로 mission과 같게 수정해주었다.

그리고 다시 확인해보았다.

 

딱히 열어서보이는 것도, 변화도 없었다.

 

그래서 아예 처음부터 파일 이름을 변경해서 저장해두었다.

 

 

그리고 파일이름을 변경해서 저장해둔 파일의 제출을 눌렀더니 아래와 같이 나왔다.

 

no?

이게 답의 끝일리는 없고.. 진짜 아니라는 것 같았다.

 

코드를 확인해보니 진짜 그냥 아닌것 같다.

 

 

여전히 읽어지지않고 flag.php에도 아무것도 없다.

 

그래서 다시 파일명을 html로 직접 수정해봤다.

그래도 여전히 빈 하얀 페이지만 뜨는데, 에러가 나지 않는 것 보면 그냥 안읽어지는건가?

다양한 시도를 해보았지만, 계속 그대로여서 결국 도움을 받아보았다.

 

[ 참고 학습 자료]

 

[Webhacking.kr] 28번 (tistory.com)

 

[Webhacking.kr] 28번

파일 업로드 취약점 문제 ./upload/O7XO91oPbea4/flag.php 파일을 실행이 아닌 읽어들이라고 한다. -> 이 문제는 php 파일 형태의 웹셀을 업로드 하는 것이 아니라 .htaccess 를 이용한 php 실행 금지 를 통해

haerinn.tistory.com

 

이 문제는 php 파일 형태의 웹셀을 업로드 하는 것이 아니라 .htaccess 를 이용한 php 실행 금지를 통해 풀어야한다고 한다.

 

 

📌기억해두자.

htaccess는 "hypertext access"의 약자이다. 아파치 같은 웹 서버에서 브라우저 같은 클라이언트에서 접근할 때 어떤 식으로 서비스를 제공할 지 결정하는 파일이다.

파일 업로드 디렉토리에 .htaccess 파일을 만들고 해당 파일에서 php 파일을 실행하지 않게 설정하면, 텍스트 파일로 인식하게 하여 소스코드를 텍스트 형태로 볼 수 있다. ( 이런 방법들을 사용해야하는구나.. 기억해둬야지 )

 

php_flag engine off는 PHP의 설정을 변경하는 Apache 웹 서버의 디렉티브 중 하나이다. 
이 지시문은 PHP 엔진을 비활성화하는 데 사용된다.
해당 코드를 .htaccess 파일이나 Apache의 설정 파일 중 하나에 추가하면, PHP 스크립트가 실행되지 않고 일반적인 텍스트로 처리된다.
이는 웹 서버가 PHP 코드를 해석하지 않고, 사용자에게 그대로 소스 코드를 표시하도록 하는 방법 중 하나이다.

 

이렇게 메모장에 php_flag engine off 라고 글을 쓰고  파일이름을 .htaccess, 파일형식을 모든파일로 저장한다.

그리고 나서 파일을 불러와주면 다음과 같이 뜬다.

누가봐도 답같다. 근데  아까 no가 나온이유는 뭐였지, 그럴듯할지모르지만 그건 아니야 라는 뜻인가?

 

 

 

 

짜잔!

최대한 혼자 풀어보고 싶었지만, 이 문제는 아직 나에게는 역부족이었다. 

그래도 다양한 개념을 학습할 수 있어서 좋았다.

 

 

⚒️ 파일을 읽기위해서는 .htaccess 취약점을 이용하여 php실행 권한을 제거해 파일의 권한을 변경해줘야한다는 점,

 .htaccess는 Apache가 기능을 사용 가능 또는 사용 불가능으로 설정하거나 특정 조건이 충족될 때 특정 작업을 실행하기 위한 매개 변수를 설정한다는 점, .htaccess를 수정하여 flag.php의 실행 권한을 제거해주면 flag.php의 내부 소스코드를 볼 수 있을거라는 점, php_flag engine off의 의미와 기능을 기억해두자.

 

 

첫번째 문제 끄읏 ╰(*°▽°*)╯