본문 바로가기

웹 해킹(WebHacking)/CTF(webhacking.kr)10

Challenge(old) - Challenge 16번 문제풀이 문제에 처음 들어가면 별 3개가 보인다. 키보드의 다양한 키들을 눌러보면 위와 같이 여러 개의 별들이 찍힌다. 이제 소스코드 분석을 해보자! Challenge 16 * body 부분에서 onkeypress로, 키를 누를 때마다 mv 함수를 호출함을 알려주고 있다. function mv()를 해석해보면, kk()는 그냥 별을 그려주는 함수정도인 것 같다. 그리고 cd가 100, 97, 119, 115일 때, 별의 위치가 바뀌고, 124일 때 정답 페이지(.php)로 넘어가게 된다. 하지만 키보드 입력은 숫자가 아니라 영문자를 통해 입력된다. 때문에 해당 숫자가 의미하는 것은 아스키코드 기준일 것으로 예상된다. 아스키코드표를 확인해보면, 100 == d, 97 == a, 119 == w, 115 == s, .. 2021. 10. 6.
Challenge(old) - Challenge 20번 문제풀이 nickname, comment, captcha를 입력하고, Submit을 하는 문제이다. 이때 힌트이자 주의점은 time limit이 2초라고 나와있다는 점이다. time limit : 2 second nickname comment captcha 소스 코드를 확인해보면, Submit 버튼을 누르면 ck 함수가 실행되는 것을 알 수 있다. fuction ck()를 보면, id(nickname), cmt(comment), captcha는 공백이 되면 return이 되고, captcha와 lv5frm.captcha_.value가 다르면 return이 된다. lv5frm.id.value="liz0904"; lv5frm.cmt.value="hello liz0904"; lv5frm.captcha.value=lv5.. 2021. 10. 6.
Challenge(old) - Challenge 24번 문제풀이 문제 화면에서 client ip와 agent가 보이고, Wrong IP라는 문구가 보인다. view-source를 눌러 소스코드를 확인해보자! 소스코드를 확인해보면, $ip = $REMOTE_ADDR; : 변수 ip에 $REMOTE_ADDR의 값을 넣는다. if($REMOTE_ADDR){ : REMOTE_ADDR 값이 0이 아니면 실행 $ip = htmlspecialchars($REMOTE_ADDR); $ip = str_replace("..",".",$ip); : ".."으로 되어 있는 것은 "."으로 대체 $ip = str_replace("12","",$ip); : "12"로 되어 있는 것은 ""(없음)으로 대체 $ip = str_replace("7.","",$ip); : "7."으로 되어 있는 것은 .. 2021. 9. 29.
Challenge(old) - Challenge 1번 문제풀이 문제에 보면 view-source가 보인다. view-source 창에서 소스코드를 확인해보면, if문에서 COOKIE 값이 4와 같거나 크면 COOKIE는 1이 되고, 다음 if문에서 COOKIE 값이 3보다 크면 solve 함수를 실행해 정답처리가 된다. 때문에 문제를 풀기 위해선 쿠키값(Cookie)이 3보다는 크지만, 4와 같거나 크면 안된다. 즉, 3과 4 사이여야 한다. EditThisCookie를 열어 쿠키값을 3.5로 맞춰주고 초록색 체크 버튼을 눌러준다. 그 다음 다시 view-source 페이지가 아닌 원래 문제페이지로 뒤로가면 정답이다. 2021. 9. 29.
Challenge(old) - Challenge 26번 문제풀이 문제를 보면 아무것도 없이 view-source만 확인할 수 있다. view-source를 확인해보자! if(preg_match("/admin/",$_GET['id'])) { echo"no!"; exit(); } GET 방식으로 넘어온 id의 값이 admin이면 'no!'라는 문구를 출력한다. $_GET['id'] = urldecode($_GET['id']); id를, id를 urldecode()한 값으로 초기화 해준다. urldecode() 함수는 주어진 문자열을 디코드한 문자열을 반환한다. if($_GET['id'] == "admin"){ solve(26); } 만약 이 디코딩 된 id 값이 admin이면 문제가 풀린다. 실제로 id에 admin을 입력해보면, 'no!' 라는 문구가 뜬다. '디코딩'.. 2020. 11. 27.
Challenge(old) - Challenge 34번 문제풀이 webhacking.kr/challenge/js-7/ Challenge 34 webhacking.kr 이번 문제에 들어가는 순간 "debug me" 라는 메세지가 뜬다. Ctrl+u를 통해 페이지 소스를 확인해봤다. 페이지 소스 길이가 장난이 아니고, 정리도 안되어 있다. https://beautifier.io/ Online JavaScript beautifier beautifier.io 위 사이트는 코드를 정리해주는 사이트이다. 여기에 들어가서 자바스크립트 부분을 복사+붙여넣기해서 확인해보자! Beautify Code를 하면 사진과 같이 코드가 예쁘게 정리된다. 처음 "debug me" 메세지가 뜬 이유는 아마 코드에서 alert 함수를 사용했기 때문이라고 생각해, Ctrl+f 를 통해 'alert'를.. 2020. 10. 4.