안녕하세요. 오늘은 webhacking 6번 문제를 풀어보겠습니다.
홈페이지로 들어가 webhacking 6번을 눌러주세요.
phps라는 소스파일이 있습니다. 확인해 봅시다.
ㅣ
소스 한번 더럽게 기네요. 일단 solve부분을 보시면 decode_id의 값이 admin이고 pw 값이 admin이면 문제가 해결된다는군요.
현재 화면에 출력된 부분을 보시면 ID는 guest이고 PW는 123qwe 라고 출력되 있는 것을 알 수 있습니다. 그리고 소스를 보시면 현재 출력된 ID와 PW는 decode_id와 decode_pw를 20번 디코딩한 값이라고 볼 수 있습니다. 그리고 decode_id와 pw는 쿠키값 user과 password에서 받아오는 것을 알 수 있습니다.
우리는 decode_id와 pw가 admin이 되도록 해줘야 하므로 거꾸로 올라가도록 해주면 됩니다.
$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);
for($i=0;$i<20;$i++)
{
$decode_id=base64_decode($decode_id);
$decode_pw=base64_decode($decode_pw);
}
최종으로 디코딩된 값이 admin이어야 하므로 디코딩하기전의 decode_id는 admin을 인코딩한 값이어야 합니다. for문을 이용해 20번 디코딩을 하므로 decode_id엔 admin을 20번 인코딩한 값이 들어가야 합니다. decode_id는 user pw는 password에서 입력받으므로 admin을 20번 인코딩하여 그값을 쿠키 user과 password에 넣어 봅시다.
hint에서 base64가 적혀있었으므로 base64로 인코딩 해 봅시다.
홈페이지에 보시면 base64 인/디코딩 하는 버튼이 있습니다. 체크 된 버튼이 인코딩이므로 20번 눌러서 20번 인코딩 해 줍시다.
인코딩이 완료되었습니다. 이걸 각각 쿠키값 user와 password에 넣어봅시다.
소스 도중에 str_replace라는 치환함수가 있어서 걱정하실텐데 인코딩된 문구를 보시면 !나 @같은 특수기호가 없기 때문에 있으나 마나합니다. 그냥 무시하고 합시다.
체크버튼을 누르시고 새로고침을 합시다.
네 이것으로 문제 풀이를 마치겠습니다.
'Webhacking' 카테고리의 다른 글
webhacking 14번 문제 (0) | 2015.10.13 |
---|---|
webhacking 4번 문제 (0) | 2015.10.13 |
webhacking 15번 문제 (0) | 2015.10.12 |
webhacking - 26번 문제 (0) | 2015.10.02 |
webhacking - 18번 문제 (0) | 2015.10.02 |