32번의 초기화면이다. 1등인 lib123을 클릭하니 hit가 하나 올라갔다. 다시한번 누르니까 no!라고 뜨며 hit가 올라가지 않는다. 맨 밑에 있는 Join버튼을 클릭하니 Done이라는 메시지가 출력되며 내 아이디인 khe0616이 순위표에 추가되었다. 내 아이디를 클릭하니 no라고 뜬다. vote_check라는 쿠키가 있는데, 이름을 보면 사용자가 투표를 했는지 안했는지 확인하는 쿠키인듯 하다. 쿠키의 내용을 공백으로 만들고 내 아이디를 클릭하니 hit가 1상승하였다. 그리고 나서 vote_check쿠키의 내용을 확인하면 다시 ok로 되어있다. 참고로 내 아이디를 클릭하는 것은 위와 같은 주소로 접속하는 것과 같다.(32단계 초기 페이지의 추소 + ?hit=khe0616) hit표시 형식이 현재 ..
11번 문제의 초기화면 코드는 별거 없고 초기화면에 써있는 php코드가 힌트이다. preg_match("정규식","검사할 문자")는 "검사할 문자"에 대한 "정규식"패턴의 존재여부를 검사하는 함수로 존재하면 true(1), 존재하지 않으면 false(0)을 리턴한다.이 함수는 이메일, 전화번호 등을 올바른 형태로 입력받기위해 많이 사용된다. $pat="/[1-3][a-f]{5}_.*내IP.*\tp\ta\ts\ts/";if(preg_match($pat,$_GET[val])) { echo("Password is ????"); }즉, 이 문제는 정규식 $pat의 패턴을 갖는 문자열을 val이라는 변수(GET방식)으로 전달하면 풀리는 문제이다. 정규식은 /으로 감싸주므로 슬래쉬는 입력하지 않아도된다.이 정규식을..
웹쉘 파일을 업로드하는 문제이다. 파일의 타입이 힌트라고 한다. 코드에는 특별한 힌트가 없다. 메모장으로 hello.php라는 파일을 만든 후 첨부하여 제출하였더니 access denied라고 뜬다. 이미지 파일을 업로드 시켰더니 업로드가 정상적으로 된다. php파일에 대해서 필터링이 걸려있는 것 같다.문제에 주어진 힌트는 파일 타입이었다. 파일 타입을 변조한다면 php파일의 업로드가 가능해질 것이다. 일단 hello.php파일의 Content-Type은 application/octet-stream이다.이 Type의 파일은 업로드할 수 없다. 1.png파일의 Content-Type은 image/png이다.이 Type의 파일은 업로드 가능하다. 이를 통해 서버에서 파일의 유효성을 검사할때 Content-T..
36번 문제 초기화면 코드는 별다른게 없다. viblackout이 힌트이다. blackout은 정전이라는 뜻이다. 즉, vi에디터로 코드를 작성하는 도중에 비정상적으로 종료된 상황을 의미하고 있다. vi는 작성중에 비정상적으로 종료될 경우 확장자가 swp인 파일이 추가 생성된다.예) car.php 라는 파일을 vi에디터로 작성 하던 중 비정상적으로 종료될 경우 -> .car.php.swp 파일이 생성됨 문제의 파일명은 index.php이다. 따라서 .index.php.swp를 입력했는데 파일이 없다고 나온다. 구글이나 네이버에서 다른사람들의 풀이를 찾아본 결과, 최근들어 이 문제가 막힌 것 같다.
31번 문제에 접속하면 간단한 코드와 함께 에러 메시지 Connection timed out이 출력된다.fsockopen("연결할 도메인이나 ip", "포트번호", "에러", "에러 메시지", "연결 시도시간") 함수를 이용해서ip : 내 pc의 외부 ip포트번호 : 10000~10100으로 접속을 시도하는데, 접속이 실패하였기 때문에 die() : 메시지를 출력한 후 종료하는 함수가 호출되었다.평소에 만번대의 포트를 사용하지 않기때문에 접속에 성공하기위해 만번대의 포트를 직접 열어주어야 한다. 내 pc의 내부 ip를 ipconfig를 이용하여 확인하였다.내부 ip : 192.168.0.2 일단 공유기의 포트포워딩기능을 이용해서내 pc의 외부 ip : 10000~10100 으로 접속을 시도하면내 pc의 ..
52단계의 초기 페이지이다. 소스코드는 특별한게 없다. 헤더생성을 클릭하면 "khe0616"이라는 값을 가진 변수"id"가 서버에 GET방식으로 전송된다. Burp Suite를 이용하여 헤더생성을 클릭하기 전, 후의 헤더를 비교하였다. 헤더생성 클릭전 헤더생성 클릭후id: khe0616 이라는 헤더가 추가되었다.즉, $_GET[id]로 헤더 인젝션이 이루어졌음을 알 수 있다. 주의할점은, 모든 페이지에서 (초기url)/?id=khe0616 을 입력했다고 헤더부분에id: khe0616이 추가되는 것은 아니다.52단계 페이지를 코딩할때 (초기url)/?id=khe0616입력시 헤더에 id: khe0616 이 추가되도록 구현 해놓은 것일 뿐이다. 따라서,(초기페이지 url)/?id=khe0616%0D%0ASe..
초기 화면이다. test.txt와 test.zip를 다운로드할 수 있도록 되어있다. 코드를 확인하였다. test.txt의 download 클릭시 -> GET방식으로 "down"에 "dGVzdc50eHQ="라는 값을 넣어 서버에 전송한다. test.zip의 download 클릭시 ->"Access Denied"라는 알림 메시지가 뜬다. 실제로 test.txt의 download클릭하면 나타나는 화면이다. 정답과는 거리가 멀어보인다. 실제로 test.zip의 download클릭하면 나타나는 화면이다. 초기 페이지의 표에서 test.zip파일의 subject가 read me인 것이 힌트이다. download를 클릭하면 다운로드 되지 않지만 다른 방법이 있다. 위에서 test.txt의 download를 클릭하면 ..
25번 문제의 초기화면 리눅스 방식으로 파일의 이름과 권한이 나타나있다. 읽기는 누구나 가능하다고 나와있다. hello.txt로 들어가니 초기화면의 회색 텍스트 상자에 출력되었던 hello world가 보인다. 초기화면에서는 hello.txt가 실행되서 회색 텍스트 상자에 출력되는 것 같다. 코드를 확인해 봤으니 별 내용이 없다. 초기화면의 URL인데, ?file=hello 부분이 힌트인 것 같다. GET방식으로 "file"이라는 변수에 "hello"라는 값을 넣어 전송하고 있다. hello라는 값을 전달했기때문에 hello.txt가 실행된 것으로 보인다. 위와 같은 원리로 password.php를 실행시켜 그 내용이 회색 텍스트 상자에 출력된다면 답을 알아낼 수 있을 것이다. 따라서 "file"이라는 ..
47단계의 초기화면 주석처리되어 잇는 index.phps가 힌트인 것 같다. index.phps로 들어가면 소스코드가 나온다. POST방식으로 전달받은 "email"이 존재하는 경우 if안의 내용이 실행되도록 구성되어 있다. mail()함수는 이메일을 보내는 함수이다. mail(받는 사람 주소, 제목, 내용, 이메일 헤더(참조)) 위 코드는 email의 값을 POST방식으로 전달하면 받는이 : admin@webhacking.kr 제목 : readme 내용 : password is $pass 헤더(참조) : From : [폼에 입력한 문자열] 와 같은 이메일을 보내게 된다. 이 이메일에는 password정보가 담겨있다. 그러나 이 메일을 받는사람은 admin@webhacking.kr 뿐이므로 나는 내용을 ..