< 문제 >
https://dreamhack.io/wargame/challenges/96
< 해설 >
버프 슈트를 intercept on 한 뒤, 호박을 눌러보았다. 패킷이 잡히지 않으므로, 버튼 클릭은 클라이언트 단에서 행해지는 것을 알 수 있다. 그러므로 코드를 분석해 보자.
$(function() {
$('#jack-target').click(function () {
counter += 1;
if (counter <= 10000 && counter % 100 == 0) {
for (var i = 0; i < pumpkin.length; i++) {
pumpkin[i] ^= pie;
pie = ((pie ^ 0xff) + (i * 10)) & 0xff;
}
}
make();
});
});
위는 해당 html 페이지의 javascript 코드이다. 해당 함수가 동작이 되는데, id가 jack-target 인 요소를 클릭했을 때 발생하는 이벤트 핸들러를 정의하고 있다. 해당 코드를 이용해서, 아래와 같이 count를 만 번 클릭할 수 있도록 코드를 만들어 준다.
$(function() {
$('#jack-target').click(function () {
while (counter < 10000){
counter += 1;
if (counter <= 10000 && counter % 100 == 0){
for (var i =0; i< pumpkin.length; i++){
pumpkin[i] ^= pie;
pie = ((pie ^0xff) + (i * 10)) & 0xff;
}
}
}
make();
});
});
위의 코드를 console 창에서 동작시키면 아래 그림 2와 같이 플래그를 획득할 수 있다.
한줄 평 : 코드를 구현하는 능력이 상당히 부족하다... (언어의 부족이라 생각..)