YABU not sharing the CTC (the WTC is paid to YOU) and Child Benefit IF he is sharing costs of school uniform, packed lunches, dinners, shoes, clothes for outside school, after-school activities and school trips. That is what the CTC and Child Benefit is paid to cover.
However, as you are feeding your DS dinner before he goes to his dad's, and he is only giving him breakfast (I assume) before he drops him back to you, isn't doing his packed lunch, and isn't paying any of the other costs involved on being FINANCIALLY RESPONSIBLE for a child, then you, OP, are NBU.
When he shares those costs fairly, then split the Child Benefit and CTC fairly. If not, then don't.
I would stop these silly overnights too. He is making sure he has no obligation to pay maintenance by having him to sleep there, while also making sure that he bears none of the costs involved in bringing up his child.
If you were to stop this type of useless contact (your DS is asleep for the main portion of it, it's hardly quality time), and offered him every other weekend, and two midweek nights, straight from school one afternoon to school the next morning, that would be classed as fair access in a courtroom. He can easily fit that contact in around a 20 hour a week job. And then he HAS to bear the costs of dinners and breakfasts and packed lunches too. On that basis, if he still wouldn't put towards the costs of uniform and other expenses, I would give him whatever a reasonable amount of the CTC is to cover those meals and transport to school.
There is currently no legal obligation to split CTC and Child Benefit in cases of shared care. The RP has a choice whether to do this, and I would say don't feel obligated to do so if you are carrying all the costs for your DS. And don't feel guilty about it, either. If it helps your conscience, buy your ex a box of cereal and a loaf of bread each week to cover the costs of your DS's breakfast that seems to be the only meal he has there!
Your Ex is a freeloading lazy twat, but you already know that - he's your Ex for a reason!