n00bzunit3d 2024 Rev/vacation
Welcome to my series of writeups for n00bzunit3d 2024 capture-the-flag competition. In this post, we look at Rev/vacation
. The challenge gives us a .ps1
Windows powershell cmdlet file and an output.txt
file. Let’s see what’s in them.
run.ps1
$bytes = [System.Text.Encoding]::ASCII.GetBytes((cat .\flag.txt))
[System.Collections.Generic.List[byte]]$newBytes = @()
$bytes.ForEach({
$newBytes.Add($_ -bxor 3)
})
$newString = [System.Text.Encoding]::ASCII.GetString($newBytes)
echo $newString | Out-File -Encoding ascii .\output.txt
output.txt
m33ayxeqln\sbqjp\twk\{lq~
Looking at run.ps1
we see that it reads flag.txt
as ascii characters and XORs each byte with 3
and then stores the output in output.txt
. XOR is a reversible operation. XORing each byte of the output with 3
should give us back the original flag. We ran the same script and pasted the output in our own flag.txt
and the flag was present in output.txt
.