Olá Ian.
Tudo bem?
Desculpa a demora, estou respondendo esse tópico para tentar ajudar você e outros alunos que estiverem com essa mesma dúvida, e também para organizar o nosso fórum. Valeu :)
Pelo que entendi, você está com uma dúvida em relação a um script utilizado no curso de Pentest para investigar vulnerabilidades em um servidor de aplicações web. Você mencionou que o script passado na aula não retornou a key, mas utilizando o script disponibilizado na solução do PortSwigger foi possível obter a key.
Analisando os scripts que você compartilhou, percebo que eles são semelhantes, mas com algumas diferenças. No primeiro script, é utilizado o objeto XMLHttpRequest
para fazer uma requisição GET para a URL YOUR-LAB-ID.web-security-academy.net/accountDetails
. Em seguida, no callback reqListener
, é feito um redirecionamento para a URL /log?key=
concatenada com a resposta da requisição.
Já no segundo script, é utilizado o mesmo objeto XMLHttpRequest
, mas a URL é definida em uma variável chamada url
, que deve ser preenchida com a URL do seu laboratório. Em seguida, é feita a requisição GET para a URL url + "/accountDetails"
. No callback onreadystatechange
, é feito um fetch para a URL /log?key=
concatenada com a resposta da requisição.
Aparentemente, a diferença entre os dois scripts está no momento em que é feito o redirecionamento para a URL /log?key=
. No primeiro script, o redirecionamento é feito no próprio callback reqListener
, enquanto no segundo script, o redirecionamento é feito dentro do callback onreadystatechange
.
Eu sugiro que você teste as duas abordagens para verificar qual delas retorna a key corretamente. Talvez o problema esteja no momento em que o redirecionamento é feito no primeiro script, e ao utilizar o segundo script, que faz o redirecionamento dentro do callback onreadystatechange
, você obtenha o resultado esperado.
Espero ter ajudado e bons estudos!