uju's Tech

7. Webhacking.kr 41번 본문

Security/Webhacking.kr

7. Webhacking.kr 41번

ujusy 2020. 6. 13. 03:16

<본 포스팅은 공부 목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>

 

41번은 250점짜리 문제이다.

 

41번 문제를 들어가보자. 

위의 사진과 같이 파일을 업로드하는 것이 나온다.

 

크롬 개발자 도구(shift+i)를 살펴보겠다.

 

코드를 보니 index.phps파일이 존재한다는 것을 알 수 있다.

 

기본url/index.phps를 쳐서 ㄴ들어가 보자.

 

<index.phps파일 코드>

위와 같은 코드가 나온다.

코드를 보면 fn에 업로드한 파일의 이름을 저장한다.

 

str_replace는 문자열 치환 함수로 "."을  ""로 바꾼다는 코드이다.

eregi는 문자열 필터링 함수이다. 

 

if조건문을 살펴보면 eregi함수가 쓰여있는데 해석해보면

fn에  "/", "\.", "htaccess", ". htaccess"가 포함된 경우 no를 출력하면서 종료한다.

 

여기서 htaccess를 필터링하는 이유는 htaccess를 통해 사용자가 서버 설정 변경을 할 수 있다.

 

 

fn의 길이가 10을 초과할 경우 no를 출력하면서 종료한다.

 

fn의 ">"와  "<"을 ""로 바꾼다.(null값이 된다.)

 

변수 cp에 임시파일의 이름을 저장하고 cp라는 파일을 hidden_dir에 필터링이 된 파일명으로 복사한다.

복사한 파일을 쓰기 모드로 열고 pw를 기록한다. 

 

여기서 hidden_dir을 알아내야 하는데 경로를 모르니 함수에서 에러를 내볼 것이다.

 

fn이 null값이 되면 copy에서 복사할 대상 파일이 존재하지 않아 에러가 발생할 수 있다고 추측해보자.

 

이를 확인하기 위해 시도를 해보았다.

 

먼저 파일을 넣지 않고 업로드해보면 no가 나온다.

 

burpsuite로 파일을 업로드할 때의 패킷을 잡아보았다.

 

<업로드 할 때의 패킷>

여기서 filename을 임의로 수정해보겠다.

 

index.phps에서 <와 >이 null값이 됨을 알았으므로 <>을 넣어보자.

 

넣어보면

 

에러가 뜬다. hidden_dir경로를 찾았다.

 

기존 url//dkanehdkftndjqtsmsdlfmadmlvhfejzzzzzzzzzkkkkkkkkggggggggg/필터링되지않은 파일 명

을 작성해준다.

 

필자는

기존url/dkanehdkftndjqtsmsdlfmadmlvhfejzzzzzzzzzkkkkkkkkggggggggg/sy34으로 해주었다.

 

 

짠 패스워드가 뜬다.

 

 

위의 pw를 auth에 입력해주면 clear!

 

끝!

'Security > Webhacking.kr' 카테고리의 다른 글

8.Webhacking.kr 5번  (0) 2020.06.13
6. Webhacking.kr 58번  (0) 2020.06.13
5. Webhacking.kr 32번  (0) 2020.06.13
4. webhacking.kr 24번  (0) 2020.06.13
3. webhacking.kr 18번  (0) 2020.06.13
Comments