Search

WebHacking.kr Challenge old-30

목표 : DB Hijacking (.htaccess)
파일을 업로드할 수 있고 코드를 보여준다.
<?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"; } ?>
PHP
복사

시행착오

풀이

28번과 같은 .htaccess를 활용하는 문제다.
시행착오 과정에서 Apache 및 php를 사용하는 점을 확인했다. 다음 공식 php 문서에 내용이 있다.
이 중에서도 php.ini 파일 설정 값에 상세한 정보들이 있는데
MySQL에 관련된 부분이 있고 실제로 mysqli_connect(); 는 다음 default 값을 구성된다.
.htaccess를 통해 php.ini 설정 값으로 다음 값들을 덮어쓸 수 있다.
# $db = mysqli_connect(); $servername = "localhost"; $username = "username"; $password = "password"; $conn = new mysqli($servername, $username, $password);
PHP
복사
이를 위해서는 직접 DB를 구축해야한다. 오라클 클라우드의 우분투에 mysql을 설치했다.
#Make DB create database chall30; #Go to DB use chall30; #Make table create table chall30_answer(flag int); #Insert Data insert into chall30_answer values(123); #Check DB select flag from chall30_answer; #+------+ #| flag | #+------+ #| 123 | #+------+ #Make user and set Privileges create user 'test'@'%' identified by 'test1234'; grant all privileges on *.* to 'test'@'%';
SQL
복사
오라클 서버 방화벽 설정까지 3306포트에 대해 접근 가능하도록 설정했다
mysql -h {sql_server_ip} -u test -p #pw test1234
SQL
복사
테스트 결과 접근에도 성공했다.
오류가 발생해 test 계정에 대한 비밀번호 설정을 mysql_native_password으로 바꾸고서야 플래그를 얻을 수 있었다.

✓ 다른 [워게임] 포스트

WebHacking.kr Challenge Write-Up (70/80)
In progress
WebHacking.kr Challenge Write-Up (70/80)
In progress
Load more
︎ 더 많은 게시물을 보려면
︎ 작성자가 궁금하면?
 2023. absolroot all rights reserved.