Penetration testing involves legal attempts by third parties to gain access to computer systems or networks in order to identify security vulnerabilities. There are two main types: black box testing, where no prior network knowledge is provided, and white box testing, where full information is given. Various tools can be used in penetration testing including exploitation frameworks, social engineering tools, and SQL injection detection utilities.