시작부터 막막하다....ㅋㅋ 100점짜린데....
그래 이것저것 다 해보자!
index.phps 를 누르면 코드가 뜬다
더보기
차례 차례 코드 해석을 해보자.
if문 user이 아닐때(?)
for문 시작. id와 pw를 base64로 인코딩 20회 반복한다.
[PHP] str_replace("찾을문자열","치환할문자열","대상문자열")
-> val_id와 val_pw의 문자열을 치환한다
-> 1,2,3,4,5,6,7,8 을 !,@,$,^,&,*(,) 로 치환.
디코딩 해라.
디코딩한 id 와 pw가 admin과 같다면 solve!!!
ㅎㅎㅎㅎㅎㅎ 무슨 소린지 모르겠다.
일단 Hint 는 base64! 이걸 사용해야 하는 것 같다.
그리고 인코딩과 디코딩을 20번 해야 할 듯 하다. 대충 감으로.
생소한 base64.... base64인코딩은 어떻게 하는 것일까.
겸사 겸사 base64에 대해서 , 그리고 왜 인코딩 하는지 디코딩 하는지 공부해 보았다.
역시 구느님!!!
결론은 64개 문자 이용 -> 바이너리 데이터를 아스키 텍스트 데이터로 표현!
How? base64는 8bit의 데이터를 6bit로 표현하기 때문! 8 X 3 == 6 X 4 ! => 문자 3개에서 4개를 얻는다!
온라인으로 인코딩, 디코딩 가능!
http://www.convertstring.com/ko/EncodeDecode/Base64Encode
▶내가 처음으로 한일! admin을 20번 인코딩 해 보았다.
더보기
휴... 힘들었다 복붙!
이제 뭘해야 할까... 저 길고 이상한 문자들은 무엇이란 말인가
다시 코드를 보도록 하자. 천천히 생각해보자.
이것의 의미... 디코드 아이디에 쿠키 유저에 넣어라?
아이디를 20번 다시 디코딩하면 admin이 나올텐데...?
쿠키가 어떤 일을 하는지 뭘 의미하는지 잘 모르겠다.
[PHP] 쿠키에 대해 알아 보자!
※쿠키 생성!
setcookie(이름, 값, 유효시간, 디렉토리, 도메인 보안);
-이름(name) : 쿠키의 이름
-값(value) : 쿠키가 가질 값. "문자" , 변수, 값을 없앨려면 아무 값도 적지 않으면 된다.
-유효시간(expir_time) : 쿠키가 언제까지 작동할까를 적어준다. 0 혹은 아무것도 적지 않으면 브라우저가 닫힐
때 까지, 0 이외의 다른 숫자를 넣으면 사용자가 쿠키를 삭제하기 전까지 유지된다. 지금부터 얼마간 지속시키려면 time()함수와 함께 써야한다. time() + 지속 초
-디렉토리(diretory) : 쿠키가 작동할 디렉토리의 절대 경로. 보통 생략한다.
-도메인(domain) : 작동할 도메인을 적어준다. 보통 생략한다.
-보안(secure) : 쿠키의 보안 상태를 정의한다. 1을 적으면 SSL암호화가 되어야만 작동, 적지 않거나 0을 적으면
보안을 무시한다. 이것은 신경 쓸 필요가 없다.
※쿠키 생성 예제.
2번줄 setcookie("123","abcd") : 123이라는 쿠키에 abcd라는 문자열 저장. 브라우저를 닫으면
사라진다
3번줄 setcookie("themics","phper",1) :쿠키가 영원히 지속된다. themics라는 쿠키에 phper라는
문자열 저장.
4번줄 setcookie("nzeo",$nzeo_data) : nzeo쿠키에 $nzeo_data의 값을 갖게 하고 브라우저를
닫으면 사라진다.
5번줄 setcookie("php_study",$data,time() + 1800,"/httpd/html/") : php_study쿠키에
변수 $data에 있는 값을 대입한다. 지금부터 1800초, 즉 30분 지속되며 /httpd/html/ 이하에서 작동한다.
6번줄 setcookie("asdf","ghjkl",1,"/",".nzeo.com") : asdf라는 쿠키에 ghjkl라는 값을 갖게 하고
영원히 지속되며 쿠키가 루트(/)이하, 즉 서버의 모든 파일에 작동한다. 또한 nzeo.com의
모든 서브도메인에서도 작동하는 광범위한 쿠키이다.
※쿠키 사용.
$_COOKIE["쿠키이름"];
※쿠키값 제거.
setcookie("쿠키명");
쿠키에 대해서 공부를 하니 조금 무슨 소리인지 알겠다.
decode_id 에 쿠키 user 값을 넣어라. 그러면 디코딩이 되어 우리가 원하는 값을 얻을 수 있다.
디코딩을 20번 할 예정이니 우리는 인코딩을 20번 한 값을 넣으면 될 것 같다.
이제 20번 인코딩한 값을 user, password 쿠키 값에 넣으면 되는데 어떻게 넣는지 모르겠다....
우리의 멘토 사쿠야오빠한테 물어 보았다.
구글의 확장 프로그램 'edit this cookie'를 쓰면 자동으로 쿠키를 바꿔준단다... 와우!
'edit this cookie' 확장 프로그램.
https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=ko
user과 password 값에 20번 인코딩한 값을 넣고 V를 누른 다음 새로 고침을 하면 된다.
와우! 한방에 성공!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
뿌듯뿌듯ㅎㅎㅎㅎㅎ
사쿠야선배는 300점 문제를 가면 멘붕이 온다고 했다 ㅎㅎㅎㅎㅎㅎㅎㅎㅎ
비록 100점 짜리지만 너무 기분이 좋다 ㅎㅎㅎㅎㅎㅎ!!!
샤랄라~
처음 Webhacking.kr을 하면서 느낀점은 코드를 찬찬히 보자. 여러가지 생각을 해보자.
점수가 높아지면 문제도 어려워 지겠지만 그래도 지금처럼 열심히 하면 풀수 있겠지?!
힘내자! 예~~~