Gae Ko's Blog

[webhacking.kr] challenges24 본문

웹해킹 /[webhacking.kr]

[webhacking.kr] challenges24

Gae Ko 2017. 11. 7. 01:12

이 페이지의 소스페이지를 보면 


index.phps (주석처리된 부분)로 넘어가면 뭐가 있나보다. ( source가 '출처'라는 뜻이므로 index.phps가 출처라는 뜻)



[코드 풀이]

변수 server와 cookie를 extract함수로 

extract( ) 함수란 ? -> extract( $array ) 로 사용 

  배열속의 키값들을 변수화 시킨다

$_GET, $_POST, $_SERVER 같은 전역변수에 사용하게 되면 보안상의 문제가 있다고 한다.

취약하지 않도록 사용되는 경우는 변수를 선언하기 전에 extract 함수를 사용하거나 

extract로 바꿔진 변수가 다시 다른 값이 들어가게 되면 취약하지 않다. 

또한 공격자가 내부 변수명을 알아야 공격이 가능하다는 점과 

extr_skip이 옵션으로 선언된다면 취약하지 않다. 

$ip = 현재 사이트 접속한 사용자(나의) ip // 문제페이지 표에 작성된 부분에 보이는 (1,2)에 해당하는 값이 바로 이 변수에 저장된 값 

$agent =  사이트 접속한 사용자 환경 // 얘도 마찮가지로 문제페이지에 작성된 표 (2,2)에 해당하는 값

// $ip=$REMOTE_ADDR 만 있어도 되지 않나? 왜 굳이 IF문으로 값을 넘겨주는 거지 ? --> extract함수 취약점 보안하려고?! 맞나 ? 


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


뭘까 ?.....REMOTE_ADDR 라는 이름의 쿠키...? 

아 cookie에 remote_addr의 값이 들어오면 ip값에 변환을 준다는 뜻 

$ip에 저장된 값에 12 , 7. , 0. 라는 문자열은 없애준다. 

$ip 에 저장된 값이 127.0.0.1 인 경우 문제가 풀린대...

ip 값을 변환시켜야하는 거 같다. 


간단히 정리해보면 

1. 127.0.0.1란 값을 $ip값에 넣어야함

2. $ip = REMOTE_ADDR

3. REMOTE_ADDR값에 12와 7. 와 0. 이 들어가면 그 값은 자동 삭제된다.


여기서 알아야하는 점은 str_replace함수는 바꿀 문자열이 문자열에서 처음 발견되는(?) 것만 거른다는 것이다.

즉, 문제에서 12를 없앤다는데 $ip = 1212.12.12.12 이면 맨 처음에 보이는 12만 적용되서 $ip= 12.12.12.12가 된다.

이걸 이용해서 if문의 str_replace()함수를 통한 $ip값 변환을 거쳐도 127.0.0.1이 되도록하기 위해선 $ip = 112277..00..00..1이여야 한다.


쿠키를 보니까 REMOTE_ADDR라는 이름의 쿠키는 없었다. 

만들어줘야한다.

그래서 개발자도구의 콘솔창을 이용해서 저 이름의 새로운 쿠키를 만들어준다.


( 자바스크립트에서 쿠키를 생성할 수 있음 이를 위한 속성이 document.cookie 로 형식은 document.cookie = "NAME = SOKE" 이다. )


enter을 누르면


라고 값이 넣어졌다는 알림창이 뜬다.

새로고침을 해주면 

Clear !!!


[질문]

1. 왜 쿠키를 만들어줬는데 다시 쿠키 눌러보면 

REMOTE_ADDR라는 이름의 쿠키가 안보이는데 왜죠?





'웹해킹 > [webhacking.kr] ' 카테고리의 다른 글

[webhacking.kr] challenges42  (0) 2017.11.07
[webhacking.kr] challenges26  (0) 2017.11.07
[webhacking.kr] challenges1  (0) 2017.10.23
[webhacking.kr] challenges4  (0) 2017.10.23
[webhacking.kr] challenges6  (0) 2017.10.20