Mail Header injection 문제이다. 문제가 요구하는 답을 입력할 경우 문제가 풀리도록 하드 코딩되어 있다.소스를 보면 index.phps 소스 파일이 주어져 있다. 소스 파일을 보면mail("admin@webhacking.kr","readme","password is $pass",$header);부분을 볼 수 있는데 여기서 조작을 할 수 있는 부분은 $header 부분 밖에 없다. mail() 함수에 대한 자세한 내용은 아래 페이지에 자세하게 나와 있다.참고(http://php.net/manual/en/function.mail.php)bool mail ( string $to , string $subject , string $message [,string $additional_headers ..
level 1을 전송해보면 아래와 같이 zzibong information, money : 10000 이라는 정보를 얻을 수 있다. 소스를 보면 index.phps 소스 파일이 주어져 있는 것을 알 수 있다. 소스 파일을 보면 lv 부분에 여러가지 필터링이 되어 있는 것을 볼 수 있다. 실행이 되는 Query를 보면 입력 부분이 상수형으로 되어있는 것을 알 수 있다."select id,cash from members where lv=$_GET[lv]"따라서 아래와 같이 간단하게 인증 우회하여 문제를 풀 수 있다.아래 방법 외에도 2진수(0b)를 이용하거나 like, in 과 같은 연산자를 이용해서도 문제를 풀 수 있다. 띄어쓰기는 %0a, %09로 우회할 수 있다.
SQL INJECTION 문제id와 pw를 입력하는 걸로 봐서는 인증 우회 문제로 보인다. 기본적으로 적혀져 있는대로 로그인을 해보면 아래와 같이 hi guest가 출력 된다. 소스를 보면 index.phps 파일이 주어져 있다는 것을 알 수 있다. index.phps 파일을 보면 id 부분은 admin, from ,union 등이 필터링되어 있고 pw 부분은 md5로 변환되서 비교를 한다는 것을 알 수 있다.그리고 Query 위쪽에 보면 mb_convert_encoding($_GET[id],'utf-8','euc-kr'); 이 있는데 이를 이용해서 magic_quote_gpc, addslashes, real_escape_string 을 우회할 수 있다. (single quote, double quote..