Cooxie 사용법이나 php 코드에 대한 자세한 분석은 넣지 않았습니다.
읽고 이해가 가지 않으신다면 댓글로 질문해주세요~
php나 Tool 사용법을 모르신다면 따로 공부를 먼저 하시고 보시길 권장해드립니다 ㅇㅅㅇ
------------------------------------------------------------------------------------
어떠한 분이 댓글로 풀이를 올려달라고 하셔서 이렇게 쓰게 됩니다.
간단한 문제이니 살펴봅시다 ^^
http://yangws13.myfeelclub.com/bbs/zboard.php?id=query_Q
위 URL 로 들어가게 되면 아래와 같은 문제 페이지가 나오게 됩니다.
읽고 이해가 가지 않으신다면 댓글로 질문해주세요~
php나 Tool 사용법을 모르신다면 따로 공부를 먼저 하시고 보시길 권장해드립니다 ㅇㅅㅇ
------------------------------------------------------------------------------------
어떠한 분이 댓글로 풀이를 올려달라고 하셔서 이렇게 쓰게 됩니다.
간단한 문제이니 살펴봅시다 ^^
http://yangws13.myfeelclub.com/bbs/zboard.php?id=query_Q
위 URL 로 들어가게 되면 아래와 같은 문제 페이지가 나오게 됩니다.
client ip에는 접속한 사용자의 아이피가 출력되며 agent 에는 사용자 시스템 정보등이 나오게 됩니다.
문제 목적은 client ip 에 루프백 주소인 127.0.0.1을 출력하게 하는 것 입니다.
힌트 페이지를 보시면 아래와 같이 소스가 나와있습니다.
문제 목적은 client ip 에 루프백 주소인 127.0.0.1을 출력하게 하는 것 입니다.
힌트 페이지를 보시면 아래와 같이 소스가 나와있습니다.
<?
$answer="????????";
$answer="????????";
extract($_SERVER);
extract($_COOKIE);
extract($_COOKIE);
$ip=$REMOTE_ADDR;
$agent=$HTTP_USER_AGENT;
$agent=$HTTP_USER_AGENT;
if($_COOKIE[REMOTE_ADDR])
{
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
}
{
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
}
echo("<table border=1 width='642'><tr><td width='70'><span style='font-size:9pt;'><b>client ip</b></span></td><td width='556'><span style='font-size:9pt;'>$ip</span></td></tr><tr><td width='70'><span style='font-size:9pt;'><b>agent</b></span></td><td width='556'><span style='font-size:9pt;'>$agent</span></td></tr></table>");
if($ip=="127.0.0.1")
{
echo("<p><hr><center>Congratulation! Password is $answer</center><hr>");
}
{
echo("<p><hr><center>Congratulation! Password is $answer</center><hr>");
}
else
{
echo("<p><hr><center>Wrong IP! [Hint is IP Number 127.0.0.1]</center><hr>");
}
?>
{
echo("<p><hr><center>Wrong IP! [Hint is IP Number 127.0.0.1]</center><hr>");
}
?>
패스워드 출력 조건은 $ip=="127.0.0.1 이고, $ip의 값은 환경변수인 $REMOTE_ADDR을 이용하여 사용자 아이피값으로 채워지고 있습니다.
젤 중요한 부분은
if($_COOKIE[REMOTE_ADDR]) {
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
}
이 부분입니다. REMOTE_ADDR이란 쿠키변수가 생성되었을 때 if문 안에 있는 코드들을 실행하여 줍니다.
안에 있는 코드는 str_replace 함수를 통해 지정해준 문자를 지정해준 변수 값에서 필터하는 코드입니다.
그럼 일단 $_COOKIE[REMOTE_ADDR]을 생성해야 하니 Cooxie를 이용하여 강제 생성해주도록 하겠습니다.
이와 같이 임시적으로 생성을 해주면
위와 같이 client ip 부분에 아이피가 사라지게 됩니다.
이제 강제로 생생해준 쿠키 REMOTE_ADDR 변수에 값을 집어넣어주면
$ip=$REMOTE_ADDR;
이 부분을 거치고
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
이부분을 거쳐
client ip 부분에 값이 출력 될 것 입니다.
우리가 출력시켜줘야 하는 값은 127.0.0.1 이기 때문에 일단 127.0.0.1 부분을 입력해 줍니다.
입력해주게 되면 위에 필터루틴 때문에 1이란 숫자뿐이 나오지 않을 것 입니다.
1문자는 필터되지 않기 때문이죠.
필터 되지 않게 하려면 필터되는 문자를 중복입력 해 주어야 합니다.
1127.0.0.1
11227.0.0.1
112277.0.0.1
.
.
.
이런식으로 해주시면 됩니다.
결국
112277..00..00..1
이것이 필터루틴을 거쳐 127.0.0.1로 탄생되게 되는 것 입니다. (빨간색이 필터 부분.)
빨간색을 모두 없애시면 127.0.0.1이 된다는 것을 알수 있으실 겁니다.
아래와 같이 값을 입력하고 새로고침을 하시면 패스워드가 출력되는 것을 보실 수 있습니다.
읽어주셔서 감사합니다.
젤 중요한 부분은
if($_COOKIE[REMOTE_ADDR]) {
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
}
이 부분입니다. REMOTE_ADDR이란 쿠키변수가 생성되었을 때 if문 안에 있는 코드들을 실행하여 줍니다.
안에 있는 코드는 str_replace 함수를 통해 지정해준 문자를 지정해준 변수 값에서 필터하는 코드입니다.
그럼 일단 $_COOKIE[REMOTE_ADDR]을 생성해야 하니 Cooxie를 이용하여 강제 생성해주도록 하겠습니다.
이와 같이 임시적으로 생성을 해주면
위와 같이 client ip 부분에 아이피가 사라지게 됩니다.
이제 강제로 생생해준 쿠키 REMOTE_ADDR 변수에 값을 집어넣어주면
$ip=$REMOTE_ADDR;
이 부분을 거치고
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
이부분을 거쳐
client ip 부분에 값이 출력 될 것 입니다.
우리가 출력시켜줘야 하는 값은 127.0.0.1 이기 때문에 일단 127.0.0.1 부분을 입력해 줍니다.
입력해주게 되면 위에 필터루틴 때문에 1이란 숫자뿐이 나오지 않을 것 입니다.
1문자는 필터되지 않기 때문이죠.
필터 되지 않게 하려면 필터되는 문자를 중복입력 해 주어야 합니다.
1127.0.0.1
11227.0.0.1
112277.0.0.1
.
.
.
이런식으로 해주시면 됩니다.
결국
112277..00..00..1
이것이 필터루틴을 거쳐 127.0.0.1로 탄생되게 되는 것 입니다. (빨간색이 필터 부분.)
빨간색을 모두 없애시면 127.0.0.1이 된다는 것을 알수 있으실 겁니다.
아래와 같이 값을 입력하고 새로고침을 하시면 패스워드가 출력되는 것을 보실 수 있습니다.
읽어주셔서 감사합니다.
'[+] Hacking > [-] Challenge Report' 카테고리의 다른 글
순천향대 청소년 정보보호 페스티벌 예선 문제 풀이2. (2) | 2009.09.24 |
---|---|
순천향대 청소년 정보보호 페스티벌 예선 문제 풀이. (18) | 2009.09.22 |
ISEC 2009 CTF 예선 풀이. (0) | 2009.08.29 |
2008년 JFF 문제중 하나. (8) | 2009.08.25 |