반응형
54번에선 저 빨간색 부분이 바뀌다가
결국 마지막엔 ?로 바뀐다.
일단 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+")",20); if(x.responseText=="") aview.innerHTML="?"; } setTimeout("answer(0)",1000); |
로 되어있음을 확인할 수 있다.
try-catch문을 제외하고 아래만을 본다.
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+")",20); if(x.responseText=="") aview.innerHTML="?"; } setTimeout("answer(0)",1000); |
GET을 띄운다
0.02초 동안 답이 하나씩 띄워지는 듯하다.
answer을 1초 후에 인자 0을 넣으라는 것을 알 수 있다.
aview.innerHTML=x.responseText 부분 덕에 답이 한문자 한문자 계속 바뀜을 알 수 있다.
aview.innerHTML+=x.responseText 로 바꿈으로써 문제를 풀어보려고 한다.
마지막에 ?부분을 없애고 콘솔창에 띄워보겠다.
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+")",20); } setTimeout("answer(0)",1000); |
이런 식으로 콘솔창에 띄워주면 된다.
그럼 password가
Password is ?FLAG{a7981201c48d0ece288afd01ca43c55b}
라고 한다.
해당 pw를 auth에 입력해준다
반응형
'웹해킹' 카테고리의 다른 글
Webhacking.kr(old) 24번 (0) | 2020.05.31 |
---|---|
webhacking.kr(old) 1번 (0) | 2020.05.31 |
webhacking.kr(old) 19번 (0) | 2020.05.24 |
webhacking.kr(old) 10번 (0) | 2020.05.21 |
webhacking.kr(old) 6번 (0) | 2020.05.21 |