본문 바로가기

Security/Web2 Hacking

[WebHacking] webhacking.kr 24번 문제 풀이

24번 문제에서 view source를 누르면 위와 같은 소스 코드들이 나온다. 여기서 코드들을 훑어 보다가 맨 마지막 줄인

if($ip=="127.0.0.1"){
    solve(24);
    exit();

를 보고 24번 처음 들어갔을때 있던 ip의 값이 127.0.0.1이면 24번 문제가 풀리는 것 같았다. 그래서 ip를 어떻게하면 변경 할 수 있을까 생각을 해보았다.

Editthiscookie를 이용해 적혀져있는 ip값을 변경해보려고했다.  코드를 보면

 

$ip = $REMOTE_ADDR;
  $agent = $HTTP_USER_AGENT;
  if($REMOTE_ADDR){
    $ip = htmlspecialchars($REMOTE_ADDR);

이므로 editthiscookie에서 nameREMOTE_ADDR로 해주고 127.0.0.1을 입력했다.

 

입력했더니 ip에 있는 값이 1로 변했따?? 그래서 이유를 찾기 위해서 코드를 더 자세히 살펴보니 6번 문제 풀때 봤던 str_replace함수가 있다.

if($REMOTE_ADDR){
    $ip = htmlspecialchars($REMOTE_ADDR);
    $ip = str_replace("..",".",$ip);
    $ip = str_replace("12","",$ip);
    $ip = str_replace("7.","",$ip);
    $ip = str_replace("0.","",$ip);
  }

REMOTE_ADDR일떄 “..”->”.” , “12” -> “ ”, “7.”-> “ ”, “0.”-> “ ”으로 대체된다는 코드이다.

그래서 127.0.0.1을 입력했을떄 12는 공백으로 치환되고 7.도 공백 0.도 공백으로 치환되서 결과적으로 1만 남았던 것이다. 그래서 이를 해결하기 위해  112277...00...00...1를 입력해서 최종적으로 ip값이 127.0.0.1이 되도록 만든다.  성공!!!!

 

고찰: ip값을 127.0.0.1을 넣었을떄 갑자기 1이 나와서 당황했다. 지금까지 코드를 자세히 보지않고 문제푸는 방법에만 집중해서 풀었더니 이런 실수가 나왔던거 같다. 앞으로는 코드 한줄한줄을 자세히 파악해서 풀어야겠다 또한 editthiscookie에서 REMORE_ADDR 의 값을 변경하는데 값이 추가가 계속 안되서 cookie editor을 설치해 REMOTE_ADDR을 추가하는 방법으로 풀었다.