본문 바로가기

작업/Webhacking.kr

(18)
webhacking.kr old-38 이해하기 old-38 페이지는 "LOG INJECTION"이라는 이름을 가지고 텍스트 박스와 클릭 버튼이 있습니다. 자연스럽게 admin을 당당히 입력해 보았습니다. admin이 아니라는 말이 등장했습니다. ㅠㅠ; 페이지 소스 코드를 확인해 보았습니다. form 태그를 확인해 보면 post 입력 방식을 사용하고 있음을 알 수 있습니다. php에서 파라미터 전달 방식으로 GET 입력과 POST 입력 방식이 있습니다. GET 입력 방식은 ?를 시작으로 URL에 값이 직접 나타나는 형태를 가집니다. 이와 다르게 POST 입력은 페이지 자체에 파라미터가 전달되는 형태입니다. 위의 문장에서 post 방식에 의해 index.php 안에 파라미터 값도 같이 전달되는 것입니다. 그래서 파라미터 값이 URL 상에서 보이지 않습니..
webhacking.kr old-25 이해하기 old-25 페이지는 php와 관련된 문제라고 되어있었습니다. 페이지의 첫 화면은 hello.php 파일을 연 상태임을 알 수 있었습니다. hello world가 회색 텍스트 박스에 표시되고 있었습니다. 페이지 소스코드를 열어보아도 특별히 알 수 있는 내용은 없었습니다. 그래서 php 파일들을 URL에 입력하여 하나씩 열어보았습니다. flag.php 파일을 열어보면 "FLAG is in the code"라는 출력을 확인할 수 있습니다. 해당 코드 안에 있다는 의미를 스스로 이해하기엔 지식이 부족했습니다. 그래서 검색을 통해 php를 이용한 공격 예제 중 File Inclusion 취약점을 알았습니다. php 구성의 웹페이지에서 파라미터 값이 정확히 필터링되지 않는 취약점을 이용한 방법입니다. php를 통..
webhacking.kr old-19 이해하기 old-19 페이지의 시작 화면입니다. 처음부터 값이 적혀 있어서 당당히 제출을 눌렀습니다. admin이 아니라는 결과가 나옵니다. 무언가 잘못된 것 같습니다. 다른 값을 집어넣으면 hello와 함께 값이 출력됩니다. 이 상태에서 logout은 되지 않았습니다. logout이 되지 않는 것은 로그인 과정에서 형성된 쿠키값이 유지되고 있었기 때문입니다. 값을 삭제하면 다시 처음 화면으로 돌아옵니다. 다른 값들을 집어넣어도 그대로 뜨는 것으로 보아 admin 자체에 주문을 걸어놓은 것 같습니다. admin이라는 값을 그대로 입력하면 필터링에 걸려서 오류를 출력시키는 것 같았습니다. 페이지 소스 코드를 보아도 입력 값의 최대(maxlength)는 5로 정해졌기 때문에 입력 상자를 건드리는 것으로는 해결이 불가..
webhacking.kr old-6 이해하기 old-6의 페이지 구성은 view-source, ID 값과 PW 값입니다. view-source 링크를 새 페이지로 열어보았습니다. 소스 코드 분석 php 코드 부분을 확인해 보았습니다. $val_id="guest"; $val_pw="123qwe"; for($i=0;$i
webhacking.kr old-24 이해하기 old-24 문제는 client ip와 agent 정보로 시작합니다. view-source를 새 링크를 통해 열어보았습니다. 소스 코드 분석 if($ip=="127.0.0.1") { solve(24); exit(); } 해당 if문을 통해서 $ip의 값이 127.0.0.1을 가질 때 문제가 해결되는 것을 확인할 수 있습니다. if($REMOTE_ADDR){ $ip = htmlspecialchars($REMOTE_ADDR); $ip = str_replace("..",".",$ip); $ip = str_replace("12","",$ip); $ip = str_replace("7.","",$ip); $ip = str_replace("0.","",$ip); } $ip의 값은 $REMOTE_ADDR의 값에 의해 ..
webhacking.kr old-18 이해하기 old-18 페이지는 "SQL INJECTION" 이름을 가지고 있습니다. 아래에 "view-source" 링크가 있습니다. 새 탭을 열고서 링크를 들어갔습니다. 소스코드 분석 색 표시가 되어있는 php 구문이 이번 문제의 핵심입니다. db가 언급되는 것으로 보아 데이터베이스를 다루는 것이며, 사용자 정보가 저장된 것으로 생각됩니다. 페이지의 제목이 SQL INJECTION인 만큼 정보를 알아낼 수 있는 SQL 삽입을 통해서 데이터베이스에 비정상적 동작을 하도록 유도하는 것이 문제 해결의 실마리입니다. 이를 위해서는 데이터베이스에 접근하는 구문을 이해하여 어떻게 동작하는지 알아야 합니다.
webhacking.kr old-17 이해하기 old-17 100pt 문제의 페이지로 들어가겠습니다. 텍스트 상자와 체크박스로 구성된 화면입니다. f12를 눌러서 페이지 소스코드를 확인하겠습니다. 페이지 소스코드 분석 script 태그에서 unlock이라는 이름으로 큰 분량의 연산 결과를 저장하는 것을 알 수 있습니다. function sub(){ if(login.pw.value==unlock){ location.href="?"+unlock/10; } else{ alert("Wrong"); } } login.pw.value는 사용자가 입력한 텍스트 값을 의미합니다. 그 값이 unlock의 값과 같다면 페이지 이동(location.href)이 발생하게 됩니다. 문제가 해결된다는 의미입니다! 이번 페이지의 문제는 해당 연산을 어떻게 수행할 것인지 물어보..
webhacking.kr old-16 이해하기 old-16 100pt 문제의 해결을 시작하겠습니다. 페이지에 들어가면 별이 찍혀있는 것을 확인할 수 있습니다. 하지만 이것으로 정보를 알기엔 너무나 부족합니다. 크롬에서 키보드 f12를 눌러서 페이지 소스코드를 확인했습니다. 페이지 소스코드 분석 이전의 문제들에 비해서 코드의 형식과 길이가 길어졌음을 확인할 수 있습니다. 그래서인지 친절하게 주석으로 "do it"이라는 표시를 해주셨네요 :) 다른 코드들을 자세히 해석하는 것보다 do it을 집중적으로 알아보겠습니다. if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it! cd는 변수를 의미하는 것 같습니다. 124일 때 실행되는 코드입니다. location.href 문장이 있으니 정답과..