저장소

[webhacking.kr] 24번 풀이 본문

IT/웹 해킹

[webhacking.kr] 24번 풀이

huiu 2021. 8. 27. 11:30

https://webhacking.kr/

 

Webhacking.kr

Index Welcome Stranger! Chatting Notice(en) [2021-04-16] Score of old challenges has been adjusted to 1/10. For a while now, new challenges will be added "without" notice. [2020-08-12] Replace chat feature with Discord. Please do not cause inconvenience to

webhacking.kr

24번 문제는 php 문제다. view-source로 php 소스를 확인했다.

ip 변수 값이 127.0.0.1이면 문제가 solve된다.

str_replace 함수를 사용해서 전달받는 ip 값이 127.0.0.1이 되지 못하도록 막고 있다.

또한 쿠키값을 받아 처리하고 있음을 알 수 있다.

 

여기서 눈에 띄는 함수 3개를 간단히 정리하면 아래와 같다.

  • extract(): 배열 속의 키 값을 변수화 시켜주는 함수
  • htmlspecialchars(): 특정 char을 HMTL entity로 변경해주는 함수 
  • str_replace(): 특정 문자열을 대체 문자열로 바꾸는 함수
더보기

PHP 소스코드

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 24</title>
</head>
<body>
<p>
<?php
  extract($_SERVER);
  extract($_COOKIE);
  $ip = $REMOTE_ADDR;
  $agent = $HTTP_USER_AGENT;
  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);
  }
  if($HTTP_USER_AGENT){
    $agent=htmlspecialchars($HTTP_USER_AGENT);
  }
  echo "<table border=1><tr><td>client ip</td><td>{$ip}</td></tr><tr><td>agent</td><td>{$agent}</td></tr></table>";
  if($ip=="127.0.0.1"){
    solve(24);
    exit();
  }
  else{
    echo "<hr><center>Wrong IP!</center>";
  }
?><hr>
<a href=?view_source=1>view-source</a>
</body>
</html>

str_replace를 참고하면 127.0.0.1이 결과로 나오기 위해 ip 변수값에 들어가야 하는 문자열은 112277...00...00...1이다.

 

24번의 경우 URL에 인자값을 바로 주는 형식이 아니고, 쿠키를 새로 생성해 넘겨주어야 한다.

크롬의 확장 프로그램을 사용하면 간단하게 쿠키를 생성할 수 있다.

원래는 edit this cookie를 사용하는데 크롬, 엣지 둘다 쿠키가 생성되지 않는 문제가 있어 다른 프로그램을 사용했다.

 

위와 같이 정보를 입력해준다. 소스코드를 참고하여 이름은 REMOTE_ADDR(클라이언트의 ip를 파악하는 데 사용됨)로 생성한다.

Create New 버튼을 누르면 위와 같이 쿠키가 만들어진다.

이후 새로고침을 하면 문제가 풀린다.

client ip가 127.0.0.1로 바뀐 것을 볼 수 있다.

'IT > 웹 해킹' 카테고리의 다른 글

[webhacking.kr] 10번 풀이  (0) 2021.08.30
[webhacking.kr] 25번 풀이  (0) 2021.08.27
[webhacking.kr] 12번 풀이  (0) 2021.08.23
[webhacking.kr] 39번 풀이  (0) 2021.08.23
[webhacking.kr] 35번 풀이  (0) 2021.08.20
Comments