본문 바로가기

hacker

webhacking.kr [문제 13번] 3번째 라인으로 넘어가서 문제 13번을 풀어보겠다. 해당 문제의 배점은 1000point이며 지금까지 나온 문제 중 제일 높은 배점을 갖고있다. 클릭해보자. SQL INJECTION기법으로 푸는 것으로 예상되며 힌트로 select flag from prob13password라고 주어져 있다. 그렇다면 시험삼아 인젝션을 시도해보자. 몇가지 문자들이 필터링 되어있는 것 같다. 다사다난한 삽질(?)이 예상된다. 임의로 여러가지를 테스트해보자. 1) 0을 입력시 아무런 반응이없다. 2) 1을 입력시 3) 2를 입력시 4) 2이상을 입력시 해당 결과를 토대로 예상해보면 result가 1일때는 참 0일때는 거짓으로 나온다고 생각된다. 해당 가설을 검증해보자. no=2 or 1 (참) 이라는 쿼리를 보내서 해당 결과.. 더보기
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 [문제 9번] 중간에 알바면접이 있어서 포스팅을 못했다. 미루고 미루던 웹해킹 9번 문제를 풀어보겠다. 9번문제 무려 900point로 전체 문제 중 두번째로 점수 배점이 높다. 해당 문제를 풀면 대략적인 다른 문제들의 난이도를 예상할 수 있을 것으로 예상된다. 문제 클릭시 다음과 같은 페이지를 보여준다. 소스코드를 확인해보자. 별다른 정보는 없지만 각 페이지가 no=1, no=2, no=3로 하이퍼링크 되어 있는 것을 확인할 수 있다. 실제 각각의 페이지를 확인해보자. 1번 페이지 2번 페이지 3번 페이지ㅓ 다음과 같은 페이지를 분석해보니. 데이터베이스에서 no일때의 각각의 id값을 가져와 화면에 뿌려주는 것으로 확인된다. 또한 no=3일때의 id값의 길이는 11로 힌트가 주어졌다. 과연 해당 가설이 맞는지 no=4.. 더보기
webhacking.kr [문제 8번] 8번 문제를 풀어보자. 해당 문제의 점수는 350point이다. 실제로 해당 문제를 눌러보자. 따로 얻을 수 있는 정보는 없으니 해당 페이지의 소스코드를 확인해보자. 해당 소스코드에 대한 힌트가 있으니 확인해보자. 다음과 같은 소스코드가있다. 대충 봤을 때 $ck[0] 변수가 "admin"이 될 경우 해당 문제가 풀리는 것으로 생각된다. 구체적으로 소스코드를 분석해보자. 해당 소스코드가 분석이 완료되었으니 문제해결 전략을 구상해보자. 처음에 "select id from lv0 where agent = '$_SERVER[HTTP_USER_AGENT]'"라는 쿼리를 날린다. 허나 해당 쿼리가 올바르게 실행되지 않을 것이다. HTTP_USER_AGENT에 들어간 변수값이 정상적인 쿼리가 아니기 때문이다. 해당.. 더보기
webhacking.kr [문제 7번] 두번째 라인의 첫번째 문제인 7번 문제를 풀어보자. 문제의 점수는 300point이다. auth 버튼을 클릭해보자. 당연히 나에게 인증권한을 쉽게 줄리가 없다. 이제 한번 소스코드를 확인해보자. 소스코드를 확인해본 결과 val값이 2일때 admin mode를 주어진다고 나와있으며 해당 서버의 php파일은 index.phps로 되어있다. 한번 val값을 2로 설정한 후 해당 페이지를 확인해보자. 다시 해당 페이지의 소스코드를 확인해보자. 별 내용이 없으므로. 이제 index.phps를 확인해보자. 해당 소스코드를 보니 라는 힌트와 함께 언뜻봐서 쿼리를 날리는 코드가 보인다. 생각보다 소스코드가 길다. 이제 해당 소스코드를 분석해보자. 해당 파트를 확인해보면 GET방식으로 넘어온 변수 val값을 받아서 go.. 더보기
webhacking.kr [문제 6번] 첫번째 라인의 마지막 문제인 6번 문제를 풀어보겠다. 문제의 점수는 100point이다. 상대적으로 다소 쉬운 문제일 것으로 예상된다. 힌트가 base64로 주어져있다. 이를 볼때 base64를 이용한 문제풀이일 것으로 예상된다. index.phps를 클릭해보자. 해당 페이지의 소스코드 일부이다. 이제 해당 소스코드를 조금더 구체적으로 분석해보자. 해당 소스코드에 주석을 달아놓았다. 소스코드를 보고 생각하여 보면 문제 해결 전략이 나온다. 두번째 파트의 디코드 과정을 거쳐서 decode_id와 decode_pw에 담긴 문자열이 모두 "admin"이 되게끔 하면 된다. 디코드 과정전의 변조할 쿠키의 값을 알아보면 되는데, 해당 과정을 시중에 나와있는 소스코드를 조금 수정하여 작성하였다. import bas.. 더보기