늘모자란, 개발 :: [webhacking.kr] Challenge 30

늘모자란, 개발



파일 업로드 취약점은 상식이 거의 없어서 밑천이 드러나고 있다... 계속 고전중인데, 이녀석도 그렇게 될 것 같은 기분이 든다

phps를 보면,

<?
mysql_connect() or die();

mysql_select_db("challenge_30_table") or die();

$q=mysql_query("select password from challenge_30_answer") or die();

$data=mysql_fetch_array($q) or die();

if($data)
{
$pw="????";
echo("Password is $pw");
}

?>


index.phps는 일단 아무 상관이 없다. 그리고 입력하는 데이터도 없고, 얘를 성공적으로만 돌아가게 하면 그냥 성공인것 같다.

http://webhacking.kr/challenge/web/web-15/upload/index.php


로 들어가면 흰화면이 뜬다. 아마 die가 된다는 말이겠지?
접근은 간단하게 .htaccess를 겹쳐썼듯이 해보기로 한다.
내용은 완전히 똑같게 하고 , index.php를 업로드 시도했더니 정말 쿨하게 no가 돌아왔다. 경로를 upload/ 를 붙여봐도 똑같다. index란게 안되나..

indx2.php로 이름을 바꾸고 올려보니까 올라갔는데, <xmp>가 붙은것 마냥 그대로 나왔다.
어쨌든, php를 원격으로 실행도 안되고 결국은 아까처럼 htaccess를 가지고 놀아야 할 느낌이었다. 역시 좀 생각을 해봤는데 내가 안본지 오래되서 놓쳤던게 있었다.

mysql_connect()는 여기에 원래 host를 적어줘야한다. 근데 여기선 host가 없다. 즉 기본값을 따라간다는것 같은..데...
mysql 홈페이지에가서 이런걸 확인해볼 수 있었다.

resource mysql_connect(string server= =ini_get("mysql.default_host"),
                       string username= =ini_get("mysql.default_user"),
                       string password= =ini_get("mysql.default_password"),
                       bool new_link= =false,
                       int client_flags= =0);


그렇다면 어떻게 해야하느냐~ 얘를 수정해보도록 하자.
htaccess에서 PHP value를 주기 위해서는 php_value라고 명시해줘야 한다. 다음과 같은 모양이 되야한다.(도메인이 아니라 IP를 쓰자)

php_value mysql.default_host "@@@@@@@@"

php_value mysql.default_user "############"

php_value mysql.default_password "~~~~~~~"


이렇게 만들어 주면 그냥 일사천리다.
내가 의도한 DB에 접속하도록 DB와 테이블을 만들어주면 문제가 해결된다.
값은 별 상관없다.

INSERT INTO `challenge_30_table`.`challenge_30_answer` (`password`) VALUES ('1')



2016/03/31 21:43 2016/03/31 21:43