low풀이
low레벨에서보다 js 코드를 더 잘 읽을 수 있어야 풀 수 있는 문제이다.
아래를 보게되면 id = token 이고 value가 XXeMegnahCXX라는 token이라는 name의 페이로드가 hidden으로 되어있다.
먼저 패킷을 잡아보자
아래는 잡은 패킷이다 아까 본대로 페이로드들이 잘 요청되었다.
이제 아래 js코드를 살펴보자
function do_something(e){
for(var t="",n=e.length-1;n>=0;n--)
t+=e[n];
return t
}
setTimeout(function(){do_elsesomething("XX")},300);
function do_elsesomething(e){
document.getElementById("token").value=do_something(e+document.getElementById("phrase").value+"XX")
}
코드를 해석하면 setTimeout이 do_elsesomething을 호출한다.
do_elsesomething은 id가 token인 Element의 value를 XX+phrase+XX라는 인자로 do_something을 호출하면서 그 반환값으로 바꿔준다.
do_something을 보면 문자열을 역순으로 바꿔준다는 것을 알 수 있다.
그러면 XX입력한값XX가 XX값한력입XX 라는 토큰이 될 것이다.
가운데가 입력한 값이므로 토큰과 입력 phrase를 같게 패킷을 조작하면 성공할 것 같다.
아래 패킷을 success로 바꿔주자 .
그렇게 되면 아래처럼 성공적으로 Well done!이 출력된 것을 볼 수 있다.