안녕하세요. 오늘은 Webhacking의 24번문제를 풀어보겠습니다.

홈페이지로 들어가 24번문제를 눌러주세요.

음 클라이언트 ip주소가 나오고 에이전트가 나오네요. 에이전트란 어떤 운영체제나 네트워크의 일부이며 그안에서 동작하는 시스템이란 뜻입니다. 그리고 그 밑에 틀린 IP주소라고 나오네요. 일단 소스를 봅시다. 모든 기본은 소스를 보는것부터 시작합니다.

해당 소스를 보시면 회원가입을 할때 봤던 초록색 주석부분이 있습니다.

source : index.phps라고 되어있군요. 소스는 우리말로 출처라는 뜻이므로 index.phps가 출처라는 뜻이군요. 출처를 확인하기 위해 아래 그림처럼 본 주소에 index.phps를 붙여주세요.

저는 바보라서 뭔소리인지 모르겠습니다. 이럴때는 solve()를 제일 먼저 찾는 것이 중요합니다. solve를 찾으니 앞에 조건이 하나 붙어있군요. ip주소가 127.0.0.1이면 문제를 해결한다 라고 되어있군요. 근데 문제에 나온 IP주소랑 값이 다릅니다. 이는 즉 IP주소값을 변환시켜야 할듯 하군요.

좀더 위를 보시면 if문이 하나 더 나옵니다. COOKIE에 REMOTE_ADDR의 값이 들어오면 ip의 값에 변환을 준다는군요. str_replace 함수가 쓰였습니다. replace는 대신하다 라는 뜻으로 첫번째 값이 있으면 그 첫번째 값을 두번째 값으로 대신한다 라는 함수입니다. 즉 해석하면 REMOTE_ADDR의 값에 12가 있으면 12를 " "로 대신하고 7.이 있으면 7.을 " "로 대신하고 0.이 있으면 " "로 대신하라. 라는 뜻이네요. 여기서 " "는 공백을 의미합니다. 그리고 ip주소는 REMOTE_ADDR의 값이 들어있으므로 REMOTE_ADDR의 값에 12, 7., 0.이 들어가있으면 전부 없애서 IP주소 값에 반환된다는군요.

자 이제 해석은 끝났고 문제를 해결해 보겠습니다. 

1. 우리는 127.0.0.1이란 값을 ip주소값에 넣어야 한다.

2. ip주소값은 곧 REMOTE_ADDR이다.

3. REMOTE_ADDR값의 12, 7., 0.이 들어가면 무효가 된다.

여기서 3번을 잘 보시면 12 , 7., 0.이 들어가면 무효가 된다 했는데 이것은 한번만 유효하는 겁니다. 즉 12127.0.0.1을 넣는다면 처음에 12는 없어지지만 두번째 12는 없어지지 않습니다. 즉 121이 반환되는 것이지요. 그렇다면 답은 나왔습니다. 총 두번씩 적어주면 됩니다.

121277..00..00..1 이렇게 적으면 하나씩 다 없애서 127.0.0.1이 나오겠군요. 자 이제 답은 구했습니다. 그러면 이제 이값을 REMOTE_ADDR에 넣어야 합니다. 그런데 어디에 있을까요? 앞에 COOKIE가 적혀있어 COOKIE Editor을 눌러보았습니다만 REMOTE_ADDR이름의 쿠키는 없었습니다. 이럴때에는 주소창에 직접 적어주셔야 합니다.

쿠키값을 변조시켜야 하므로 그냥 변수만 적으셔는 안되고 홈페이지에서의 함수 javascript양식에 맞추어 적어봅시다.

javascript:alert(document.cookie="REMOTE_ADDR=112277..00..00..1");

해석하면 javascript: = 자바스크립트 양식 , alert = 경로 , documnet.cookie = 쿠키를 기록하다, "REMOTE_ADDR=112277..00..00..1" = 쿠키를 이값으로 기록하겠다. 라는 뜻입니다.

주소창에 입력하셨으면 엔터를 쳐주시면 됩니다.

값이 넣어졌다는 군요. 창을 닫고 새로고침을 해주세요.

네 이것으로 문제풀이를 마치겠습니다. 감사합니다.

'Webhacking' 카테고리의 다른 글

Webhacking - 33번 문제  (2) 2015.07.11
Webhacking - 27번문제  (2) 2015.07.10
Webhacking - 문제 11번  (0) 2015.07.08
webhacking시작 - 문제17번  (6) 2015.07.05
webhacking시작 - 문제1번  (0) 2015.07.04
Posted by englishmath
,