Webhacking.kr Challenge 1 풀이. 첫 화면이다.다른 특별한 건 없는 거 같으니 오른쪽 마우스를 눌러 소스를 본다. 특별한 코드가 보이지는 않는다. index.phps로 가보도록 한다. 일단 소스들이 나오고 가장 중요한 Solve() 함수를 먼저 본다. Solve() 함수 앞에는 if문이 있다.간단히 말해 COOKIE[user_lv]이 6보다 크거나 같으면 1을 반환하라고 되어 있다.즉 COOKIE[user_lv]값에 6이상의 숫자를 넣으면 강제로 COOKIE[user_lv] 값이 1로 저장된다는 뜻.1은 5보다 작은 숫자이니까 문제를 풀 수가 없다.핵심은 6이상의 숫자를 넣으면 안 된다. 5보단 크고 6보단 작은 수를 넣어야 한다.Cf) 쿠키==> 웹사이트에 접속할 때 자동적으로 만들..
# Related site issues/WEBHACKING.KR
Webhacking.kr Challenge 58 풀이. 첫 화면이다.???????????login을 눌러보니 아래와 같은 화면이 등장했다. 일단 소스를 봐보자. 딱히 긴 코드는 아니다. kk.js란 파일이 있는 것을 알 수 있다.참고로 확장자가 js인 파일은 외부 javascript 파일이다. 즉 javascript 코드만을 가지고 있는 text 파일이다.kk이란 파일이 어떤 것인지 알기 위해 개발자 도구로 본다. Element를 누르면 위와 같이 뜬다.페이지 소스에 있던 kk.js 말고도 kk2.js, hackme.swf 라는 파일도 있는 것을 알 수 있다.swf 파일은 플래시 파일이라는 뜻.일단 저 3개의 파일이 뭘 의미하는지 하나씩 확인해보겠다. kk.js kk.js은 즉 kk에 document.U..
Webhacking.kr Challenge 32 풀이. 32번 문제를 보면 위와 같은 화면이 뜬다. join을 눌렀더니 사용자 아이디가 순위표에 올라오게 된다. 그래서 표에 있는 아이디를 누르고 join을 눌러보니 no! 라는 문구가 떴다.그렇다면 내 아이디를 누르고 join을 눌러보니 여전히 no가 떴다.오른쪽 부분을 보면 0/100이라고 되어 있는 부분이 보인다. HIT라고 되어 있는데 횟수가 올라가는 것을 보니 아이디를 누른 횟수 같다.문제는 내 아이디를 누르든, 임의의 아이디를 누르든 똑같이 no만 세어진다.소스 보기를 한 번 해보겠다. 전체 소스는 아니지만, 부분적인 소스를 봐도 딱히 중요한 건 없다.그럼 쿠키쪽으로 한 번 봐보자. 음.. vote_check를 보면 no!라는 것이 아니라 ok라..
Webhacking.kr Challenge 27 풀이. 첫 화면이다.임의로 asdf를 입력하고 제출을 하니 아래와 같은 화면이 등장한다. 일단 소스를 본다. 기본적으로 있고 index.phps가 있으니 index.phps를 본다. 부분을 보도록 하겠다.아래쪽을 보면 @solve 부분이 있는데 이게 핵심이다. 위에 if 조건문들이 존재한다.@solve가 있는 if문을 보면 id의 변수 값이 admin 이라면 문제가 풀린다는 것을 알 수 있다.그래서 id라는 말이 어디 있나 찾아보면, 위 쪽을 보면 id 앞 부분에 $q가 붙어 있다.$q는 바로 위에 존재한다. $q=@mysql_fetch_array(mysql_query("select id from challenge27_table where id='guest..
Webhacking.kr Challenge 25 풀이. 일단 첫 화면이다.-rw-r--r-- 라고 적힌 것을 알 수 있는데, 이건 리눅스에서 쓰이는 기호라는 것을 알 수 있다.-rw-r--r--에 관해서는 따로 리눅스 공부한 글에서 언급했다.간단히 말해 해당 파일 or 디렉터리에 관한 권한을 나타내는 기호이고 소스를 본다. 음.............일단 소스를 보면 특징적으로 나온 것은 없다.hello.txt, index.php, password.php 파일이 있다는 걸 알 수 있다.password.php 파일을 열어보겠다. 위의 화면에서 봤듯이 아무런 반응이 없다.그리고 하나 알 수 있는 건 hello.txt은 주소창에 file=hello라고 적혀 있는 걸 보면 hello.txt = hello 라는 것..
Webhacking.kr Challenge 19 풀이. 일단 위의 화면처럼 첫 페이지가 뜬다.일단 제출을 눌러보니 아래와 같이 떴다. 소스 코드부터 확인해보자. 음..........소스 코드를 보니 코드가 .....없다..뭔가 숨겨져 있는 건지 못 찾는 건지 생각을 해봐야 된다.일단 소스 코드를 보면 admin이 미리 적혀 있는 것을 알 수 있다.아까 처음에 해봤듯이 admin으로 제출하니 you are not admin이라고 나왔으니 다른 값을 넣어보겠다. 임의로 id에 asdf에 넣어본다. 문제가 무슨 일인지는 모르겠으나 깨진 거 같아서 복구되면 다시 풀도록 하겠다.
Webhacking.kr Challenge 4 풀이. 일단 위의 화면처럼 뜬다. ==을 보니 base64라는 것을 알 수 있다. 그리고 문자열을 보니 인코딩 아니면 디코딩 된 거 같다.확인해보겠다.여러 방법이 있지만, Webhacking.kr에서 디코딩해보겠다. 한 번 디코딩을 하나 위의 값이 나왔고, 한 번 더 해보겠다. 위의 화면과 같이 값이 존재했다. 값이 깨졌다.. 혹시 몰라서 저 값을 복사해서 해보니 정답이 아니였다.뭔가 다른 게 있는 거 같다. 일단 평문 - xx인코딩 - base64인코딩 - 암호문 이런 형태.아직까지는 감이 안오기에 base64로 디코딩을 한 문자열을 세어보니 40글자가 나온다.즉 md5는 32글자이기에 md5는 아니다. 평문을 xx로 인코딩을 했더니 40글자로 나온다. 즉..
Webhacking.kr Challenge 54 풀이. 54번을 들어가면 위의 화면이 뜬다몇 초 뒤에 무슨 글자가 뜨고 마지막에 ?가 나타나면 멈춘다.무슨 뜻이 있는 거 같으데 잘 모르겠으니 정석대로 간다.일단 소스를 보도록 하겠다. 위와 같은 소스 코드가 등장한다. function 어쩌구는 윈도우 관련 코드라서, 이미 실행되었기에 따로 신경 쓸 필요는 없다. 핵심은 answer와 setTimeout이다. setTimeout은 10초 후에 answer 함수에 0을 넣어서 실행하는 것이다. 좀 더 자세히 본다. x.open('GET','?m='+i,false); x.send(null); aview.innerHTML=x.responseText; i++; if(x.responseText) setTimeout(..