Поддержу про квест с __wakeup и __destruct, иногда кажется, что вот уже почти получилось, а цепь всё равно не запускается. Мне кажется, важно не просто перебором палить, а ловить, когда именно вызывается нужный магический метод. И да, кодировки реально разные — иногда Base64 спасает, а иногда без urlencode payload просто рвёт на куски. В общем, геморрой, но кайф, когда цепь наконец взлетает.