본문 바로가기

워게임

webhacking.kr [문제 18번] 세번째 라인의 마지막 주자인 18번 문제를 풀어보겠다. 해당 문제의 배점은 100point이다. 해당 문제에 접속해보자 문제에 접속하자 마자 해당 문제의 해결책이 SQL INJECTION이라는 힌트가 주어져 있고, 인젝션할 쿼리를 포함하는 페이지의 소스가 주어진다. 주저없이 해당 인덱스 페이지의 소스코드를 살펴보자. 해당 소스코드에서 눈에 띄는 점 두 부분이 있다. 첫번째, 특정한 문자열을 필터링 하는 부분이다. 조건문을 확인해보면, eregi(인자1, 인자2) 함수를 이용하여 특정한 문자열들을 필터링 하고 있다. 보고 확인 가능하지만 대략적으로 공백문자, '/', '&', 'union', 'select', 'from', '0x' 등의 문자열들을 필터링 하고 있다. 다음과 같은 문자열을 이용하여 sql .. 더보기
webhacking.kr [문제 12번] 웹해킹 12번 문제를 풀어보겠다. 포스팅하기전 테스트할 겸 혼자서 한번 풀어보았는데 미리 풀려버려서, 해당 문제가 풀려진 상태지만 정보도 정리할겸 다시 한번 풀어보겠다. 점수는 250point이다. javascript challenge라고 작성되어 있으며, 문자열을 확인해보면 해당 문제는 자바스크립트를 이용하여 푸는 문제인 것 같다. 이렇게해서는 정보가 부족하니 소스코드를 확인해보자. 해당 소스코드를 확인해보니, 여러가지 숫자가 나열된 것을 확인할 수 있다. 이것이 아마 비밀정보(?)로 예상된다. 소스코드를 한번 구체적으로 해석해보자. String.fromCharCode(인자1,인자2, ...) eval(인자1) 해당 정보를 토대로 해석해보면, 정수값의 나열로이뤄진 부분이 특정 문자열을 반환할 것이고, .. 더보기
webhacking.kr [문제 11번] 웹해킹 11번 문제를 풀어보겠다. 해당 문제의 배점은 300point이다. 해당 문제를 클릭하면 다음과 같은 정보가 주어진다. 해당 힌트를 분석해보자. $pat="/[1-3][a-f]{5}_.*CLIENT_IP.*\tp\ta\ts\ts/"; if(preg_match($pat,$_GET[va])) { echo("Password is ????");} 간단하게 해석해보면 $pat란 변수에 정규표현식을 담고 GET방식으로 전해진 val이라는 변수에 해당 정규표현식에 맞는 문자열이 전해지면, Password를 출력하는 것으로 확인된다. 정규표현식을 하나하나 살펴보자. 1. [1-3] [1-3] : 1~3사이의 문자 중 하나를 찾음 예시) 1, 2, 3 2. [a-f]{5} [a-f]{5} : a~f사이의 문자 중.. 더보기
webhacking.kr [문제 10번] 9번 문제가 어려웠던 관계로 10번 문제는 쉽길 바라며, 해당 문제를 풀어보겠다. 10번 문제는 250point이다. 해당 문제를 클릭하자. 이상한 형태를 띄고있다. 바로 소스를 확인해보자. 다른 부분은 확인할 필요는 없고 id가 hackme인 부분의 메소드들만 확인해보겠다. onmouseover : 마우스를 올렸을 경우, 해당 텍스트를 yOu로 수정한다. onmouseout : 마우스를 내렸을 경우, 해당 텍스트를 O로 수정한다. onclick : 해당 요소를 왼쪽으로 한칸씩 이동시키며, 만약 해당요소가 800이 되었을 경우, 특정 페이지로 이동한다. 실제로 마우스를 올리거나 내렸을 경우, 다음과 같이 정상적으로 동작함을 확인할 수 있고, 한번 클릭시에 해당 요소가 이동하는 것을 확인할 수 있다. 여러.. 더보기
webhacking.kr [문제 2번] 문제 2번을 풀어보겠다. 500 point나 하는 2번 문제를 클릭해보겠다. 길동이 성님이 젠야타 자세로 반겨준다. 뭐 어쩌라는건지 모르겠다. 이곳저곳을 둘러보자. 별다른 특이 사항이 없지만 Board를 클릭시 게시물 한개가 보이고, 이를 클릭해보니 비밀번호가 걸려있는 상당히 의심스러운 글이다. 한번 해당 비밀번호를 알아내보기위하여 소스코드를 살펴보자. 무엇을 의미하는지 딱히 정확한 정보가 없어서 index홈페이지로 돌아가 소스코드를 찬찬히 살펴본결과 두가지 의심스러운 점을 발견했다. 네비게이션 바의 등록되지 않은 admin이라는 페이지가 있고, admin이라는 페이지에 접속해보자. 아니나 다를까 어드민페이지에 비밀번호가 걸려있고, 또한 가지 index에서 이상한 점이 시간정보가 주석 처리되어있다. 굳이.. 더보기
webhacking.kr [문제1번] 회원 가입을 완료하였으므로 이제 본격적으로 문제 풀이에 나서보겠다. 네비게이션 바에 있는 항목 Challenges - Auth를 클릭한다. Challenge를 클릭하면 그렇다면 해당 문제들의 항목과 배점을 확인할 수 있다. 문제 1번을 눌러보자. 위와 같은 홈페이지를 확인할 수 있다. 그리고 index.phps에 마우스를 가져다놓으니 커서가 활성화 되는것을 확인하였다. 이제 해당 웹문서를 열어보자. 다음과 같은 소스코드를 확인할 수 있다. 해당 소스코드를 분석해보자. --------------------- ----- index.phps ----- 자바 스크립트 부분만 살펴보자. user_lv이란 쿠키가 존재하지 않으면 user_lv이란 쿠키 변수에 1을 할당한다 jquery 객체인 password 변수를.. 더보기
webhacking.kr [회원가입] 휴대폰의 분실과 노트북의 용량 부족으로 인해 일시적으로 안드로이드와 머신러닝 공부가 지연되어서 심심한 관계로 워게임이나 풀어서 포스팅해보자는 명목으로 webhacking.kr을 풀기 시작하였다. 웹해킹을 시작하기에 앞서 로그인해야 하는데, 이게 무슨일인가 로그인 항목외에 회원가입을 찾아볼 수 없다. 한번 웹 페이지의 소스를 분석해 보자. 중간에 보면 주석 처리된 Register 라는 항목이 보인다. 소스코드를 조금 살펴보자. 회원 가입 버튼이 주석처리로 인해 비활성화 되어있는 것으로 확인된다. 그렇다면 크롬 개발자도구로 해당 버튼을 활성화 시켜보자. 해당 회원가입이 활성화 된것을 확인할 수 있다. 회원 가입 버튼을 클릭시 아이디 비밀번호 이메일 디코드미 라는 인풋 박스가 보인다. 아이디 비밀번호 이메일은.. 더보기