본문 바로가기
[웹해킹]/[Webhacking.kr]

[Webhacking.kr] 30번

by Hevton 2020. 10. 17.
반응형

직접 구현하진 않았다. 해당문제는 공인 IP로 접속이 가능한 mysql 서버가 구축되어있어야해서..귀찮아...ㅠㅠ

 

<?php
  if($_GET['view_source']) highlight_file(__FILE__);
  $db = mysqli_connect() or die();
  mysqli_select_db($db,"chall30") or die();
  $result = mysqli_fetch_array(mysqli_query($db,"select flag from chall30_answer")) or die();
  if($result[0]){
    include "/flag";
  }
?>

소스보기를 한 소스다.

mysqli_connet에 인자가 없는데, 이런 경우 디폴트 값이 들어간다.

이때 ini_get 함수를 통해 php.ini 파일 안에 정의되어 있는 디폴트 host, username, port, passwd 값들을 가져오게 되는데,

디폴트로 각각 NULL, NULL, 3306, NULL 로 정의되어 있다.

www.php.net/manual/en/ini.list.php

 

mysqli_default_host = NULL

mysqli_default_user = NULL

mysqli_default_port = 3306 (mysql의 포트는 3306)

mysqli_default_pw = NULL

 

( ini_get 함수는 php.ini 파일로부터 해당 값들을 읽어들인다. )

+ 기본값으로 제공되는 php.ini 파일은 실서비스를 위한 환경설정 내용을 담고 있다.

그리고 이 파일의 설정값을 .htaccess 파일의 설정값으로 덮어 씌울 수 있다.

( 특정한 사이트에만 설정내용을 반영하고 싶을 경우는 해당 사이트의 루트에 .htaccess 파일을 생성하여 설정 )

 

즉 mysqli_connect에 인자가 없을 경우엔 php.ini 파일에 설정되어있는 디폴트값들을 읽어들이는데, .htaccess 파일의 설정값으로 이 값들을 지정해 줄 수 있다.

 

 

따라서 개인 서버를 만들고, 그 안에 위의 소스에 맞게 chall30 데이터베이스를 만들어 준 뒤 chall30_answer라는 테이블도 만들고

flag 컬럼을 만들어준 뒤 데이터를 하나 넣어준다. 그리고 해당 테이블에 접근 가능한 공개 계정을 하나 만들어준 뒤

그 접속 정보를 담고 있는 .htaccess 파일을 업로드하면 된다. webhacking.kr 에서 내 개인 mysql 서버에 접속하게 하는 것.

 

.htaccess 파일을 아래와 같이 만들어 준 뒤 업로드하면 된다.

 

php_value mysqli.default_host "주소:3306"

php_value mysqli.default_user "유저"

php_value mysqli.default_pw "비밀번호"

 

 

반응형

'[웹해킹] > [Webhacking.kr]' 카테고리의 다른 글

[Webhacking.kr] 32번  (0) 2020.10.17
[Webhacking.kr] 31번  (0) 2020.10.17
[Webhacking.kr] 29번  (0) 2020.10.13
[Webhacking.kr] 28번  (0) 2020.10.07
[Webhacking.kr] 27번  (0) 2020.10.07