Skip to content

Latest commit

 

History

History
184 lines (181 loc) · 13.8 KB

resources.md

File metadata and controls

184 lines (181 loc) · 13.8 KB
layout title
page
Resources
What is Hacker101?

Hacker101 is a free educational resource developed by HackerOne to grow and empower the hacker community at large. We have video lessons and curated resources to help you learn the concepts of hacking and a Capture the Flag where you can turn that theory into practice.

What is the Hacker101 CTF?

The Hacker101 CTF -- or Capture the Flag -- is a game where you hack through levels to find bits of data called flags. These flags mark your progress and allow you to receive invitations to private programs on HackerOne, where you can use your newly-learned skills.

I'm new to all of this; how do I get started?

Congratulations on taking the first step to becoming a hacker!

We recommend starting with our Hacker101 for Newcomers and Burp Suite playlists. Once you've completed that, start working through the Hacker101 CTF and watching the other video lessons as you need them.

While there are no prerequisites for Hacker101, strictly speaking, there are things you can learn to accelerate your hacking education. Note that you don't need to know all of this -- or any -- to get started. Here's a curated list of resources:

  • Programming
    • JavaScript: This is the language used on the majority of web pages. Understanding it is useful for bug hunting because many bugs actually stem from JS code.
    • Python: Commonly used for automating various activities during testing, as well as being useful for general programming.
    • SQL: Used by most applications for accessing and manipulating data. Knowledge of SQL will help in discovering and exploiting critical SQL Injection vulnerabilities.
  • Networking
    • Terminology guide: You'll hear many terms from IP address to port to DNS. This guide will help you understand that.
    • Common Port Numbers: A useful list of common port numbers and the associated services.
  • Linux
    • Setting up your own web server: While not security-related in itself, this will teach you many of the commands and concepts you need to know to become a great hacker.
    • Setting up Kali Linux on Virtualbox: Kali is a hacking-oriented Linux distribution, used by many bug hunters. This guide will help you set it up in a virtual machine.
    • Command Line Guide: You'll end up using many command-line tools as a hacker, so a familiarity with its structure and use is valuable.

I've been hacking for a while now; how do I get into bug bounties?

We recommend signing up for a HackerOne account and checking out our extensive programs. Additionally, you can earn invitations to private programs on HackerOne via the Hacker101 CTF. This gets you into programs with fewer hackers, often making it easier to find interesting and impactful bugs.

Programming languages

Programming is an important part of being a successful hacker. This isn't a comprehensive list of programming languages and nearly any can be used for most hacking tasks, especially on the web, but rather a list of languages we find especially useful or notable.

  • Python and Ruby: Useful for automation and quick testing and analysis, particularly for web hacking.
  • JavaScript: Can be used for the same tasks as Python and Ruby (albeit with fewer relevant libraries), but mostly useful to know for analysis of code on the web, as well as exploitation.
  • Objective-C and Swift: The ability to read these will be essential if you plan to do source code review of iOS applications.
  • Java and Kotlin: The ability to read these will be essential if you plan to do source code review of Android applications. Java is produced by decompilers for Android applications, which allows you to read code (roughly) equivalent to the original source, even when you only have a compiled application.
  • AArch64 assembly: For advanced embedded and mobile hacking, understanding the very lowest level of abstraction is essential.

Web hacking tools

This is a curated list of web hacking tools and is not intended to be comprehensive; rather, we want to highlight the tools we find especially useful.

  • Burp Suite: This is the most popular proxy in web hacking circles due to its cross-platform nature and extensive featureset. See our playlist to make the most of it.
  • mitmproxy: This is an open-source proxy written in Python. Not recommended for beginners, but this can be a powerful tool.
  • sqlmap: This allows for easy discovery and exploitation of SQL injection vulnerabilities. It will not catch every bug or even be able to exploit some known SQLi bugs. What it will do is make your life much easier in the 80% of cases it will work for.
  • SSL Labs Server Test: This is an easy to use webapp for testing the SSL configuration of web servers.
  • DirBuster: This is useful for finding hidden files and directories on web servers.
  • Nikto2: Like DirBuster, but also does some basic checks for known vulnerabilities.
  • lazyrecon: This is an assembled collection of tools for performing recon.

Mobile hacking tools

This is a curated list of mobile hacking tools and is not intended to be comprehensive; rather, we want to highlight the tools we find especially useful.

  • Burp Suite: This is the most popular proxy in web hacking circles due to its cross-platform nature and extensive featureset. See our playlist to make the most of it.
  • Frida: This is an instrumentation system allowing injection of JavaScript or native libraries into arbitrary mobile applications on iOS and Android. In essence, it makes it painless to change, enhance, or disable functionality in applications.
  • dex2jar: Converts dex code (Android bytecode) into Java JAR files for manipulation or decompilation.
  • JD-GUI: This is a Java decompiler, useful after dex2jar for easy analysis of Android apps.
  • dotPeek: A .NET decompiler, for use with Xamarin Android applications.

Desktop/embedded hacking tools

This is a curated list of hacking tools for native applications and embedded devices and is not intended to be comprehensive; rather, we want to highlight the tools we find especially useful.

  • IDA Pro and Hex-Rays Decompiler: IDA is the absolute gold standard for disassemblers and its decompiler plugins are the gold standard for decompilation. It is a wonderful tool with support for nearly every obscure platform and an extensive (if confusing) SDK to add nearly any feature you can imagine. However, its price makes it difficult to justify.
  • Hopper: This is a fantastic, low-cost disassembler and decompiler that runs on macOS and Linux. While it's no replacement for IDA, it is a great choice for most applications.
  • Binary Ninja: Another low-cost alternative to IDA. Its API is perhaps the most powerful of the three for automating analysis of code.
  • Radare2: This is a set of tools for doing analysis of binaries. It includes everything from disassembly to debugging and more.
  • PE Explorer: This is a great tool for analyzing the PE binaries used on Windows. It allows for exploration of the structures of the executable itself, as well as resources.
  • dotPeek: A powerful decompiler for .NET assemblies.
  • PEiD: Tool for detecting cryptors, packers, and encryption routines in Windows PE binaries.
  • Unicorn Engine: This is a library rather than a standalone tool, but it makes writing quick emulators a breeze. Particularly useful for reverse-engineering.
  • american fuzzy lop: AFL is an extremely powerful fuzzer, enabling detection of complicated bugs in many applications and libraries.
  • Binwalk: Used for firmware analysis and extraction. This is primarily useful for embedded Linux devices.
  • GNU strings: Finds strings in arbitrary binaries. While not strictly for reverse-engineering, it is among the most useful tools around.
  • HxD (Windows) 0xED (macOS): These are graphical hex editors, useful for analysis and manipulation of files and block devices.
  • QEMU: An emulator and virtual machine supporting a large number of systems/architectures. This makes it useful for things like running embedded firmware, but also includes debugging facilities that make it an optimal tool for hacking. Can be combined with AFL for fuzzing of binaries that aren't for your native architecture.

<script> var url = document.location.toString(); if(url.match('#')) $('#heading'+url.split('#')[1].substring(0, 3)).click(); </script>