티스토리 뷰

hacking/webhacking.kr

<webhacking.kr> - 41번

khe0616 2018. 2. 14. 19:28

초기화면이다.








index.phps에 php소스 코드가 있는 것 같다.








index.phps로 들어가면 위와 같은 php코드가 나온다.

파일선택 후 upload버튼을 클릭하면 위의 코드가 실행된다.


1. 변수 fn에 업로드한 파일의 이름을 저장

2. 변수 fn의 "."를 ""로 바꿈

3. fn에 "/"이 포함된 경우 no를 출력하며 종료

4. fn에 "\."이 포함된 경우 no를 출력하며 종료

5. fn에 "htaccess"이 포함된 경우 no를 출력하며 종료

6. fn에 ."htaccess"이 포함된 경우 no를 출력하며 종료

7. fn의 길이가 10을 초과할 경우 no를 출력하며 종료

8. 변수 fn의 "<"를 ""로 바꿈

9. 변수 fn의 ">"를 ""로 바꿈

10. 변수 cp에 "웹서버에 저장된 임시 파일의 이름"을 저장

9. cp라는 파일을 hidden_dir디렉토리에 필터링된 파일명으로 복사

10. 복사한 파일을 쓰기모드로 open

11. open한 파일에 패스워드를 기록

12. 파일 종료

13. Done~출력





결국 hidden_dir를 알아내야 한다.

copy함수가 호출될때 cp가 빈스트링("")이라면 에러가 발생할 것이고, 에러 처리를 제대로 해놓지 않으면 에러메시지와 함께 hidden_dir이 출력될 것이다.









burp suite를 이용해서 파일이름을 공백으로 한다음 업로드 하였다.








하지만  no라고 출력된다. fn 값이 없기때문에 eregi()함수에서 걸리는 듯 하다.











"<", ">"는 eregi()함수로 필터링 되지 않고 str_replace()함수를 통해 ""로 치환된다. 따라서 copy()호출 시 cp가 ""이 되도록 할 수 있다.

burpsuite를 이용해서 파일이름을 "<>"로 바꿔주었다.






copy()호출시 cp가 ""이므로 에러가 발생했다.


알아낸 hidden_dir은 아래와 같다.

dkanehdkftndjqtsmsdlfmadmlvhfejzzzzzzzzzkkkkkkkkggggggggg








이제 필터링 되지 않는 이름의 파일을 업로드한 후 








초기 url/dkanehdkftndjqtsmsdlfmadmlvhfejzzzzzzzzzkkkkkkkkggggggggg/khe0616

으로 접속하면 패스워드가 출력된다.








클리어





















'hacking > webhacking.kr' 카테고리의 다른 글

<webhacking.kr> - 34번  (0) 2018.02.15
<webhacking.kr> - 28번  (0) 2018.02.14
<webhacking.kr> - 58번  (0) 2018.02.14
<webhacking.kr> - 32번  (0) 2018.02.13
<webhacking.kr> - 11번  (0) 2018.02.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함