문제를 들어가보면 다음과 같은 화면이 나온다.

링크를 누르면 소스코드를 볼 수 있다.

쿼리문에 무언가를 리턴하게 되면, /flag를 보여주는데

 

쿼리문에 뭔가 삽입할 만 한 것이 없다.

 

 

어떻게 푸는지 잘 몰라서 다른 롸업들을 보았는데 대략 취약점은 이러하다.

 

 

1. 파일을 업로드 가능하다.

2. .htaccess 파일을 업로드해서 덮어쓰기가 가능하다.

.htaccess 파일에 접근하려고 하니 Not Found가 아닌 Forbidden이 뜬다. 파일이 존재한다는 뜻!

 

3. mysqli_connect 함수에 인자가 없는데, 이는 default값들이 들어간다. 

host, username, port, passwd 등을 ini_get 함수로 가져온다는 것을 알 수 있다.

 

4. ini_get 함수는 php configuration 에서 값을 가져온다. (php.ini 파일)

 

 

5. php.ini에 있는 설정 값들은 .htaccess에서 지정이 가능하다.

 

 

이정도까지 힌트면 어떻게 풀지는 대충 감이 올 듯하다.

 

 

 

본인은 실제로 mysql 서버 환경 구축을 해서 똑같은 환경을 만들어 보려다가 삽질을 오지개 해버렸다 ㅠㅠ

 

mysql remote access를 하게 해주는 옵션은 다음과 같다.

 

------------------------------------

/etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 127.0.0.1를 주석처리

------------------------------------

 

 

References

https://www.php.net/manual/en/mysqli.construct.php
https://stackoverflow.com/questions/8812154/overriding-php-ini-on-server
https://stackoverflow.com/questions/25281467/fatal-error-call-to-undefined-function-mysqli-connect
https://www.php.net/manual/en/function.ini-get.php
https://www.php.net/manual/en/function.ini-get-all.php
https://www.php.net/manual/en/ini.list.php

https://stackoverflow.com/questions/14779104/how-to-allow-remote-connection-to-mysql

 

+ Recent posts