Rating:

Tldr;

1. Assume we know the first k bits
2. Send flips to get
```
flipped = ... ? 1 1 1 1 ... 1 1 0
```
3. We know that with that set of flips the next iteration (seed + 2) will be with seed
```
if ? is 0
= ... 1 0 0 0 0 ... 0 0 0
then we end up with the k+1th bit being flipped to 1 and everything below it being zero

if ? is 1
= ..x 0 0 0 0 0 ... 0 0 0
then we flip the k+2th bit and everything below it being zero.
```
4. Then we send flips to get
```
= ... 1 0 0 0 0 ... 0 0 0
```
5. If the second one took one iteration less, then we know the k+1th bit (the ?) is 0, otherwise then the k+1th bit is 1.

Original writeup (https://ubcctf.github.io/2020/11/dragonctf2020-bitflips/).