ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Renewal] webhacking.kr old-30 [550]
    $ 웹 해킹 $/webhacking.kr 2020. 1. 11. 12:28

     

    파일 업로드 문제로 보인다.

     

    위의 경로에 있는 소스코드를 확인해 보면 아래와 같습니다.

    일단 위의 소스코드에서 이상한 부분이 보인다.

     

    바로 mysqli_connect() !!

     

    위의 함수는 mysqli와 연결 해주는 함수 인데 함수를 한번 확인해 보자.

     

    문법을 보면 host, username, password, databasename, port, socket 등등을 인자로 넘겨주는데 아무것도 입력이 되어 있지않은것을 확인할 수 있다.

     

    이럴 때는 php.ini 또는 .htaccess 에서 default 값을 가져와서 mysqli_connect()에 사용하게 되는데 실제 php 공식 사이트에서 어떤 값을 가져오는지 확인해 보자

    사이트 :  https://www.php.net/manual/en/ini.list.php

     

     

    default port는 3306이고, host, user, pw 는 NULL을 가져온다.

     

    이점과 파일업로드 취약점인것을 감안해서 접근해보면 앞전에 .htaccess 파일 업로드를 했었으니 해당 파일에 저 변수들에 개인 서버 mysql값을 넣으면 디비나 테이블도 조건에 맞출수 있을 것 같다.

     

    그래서 개인서버의 mysql 을 열어서 chall30 이라는 디비를 만든다.

     

    chall30이라는 데이터 베이스를 생성하고 나서 해당 데이터베이스에 접속을 해보겠습니다.

     

    그리고 chall30_answer이름으로 테이블을 만들고 flag라는 칼럼도 추가해야한다.

     

     

    chall30 안에 chall30_answer 테이블이 있는것을 확인 할 수 있다.

     

    다음과 같이 테이블의 구조가 만들어 진것을 알 수 있습니다.

    이제 해당 테이블에 값을 넣어보겠습니다.

     

    테이블을 확인해 보면 아래와 같습니다.

     

    이제 해당 테이블에 접근 가능한 계정을 하나 만들어 보겠습니다.

     

    위의 쿼리문의 구조는 아래와 같습니다.

     

    위와 같이 쿼리문을 작성하면 자동으로 디비의 USER 테이블에 INSERT가 됩니다.

     

    이제 .htaccess 파일면 수정해서 업로드 하면 될 것 같습니다.

     

    파일 업로드 할때는 프록시 툴로 잡아서 파일명을 바꿔줘야 합니다!

     

     

    파일 업로드가 되었습니다.

     

    이제 각자 폴더로 가보겠습니다.

     

    댓글

Designed by Tistory.