webhacking 14번 문제

Webhacking 2015. 10. 13. 19:32

안녕하세요. 오늘은 webhacking 14번 문제를 풀어보겠습니다.

홈페이지로 들어가 webhacking 14번을 눌러주세요.

참 간단해보이는군요. 소스를 한 번 봅시다.


function은 사용자 정의 함수입니다. 자세한 건 php함수 설명 항목을 참고해 주세요.

ul이란 변수에 document.URL 값을 넣습니다.

var이 쓰인걸로 보아 이 언어는 php언어가 아닌 자바스크립트 언어인 것 같습니다.

그리고 ul에  ul.indexOF(".kr")의 값을 집어넣는다는군요..

자바스크립트 함수인 indexOf 는 문자열 안에 조건이 되는 문자열이 몇 번째 위치에 존재하는지를 확인하는 함수입니다. 사용법은

 "[문자열]".indexOf("[검색할 문자열]"[검색시작위치]);

입니다.

위의 소스 ul=ul.indexOf(".kr")를 해석해보자면

변수 ul에 들어있는 문자열 중 .kr이 시작되는 위치를 숫자로 표현하여 다시 ul에 저장시킨다는 군요. 검색시작위치는 생략되었습니다.

그다음은 ul*30의 값을 ul에 저장시키구요.

그 ul이랑 pw.input_pwd.value를 비교하여 값이 같으면 패스워드를 출력한다네요.

pw.input_pwd.value는 저 상자를 의미하겠군요. ul값을 저 상자에 넣으면 되는 것 같습니다.

일단 ul을 계산해 보겠습니다.

document.URL은 현주소를 의미합니다. 

즉 ul에 http://webhacking.kr/challenge/javascript/js1.html란 값을 넣는다는 것이지요.

그다음은 .kr의 위치를 숫자로 변환하여 저장시키지요?

18번째에 있네요. 단 indexOf는 첫위치를 0으로 인식하니까 실제로 저장되는 값은 17입니다.

17*30은 510입니다. 즉 최종으로 ul엔 510이 들어가 있습니다. 

510을 한 번 넣어 봅시다.

성공적으로 패스워드가 떴습니다. auth로 가서 인증해봅시다.

전송을 눌러줍시다.

네 이것으로 문제풀이를 마치겠습니다.

'Webhacking' 카테고리의 다른 글

webhacking 19번 문제  (0) 2015.10.15
webhacking 16번 문제  (0) 2015.10.13
webhacking 4번 문제  (0) 2015.10.13
webhacking 6번 문제  (0) 2015.10.12
webhacking 15번 문제  (0) 2015.10.12
Posted by englishmath
,

webhacking 4번 문제

Webhacking 2015. 10. 13. 19:27

안녕하세요. 오늘은 webhacking 4번 문제를 풀어보겠습니다.

홈페이지로 들어가 webhacking 4번을 눌러주세요.

암호문같아 보이는 문구가 적혀있습니다. 아무래도 어떤 문자를 인코딩 한 것 같군요.

그런데 뒤쪽에 보시면 ==가 있습니다. ==는 base64로 문자를 인코딩했을때 나타나는 문자입니다. base64의 특징이죠. 문자를 복사하여 base64로 디코딩을 해 봅시다.

한번 디코딩을 하니 다음과 같은 문자열이 나왔습니다. 다시 한번 디코딩을 해 봅시다.

그런데? 디코딩을 하니 더이상 아무것도 뜨지 않습니다. 그렇다면 이 값이 패스워드인걸까요? 한번 입력해봅시다.

......

정답이 아닌 것 같군요. 즉 여기서부턴 다른 프로그램으로 인코딩이 된 것 같습니다.

평문 - ??인코딩 - base64인코딩 - 암호문  딱 이런식이겠군요. 우리는 디코딩을 위해서 뭘로 인코딩을 했는지 알 필요가 있습니다.

그런데 말입니다. 저 base64로 디코딩을 한 문자열을 세어보니 40글자가 나오더군요.

평문을 ??로 인코딩을 했더니 40글자가 나온다. 이것은 sha1인코딩의 특징입니다.

http://www.hashkiller.co.uk/sha1-decrypter.aspx 사이트로 들어가 sha1으로 디코딩을 해봅시다.

또 암호문 같은 글자가 나오는군요. 그런데 디코딩한 글자가 또 40글자입니다. sha1의 특징이므로 한번 더 인코딩 해 줍시다.

test라는 문구가 나오는군요. 아무래도 정답인 것 같습니다. 입력해 봅시다.

test가 정답이었네요. 인코딩 순서가

test - sha1 인코딩 - sha1 인코딩 - base64인코딩 이런 순서였습니다.

네 이것으로 문제풀이를 마치겠습니다.



'Webhacking' 카테고리의 다른 글

webhacking 16번 문제  (0) 2015.10.13
webhacking 14번 문제  (0) 2015.10.13
webhacking 6번 문제  (0) 2015.10.12
webhacking 15번 문제  (0) 2015.10.12
webhacking - 26번 문제  (0) 2015.10.02
Posted by englishmath
,

webhacking 6번 문제

Webhacking 2015. 10. 12. 21:54

안녕하세요. 오늘은 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
Posted by englishmath
,