Rating:

1. ,: read a character and write it at *sa
2. .: write *sa at *str, then increment *str
3. [: if *sa is zero, jump to the next ]
4. ]: if *sa is not zero, jump to the previous [
str is at 0x404078, while STR is at 0x404ca0.

We can make use of the 4 operators discussed to write the payload ,[,.]

This reads in a character to *sa, then while *sa is not zero, keep reading in characters and writing it to str. Eventually, we can write HELLO\n at STR, then terminate the write by sending in a null byte.

Original writeup (https://blog.justins.in/csictf20/).