반응형
첫 문제화면이다.
나의 ip와 agent를 파싱하여 출력해주는 것 같다.
source를 봐보자.
<html> | |
<head> | |
<title>Challenge 24</title> | |
</head> | |
<body> | |
<table border=1><tr><td>client ip</td><td>210.99.172.57</td></tr><tr><td>agent</td><td>Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36</td></tr></table><p><hr><center>Wrong IP!</center><hr> | |
<!-- | |
source : index.phps | |
--> | |
</body> | |
</html> | |
다음과 같이 나와 있다. index.phps라는 힌트가 있다.
server측 코드를 보면 extract가 되어있다. extract는 파라미터의 값을 server의 값으로써 사용할 수 있게 해준다.
이 부분은 검색을 해보면 이해가 더 쉬울 것이다.
코드를 쭉 해석해보면 REMOTE_ADDR이라는 변수가 있으면 $_SERVER[REMOTE_ADDR]의 값을 참조하지 않는다.
즉 $_SERVER를 통해서 값을 넣을 방법이 안떠오르기 때문에
$_COOKIE를 이용해서 REMOTE_ADDR 값을 넣어보자. 이 쿠키값은 클라이언트 측에서 얼마든지 수정이 가능하기 때문에.
이런식으로 수정이 가능하다.
그런데 이대로 보내면 str_replace에 의해 값이 수정된다. 즉 이것을 우회해 줘야한다.
1122를 넣어주면 12가 replace되면서 12가남게 된다.
77..을 넣어주면 7.이 남게 된다. 이런식으로
112277..00..00..1 을 넣어주면 된다.