들어가보면 폼이 있는데 비밀번호하나밖에 입력할 수가 없다. 일단 소스를 보면
unescape관련된 코드가 있는데 자세히 살펴보면 뒤에서 한번더 unescape를 한다. 일단 이상한 변수
d가 있는데 d가 언젠가 쓰일지도 모르므로 개발자도구로 d를 정의해두고 unescape를 두번 한다.
그러면 또다른 자바스크립트 코드가 나오는데 여기서 맨 마지막에 s를 출력하는 것으로 보아 s변수에
뭔가 있을것같다. s를 출력해보면 또다른 코드가 나온다. 중요한 부분은 네모상자쳐놓은 부분이다.
첫번째 상자부분은 우리가 처음 들어갔을때 보이는 폼 부분이다. 폼의 이름은 passwordform이며,
특이점은 username이라는 변수를 히든 타입으로 설정하고 기본 이름이 default이다. 우리가 입력한
부분은 이름이 password라는걸 알 수 있다.
페이지를 다시 한번 들어가서 sdf처럼 비밀번호를 입력하고 로그인을 눌러보면
http://www.net-force.nl/challenge/level107/?username=default&password=sdf&Submit=Login+Now
과 같은 형식으로 데이터가 전송되는걸 볼 수 있다. username이 default로 설정되어있고, password는
우리가 입력한 값이다. 분석한게 맞다는걸 알 수 있다. 첫번째 입력 상자를 자세히 분석하면 우리가
로그인 버튼을 눌렀을때 input()이라는 함수를 실행한다는것을 알 수 있다. input함수는 첫번째상자
바로 아래에 있다. input함수 내부의 두번째 상자인 if문 부분이 중요한데.
pd=document.passwordform.password.value.toUpperCase();
ur=document.passwordform.username.value.toUpperCase();
if ((ur!=ur) ||(pd==unescape("%25%30%30%25%32%35%25%33%32"))) 이다.
이 if문의 else문을 보면 alert("Useraccount: "+ur+ " error !");라는 코드가 있는데 이 코드가
우리가 비밀번호에 아무거나 입력하게 되면 나오는 alert창이다. else문으로 들어가게 되면 틀렸다는
소리이다. if문을 들어가려면 (ur!=ur) ||(pd==unescape("%25%30%30%25%32%35%25%33%32"))
이어야 하는데 ur != ur은 항상 false이므로 무시하고 pd==unescape("%25%30%30%25%32%35%25%33%32"
이어야 한다. pd는 우리가 처음 본 페이지에서 입력할수 있는 폼이고, unescape를 개발자도구에서
풀어보면 %00%25%32가 나온다. 이걸 패스워드 폼에 입력해보면 순간 제대로된 로그인 페이지가
나왔다가 사라지는걸 볼 수 있다. 이건 이거고, if문 내부를 보면 끝에 passwdok(); 라는걸로
비밀번호가 맞으면 passwdok함수를 실행시킨다는걸 알 수 있다. passwdok함수 내부에
우리가 잠깐 본 제대로된 로그인 폼이 존재할것이다. passwdok함수는 위의 캡쳐에서 세번째
네모상자이다. 내부에 의심스런 unescape가 보인다. 그걸 풀어보면 제대로 된 페이지의
자바스크립트 소스가 나온다.
소스를 보고 추측해보면 아까 잠깐 본 로그인 폼에 아이디와 비밀번호를 입력해서
아이디를 sha1로 인코딩해서 1d31d94f30d40df7951505d1034e1e923d02ec49와 비교하고,
비밀번호를 인코딩해서 2d7a34c9ef8efa2cfdf4b89175f7edec1cd0ddda와 비교해서 맞으면
well done을 출력한다는걸 알 수 있다. 저거 두개를 디코딩해보면 bas와 dude가 나온다.
처음 들어갔을때 페이지에 Enter the password like this "username:password" 라고 써있으므로
bas:dude가 답이다.
'webhacking > client' 카테고리의 다른 글
webhacking.kr 10,14,15,16,17,20,23,24 (0) | 2015.01.08 |
---|---|
Security Override Javascript 1~8 (0) | 2014.12.19 |
Net-Force javascript 6 (0) | 2014.12.04 |
Net-Force javascript 1~5 (0) | 2014.12.03 |
Enigma Group basic/javascript 12 (0) | 2014.11.01 |