콘솔을 열어보면 0부터 32까지 숫자가 카운팅되면서 계속 호출되고 있다. 날렵한 동체시력이 있다면 다 기록하고 문제를 넘어갔겠지만 난 그렇지 않기에... ㅠㅠ
<script> function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return null; } } }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ return null; } } x=run(); function answer(i) { x.open('GET','?m='+i,false); x.send(null); aview.innerHTML=x.responseText; i++; if(x.responseText) setTimeout("answer("+i+")",100); if(x.responseText=="") aview.innerHTML="?"; } setTimeout("answer(0)",10000); </script>
근데 이게 골때리는게, response를 읽어보니 그냥 한글자 적혀있다. 얘를 모으면 패스워드가 될텐데..
그래서 0씩 콜해보니까 대답대신 ?가 나왔다.
레퍼러를 체크하는것 같았다.
그래서 헤더에 레퍼러를 추가해주니 정상적으로 패스워드가 반환되었다
사실 js를 푸는 문제겠지만... 100점짜린데 귀찮았다...
#!/usr/bin/env python # -*- coding: utf8 -*- import urllib, urllib2, re sess = "" headers = {'Host': 'webhacking.kr', 'Cookie': "PHPSESSID={}".format(sess), 'Referer': 'http://webhacking.kr/challenge/bonus/bonus-14/' } pw = '' for i in range(0,33): url = 'http://webhacking.kr/challenge/bonus/bonus-14/?m={}'.format(i) req = urllib2.Request(url, '', headers) response = urllib2.urlopen(req).read() pw = pw + str(response) print pw