이런 문제 풀이를 써본적이 없다보니 무슨 문제가 있을지 잘 모르고 있어요 .
문제가 있다면 말씀 부탁드립니다 .
5번 문제에 들어오면 이런 화면을 보게 된다 .
Join 버튼을 눌렀을 때에는
이런 alert 창을 만나게 된다 .
소스보기를 해보자 .
소스를 보게되면 조인버튼을 누를땐 바로 no() 가 호출되고 ,
login 버튼을 누를땐 move() 함수에 인자로 'login' 이란놈이 따라가게 되며
함수 내에선 login 이 넘어올시엔 mem/login.php 로 이동시키게 된다 .
그럼 로그인 페이지를 먼저 구경해보자 .
정말 별거 없다
소스보기를 해도 아무것도 없다 .
아무거나 쓰고 로그인 버튼을 눌러보자 .
접근 거부를 당했다 ..
id 가 admin 이어야지만 가능한가보다 ..
그럼 admin 계정으로 로그인을 시도해보니 Wrong password 메시지가 나오게 된다.
sql injection 을 시도해보았지만 만만치 않아보인다 .
그럼 가입 페이지에 뭔가 구리구리한 냄새가 난다 .
자 그럼 우린 guessing 을 해보자 .
로그인 페이지의 이름이 login.php 라면
가입 페이지의 이름은 join.php 가 아닐까 ?
mem/join.php 로 페이지 요청을 보내보도록 하겠다 .
404 에러도 나오지 않고 Webhacking.kr 의 전용 리다이렉션 페이지도 나오지 않았다.
그냥 까맣다 ..
어떻게 된일인가 소스보기를 해보자 .
보기 참 힘들게 해뒀다 .
난독화를 시켜준 스크립트구문 같은데 보기좋게 아주 이~쁘게 포장을 다시 해보자 .
훨씬 깔끔해졌다 .
하지만 이것만 보곤 뭐가뭔지 알아낼수가 없다.
현재 여러 난독화들에 대한 복원법이 많이 있는데
그냥 딱 봐도 고칠수 있을것 같다 .
복원을 하는데 얼마 걸리지도 않았다.
코드량이 정말 많다면 스크립트를 하나 짜서 복원시키는것이 더 쉬웠겠지만 ,
메모장의 기본기능만으로 복원을 시켰다 ..-_-;
자 그럼 구문해석을 해보자 .
document.cookie 에서 oldzombie 라는애를 찾고 없으면 bye !
( indexOf() 함수는 패턴을 찾지못할 시 -1 을 반환 )
document.URL 에서 mode=1 이란 구문을 찾는다.
그 후 찾지 못하면 접근 거부 알림창을 띄우고
찾게 되면 else 에 해당하는 구문들을 write 하게 된다 .
oldzombie 라는 쿠키를 만들어 아무값이나 넣어두고
join.php 페이지 url 에 mode라는 인자로 1의 값을 넘겨보자 .
드디어 페이지가 나왔다 .
그럼 admin 이란 id 와 원하는 비밀번호를 만들어서 넣어봤더니
이미 아이디가 존재한다고 한다 .
폼의 길이값을 조정한 후 admin(공백) 으로 아이디를 만들어 봤더니 계정이 생성 되었다 .
그후 로그인 하면 성공 !