Genetic Programming (GP) is a metaheuristic optimization algorithm that belongs to the broad class of evolutionary algorithms. Introduced by John Koza in the 90s, GP aims to automatically evolve a population of computer programs that solve a specific task. Usually, GP represents the candidate programs as syntactic trees, and applies to them variation operators such as tree crossover and random mutation to produce new offspring solutions that will (hopefully) solve the task better. The aim of this talk is to give a broad overview of how GP and its main variants work, and to show a few applications of GP to cybersecurity. Examples include the construction of cryptographic primitives (such as Boolean functions and S-boxes), as well as using GP as a supervised learner for anomaly detection. For the latter application, the higher interpretability of GP trees as compared to other machine learning model is of particular interest. Finally, the talk will point out a couple of interesting research directions about GP-based cybersecurity.