carve party 질문
안녕하세요. console에서 코드를 조작해서 풀었는데 플래그가 다음과 같이 나옵니다.
순차적으로 click을 하는 코드로 변경했을 때는 플래그가 정상적으로 나오는데
아래와 같이 counter를 한번에 만번으로 조작하는 코드를 짰을 때 위와 같은 문제가 발생합니다.
혹시 이유를 알 수 있을까요? 아니면 오류일까요?
$(function() {
$('#jack-target').click(function () {
counter += 10000;
if (counter <= 10000 && counter % 100 == 0) {
for (var i = 0; i < pumpkin.length; i++) {
pumpkin[i] ^= pie;
pie = ((pie ^ 0xff) + (i * 10)) & 0xff;
}
}
make();
});
});
#web
작성자 정보
답변
1
Mel.Kim
대표 업적 없음
if (counter <= 10000 && counter % 100 == 0) {
for (var i = 0; i < pumpkin.length; i++) {
pumpkin[i] ^= pie;
pie = ((pie ^ 0xff) + (i * 10)) & 0xff;
}
}
상기 코드의 조건문을 보시면 counter가 10,000보다 작거나 같고, 100의 배수인 경우에
pumpkin배열의 각 엘리먼트 및 변수 pie에 xor 연산을 취하고 있습니다.
코드를 수정하지않고 정말 클릭을 만 번 하게 되면, pumpkin배열 엘리먼트 및 변수pie xor 연산도 100번 이루어지고
그 결과로 나오는 값이 DH{...} 플래그가 되기 때문에 해당과정(100번의 xor 과정)을 생략 할 수는 없다고 보시면 될 것 같습니다.
counter를 바로 10000으로 설정해버리면, xor연산은 1번밖에 이루어지지 않기 때문에
flag 영역이 알아볼 수 없는 형태로 출력되는 것입니다.