반응형
Challenge 6
일단 문제를 들어가면 이 화면이 뜹니다
그리고 이 화면에서 소스를 확인하면
<html> <head> <title>Challenge 6</title> </head> <body> <? if(!$_COOKIE[user]) { $val_id="guest"; $val_pw="123qwe"; for($i=0;$i<20;$i++) { $val_id=base64_encode($val_id); $val_pw=base64_encode($val_pw); //id와 pw를 base64로 인코딩을 20회 한다 }$val_id=str_replace("1","!",$val_id); $val_id=str_replace("2","@",$val_id); $val_id=str_replace("3","$",$val_id); $val_id=str_replace("4","^",$val_id); $val_id=str_replace("5","&",$val_id); $val_id=str_replace("6","*",$val_id); $val_id=str_replace("7","(",$val_id); $val_id=str_replace("8",")",$val_id); $val_pw=str_replace("1","!",$val_pw); $val_pw=str_replace("2","@",$val_pw); $val_pw=str_replace("3","$",$val_pw); $val_pw=str_replace("4","^",$val_pw); $val_pw=str_replace("5","&",$val_pw); $val_pw=str_replace("6","*",$val_pw); $val_pw=str_replace("7","(",$val_pw); $val_pw=str_replace("8",")",$val_pw); Setcookie("user",$val_id); Setcookie("password",$val_pw); echo("<meta http-equiv=refresh content=0>"); } ?> <html> <head> <title>Challenge 6</title> </head> <body> <? $decode_id=$_COOKIE[user]; $decode_pw=$_COOKIE[password]; $decode_id=str_replace("!","1",$decode_id); $decode_id=str_replace("@","2",$decode_id); $decode_id=str_replace("$","3",$decode_id); $decode_id=str_replace("^","4",$decode_id); $decode_id=str_replace("&","5",$decode_id); $decode_id=str_replace("*","6",$decode_id); $decode_id=str_replace("(","7",$decode_id); $decode_id=str_replace(")","8",$decode_id); $decode_pw=str_replace("!","1",$decode_pw); $decode_pw=str_replace("@","2",$decode_pw); $decode_pw=str_replace("$","3",$decode_pw); $decode_pw=str_replace("^","4",$decode_pw); $decode_pw=str_replace("&","5",$decode_pw); $decode_pw=str_replace("*","6",$decode_pw); $decode_pw=str_replace("(","7",$decode_pw); $decode_pw=str_replace(")","8",$decode_pw); //str_replace : 문자열을 치환한다 //즉 20회 인코딩된 id와 pw의 1,2,3,4,5,6,7,8을 !@$^&*()로 치환합니다 for($i=0;$i<20;$i++) { $decode_id=base64_decode($decode_id); $decode_pw=base64_decode($decode_pw); } echo("ID : $decode_id<br>"); echo("PW : $decode_pw<br>"); if($decode_id=="admin" && $decode_pw=="admin") { @solve(); } //마지막으로 id =admin pw=admin일 경우 //문제가 풀린다고 한다 ?> <!-- index.phps --> </body> </html> |
즉 admin을 base64로 20번한후 문자열을 1,2,3,4,5,6,7,8을 !@$^&*()로 치환한 문자열을 paros 나 burp suite를 돌려서 cookie 값에 있는 user 과 password값에 넣어주면 문제가 풀립니다
(아래 그림은 burp suite를 사용한 그림입니다)
반응형
'해킹 > Webhacking' 카테고리의 다른 글
base64 인코딩(Encoding), 디코딩(Decoding) 원리 (0) | 2012.01.18 |
---|---|
webhacking.kr 15번 (0) | 2012.01.16 |
webhacking.kr 14번 (0) | 2012.01.15 |