Why is Byte-at-a-time ECB decryption a vulnerability?
The vulnerability happens when:


You send an INPUT to the server.
The server appends secret to INPUT -&gt; INPUT||secret
The server encrypts it with a secret key -&gt; encrypt(INPUT||secret, key)
The server returns, or you get access in some way to the resulting cipher.


Let's assume the block size is 8. Steps;


All you have to do to decrypt the first byte of "secret" is to send a block of 7 bytes (block size -1). Let's assume we send: AAAAAAA. We get a cipher back, this cipher is our "target".
Next we try AAAAAAA with every other possible bytes: AAAAAAAA, AAAAAAAB, AAAAAAAC, ... Let's assume the cipher returned at STEP1 is the same as when we send AAAAAAAw. That means we know for sure the first byte of the secret is w. We discovered the first byte, yay!
Send 6 bytes (block-size - 1 - known bytes) + w (the byte we discovered previously). Get cipher.
Brute force the last byte until you know the second bytes...  Repeat all steps until you discovered secret.


See? We never actually needed to know the key and yet we discovered secret.

A concrete scenario where this could happens:

Website creates a secret code for each user for the duration of their session, but wants to remain stateless so it saves the code in their cookie, encrypted. Except that the cookie also contains the username (which the user can control/modify). Now the encrypted cipher is username||secret_code. Given this scenario, a user can easily find out what his secret_code is.