webhacking.kr - old 24 (function_extract)

2024. 3. 12. 15:41·Wargame/Webhacking.kr

 

문제화면이다.

view-source를 통해 코드를 봐보자.

 

 

 

 

 

 

 

 

 

<?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>

 

 

client ip 가 127.0.0.1 이면 문제가 풀리는 거 같다.

 

 

 

 

 

 

 

 

 

 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);
  }

 

중요한 부분을 간추려서 본다면

 

'extract($_COOKIE);' : 쿠키에서 변수를 추출하여 현재의 변수로 만듦

'$ip = $REMOTE_ADDR;' 사용자의 IP를 출력시킴

쿠키를 이용해서  REMOTE_ADDR 를 만들어 Client ip를 바꿔보자.

 

 

 

 

 

 

 

 

 

'127.0.0.1'  값을 입력했지만 필터링에 의해 1 로 만 출력되는 걸 볼 수 있다.

 

그러면 필터링을 받아도 '127.0.0.1' 이 나오게 해 보자.

 

 

 

 

 

 

 

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);
  }

 

str_replace를 보면 연속된 점 '..' , '12', '7.' , '0.'를 필터링시켜 제거해 버린다.

 

연속된 점은 '.'으로 변환한다.

 

 

 

 

 

 

 

 

 

 

 

 

17.277... 00... 00... 1 -> '7.' 제거[1277....~] -> '7.' 제거[127.. 00~] -> '..'은 '.'로 변환[127.00...00...1] -> '0.' 제거[127.0..00...1]  -> '..' 은 '.' 로 변환[127.0.00...1] -> '0.' 제거 [127.0.0...1] -> '..' 은 '.' 로 변환 [127.0.0.1]

 

 

 

 

 

 

 

 

 

 

'Wargame > Webhacking.kr' 카테고리의 다른 글

webhacking.kr - old 39  (0) 2024.03.13
webhacking.kr - old 10  (0) 2024.03.13
webhacking.kr - old 03 (SQL Injection)  (0) 2024.03.08
webhacking.kr - old 26 (URL Encode,Decode)  (1) 2024.03.08
webhacking.kr - old 18 (SQL Injection)  (0) 2024.03.06
'Wargame/Webhacking.kr' 카테고리의 다른 글
  • webhacking.kr - old 39
  • webhacking.kr - old 10
  • webhacking.kr - old 03 (SQL Injection)
  • webhacking.kr - old 26 (URL Encode,Decode)
G_OM
G_OM
최대한 설명 열심히 하려고 합니다. 궁금한 거 있으면 언제든지 물어보셔도 좋습니다.
  • G_OM
    끄적끄적
    G_OM
  • 전체
    오늘
    어제
    • 분류 전체보기 (139)
      • 모의해킹 (8)
      • Wargame (69)
        • Linux_bandit (33)
        • Webhacking.kr (36)
      • DreamHack (52)
        • WEB (14)
        • Reverising (9)
        • System (0)
        • CTF (22)
      • Android_security (5)
      • 정보보안기사 (2)
      • IT? (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • DreamHack 에 대한 문제들...
  • 인기 글

  • 태그

    워게임
    php
    webhacking
    drozer
    php wrapper
    Android
    안드로이드
    Linux wargame
    url encode
    Linux
    sql injection
    cookies
    난독화
    Cookie
    정보보안기사
    리눅스
    insecurebankv2
    리눅스 워게임
    bandit
    bandit30
    Dreamhack
    lfi
    bandit17
    bandit18
    wargame
    union
    bandit20
    overthewire
    webhacking.kr
    CTF
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
G_OM
webhacking.kr - old 24 (function_extract)
상단으로

티스토리툴바