이 영역을 누르면 첫 페이지로 이동
caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

페이지 맨 위로 올라가기

[Webhacking.kr] Challenge old-24

caputdraconis

[Webhacking.kr] Challenge old-24

  • 2020.08.14 14:26
  • Security/WebHacking
글 작성자: caputdraconis
반응형
<?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>

이 문제를 정확하게 이해하려면 php에 내장된 함수인 exract() 함수에 대해서 살펴볼 필요가 있다.

extract는 '추출하다'라는 의미를 가진 영어단어다. 이 뜻에 맞게 어느 배열로부터 추출하면 인덱스(?)만으로 그 값에 접근할 수 있다. 직접 살펴보자. 

만약 GET 방식으로 데이터를 주고받을 때 우리는 GET 방식으로 전해진 데이터에 접근하기 위해 $_GET['x'], $_GET['y']와 같이 사용한다. 

여기서 만약 extract($_GET)을 앞에 적어준다면????? $_GET['x']는 $x로,  $_GET['y']는 $y로 접근할 수 있다.

 

그럼 위의 코드에서 살펴봐보자.

extract($_SERVER);
extract($_COOKIE);
$ip = $REMOTE_ADDR;
$agent = $HTTP_USER_AGENT;

$REMOTE_ADDR은 따로 선언된 적이 없는 변수다. 그런데 이를 사용하고 있다. 이유는 바로 앞의 extract($_COOKIE)에 있다. 쿠키값이 저장되는 배열인 $_COOKIE로부터 추출한 결과 $_COOKIE['REMOTE_ADDR], 즉 REMOTE_ADDR이라는 이름의 쿠키값에 $REMOTE_ADDR만을 사용해서 접근할 수 있다.

 

그렇다면 이번 문제는 REMOTE_ADDR이라는 쿠키값을 저 밑에 있는 변환과정을 거쳤을때 127.0.0.1이 되게 하면 된다. Editthiscookie 확장 프로그램을 이용한다.

 

딱 열었을 때 REMOTE_ADDR이라는 이름의 쿠키가 없다. + 버튼을 이용해 만들어주자.

 

밑에 있는 replace 함수를 모두 거칠거를 생각해서 위와 같이 쿠키값을 작성하고 새로고침을 누르니깐?

으악! ..을 .으로 변환하는 replace 함수가 있었다. 

이대로 간다!!!!!

 

 

 

 

끼요오오옷! 률류~~

 

 

반응형

댓글

댓글을 사용할 수 없습니다.

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Webhacking.kr] Challenge old-11

    [Webhacking.kr] Challenge old-11

    2020.08.15
  • [Webhacking.kr] Challenge old-10

    [Webhacking.kr] Challenge old-10

    2020.08.14
  • [Webhacking.kr] Challenge old-17

    [Webhacking.kr] Challenge old-17

    2020.08.14
  • [Webhacking.kr] Challenge old-16

    [Webhacking.kr] Challenge old-16

    2020.08.14
다른 글 더 둘러보기

정보

caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

  • caputdraconis의 첫 페이지로 이동

검색

카테고리

  • 분류 전체보기 (168)
    • Cloud (3)
    • Computer Network (12)
    • Database (2)
    • Terraform (2)
    • 🥚고리즘 (13)
    • 겅부겅부🙃 (10)
      • Naver CS50 코칭스터디 (2)
      • Machine Learning (1)
      • Computing System (6)
    • 언어&프레임워크 (20)
      • Python (4)
      • Django (10)
      • Node JS (1)
      • C++ (2)
      • Java (1)
      • Flutter (2)
    • Security (76)
      • WebHacking Study (11)
      • 지옥방 스터디 (22)
      • 여름방학 스터디 (2)
      • PWN Study (6)
      • SUA Reversing Study (3)
      • PWN (3)
      • WebHacking (20)
      • Reversing (4)
    • 알고 있으면 도움되지 않을까,,? (23)
    • 일상다반사 (1)
    • 근황 정리 (1)
    • 42 Seoul (1)
      • Setting (1)

인기 글

공지사항

태그

  • Python
  • old-16
  • 파이썬기초
  • 리스트함수
  • 파이썬
  • 드림핵
  • 웹해킹.kr
  • 파이썬함수

나의 외부 링크

  • Github
  • solved.ac
  • caputdraconis@kakao.com

정보

caputdraconis의 caputdraconis

caputdraconis

caputdraconis

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © caputdraconis.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.