1. Попробуй веб программирование, т.е сделай хотя бы раз то, что собираешься ломать: подними веб-сервер, разверни на нем бд(лучше несколько), поделай вебформы и т.д.
2. Учи языки - мой совет это:
а) классический Си + системные вызовы линуха - поймешь, как работает память, сделаешь кучу ошибок, вызывающих переполнение или утечку и поймешь, как их совершают другие.
б) Как бы ни было мерзотно - посмотри пхп, уж очень много всего в вебе на нем написано.
в) Python - имхо идеальный вариант для автомтизации своих действий и написания небольших вещей (брутов, чекеров и т.д).
3. Изучи устройство линукс. (без комментариев - думаю и так ясно.)
4. Изучай устройство различных протоколов. Начни с http. Во-первых прочитай о нем хотя бы в вики. Потом посмотри какими пакетами обмениваются приложения с твоей машины со сторонними сервисами. Попробуй написать код, который будет эмулировать такое общение.
5. Чтобы не заскучать погугли следующие термины: переполнение буфера, недостаточная фильтрация данных, тайминг-атака. (Пробуй воплотить в коде идеи о которых прочитал)
Ну и напоследок - ломай все, что подвернется под руку, пытайся найти недокументированные свойства каждой сущности, которую наблюдаешь. Хакинг в некотором смысле похож на боевое искусство - это в первую очередь тунеллирование внимания, а уже потом набор техник и приемов.