pwncollege
DojosLeaderboardCommunity
Back to cse365-s2026

Module 2

cse365-s2026
0/79 challenges completed

In this second module we will dive into data handling, web communication, and SQL basics.

Questions and Discussions (Discord)

  • Chat about the content: Getting Started > #playing-with-programs
  • Create a forum post: Getting Started > #getting-started-forum

Introduction to Module 2

1
LECTURE: Module 2 Hype

Dealing with Data

Computer software communicates with each other by exchanging variously-formatted data via various communication channels. Learning about this concurrently with learning about security concepts can be overwhelming, and thus, this module tries to prepare you for the latter by covering the former.

In this module, you will learn the different ways data is reasoned about by programs. In the future, this will help you carefully craft that data to break the recipient program's security!

2
LECTURE: Binary Data
3
LECTURE: Hex
4
LECTURE: Text
5
LECTURE: Playing with Encodings
6
LECTURE: Base64
7
LECTURE: Gleaning Challenge Insight
8
What's the password?
9
... and again!
10
Newline Troubles
11
Reasoning about files
12
Specifying Filenames
13
Binary and Hex Encoding
14
More Hex
15
Decoding Hex
16
Decoding Practice
17
Encoding Practice
18
Hex-encoding ASCII
19
Nested Encoding
20
Hex-encoding UTF-8
21
UTF Mixups
22
Modifying Encoded Data
23
Decoding Base64
24
Encoding Base64
25
Dealing with Obfuscation
26
Dealing with Obfuscation 2

Talking Web

HTTP (Hypertext Transfer Protocol) is the lingua franca of the open Internet: the common tongue through which web applications, servers, and clients communicate. This module delves deep into the intricate skills of crafting, decoding, and manipulating HTTP requests and responses. By the end of this journey, you won't be solely reliant on your web browser to make HTTP requests on your behalf. You'll master the skills to speak directly with web servers, opening a new world of potential.

You will learn about:

  • Headers: Metadata fields that carry vital information about the request or response.
  • Paths: The specific locations or resources you're aiming to access.
  • Arguments: Data points that can alter or dictate the behavior of your request.
  • Form Data: Data transferred from web forms.
  • JSON: A popular data interchange format that's lightweight and human-readable.
  • Cookies: Small data fragments stored on the user's computer, crucial for session management and tracking.
  • Redirects: Methods web services use to direct your browser from one location to another.

As you push through these challenges, you won't be hacking blind:

hacker@talking-web-level-1:~$ /challenge/run
* Serving Flask app 'run'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://challenge.localhost:80
Press CTRL+C to quit

This output, made available through the challenge, directs you into the core of the web server's activities. Don't ignore it: the server's responses are often hints, meant to nudge you towards the right path when it is unclear.

27
LECTURE: Introduction
28
LECTURE: The Internet
29
LECTURE: RFC 1945
30
LECTURE: URLs and Encoding
31
LECTURE: State
32
LECTURE: Making HTTP Requests
33
Your First HTTP Request
34
Reading Flask
35
Commented Data
36
HTTP Metadata
37
HTTP (netcat)
38
HTTP Paths (netcat)
39
HTTP (curl)
40
HTTP (python)
41
HTTP Host Header (python)
42
HTTP Host Header (curl)
43
HTTP Host Header (netcat)
44
URL Encoding (netcat)
45
HTTP GET Parameters
46
Multiple HTTP Parameters (netcat)
47
Multiple HTTP Parameters (curl)
48
HTTP Forms
49
HTTP Forms (curl)
50
HTTP Forms (netcat)
51
HTTP Forms (python)
52
HTTP Forms Without Forms
53
Multiple Form Fields (curl)
54
Multiple Form Fields (netcat)
55
HTTP Redirects (netcat)
56
HTTP Redirects (curl)
57
HTTP Redirects (python)
58
HTTP Cookies (curl)
59
HTTP Cookies (netcat)
60
HTTP Cookies (python)
61
Server State (python)
62
Listening Web
63
Speaking Redirects
64
JavaScript Redirects
65
Including JavaScript
66
HTTP (javascript)
67
HTTP Get Parameters (javascript)
68
HTTP Forms (javascript)

SQL Playground

Modern society runs on the internet, and the internet runs on databases. Databases hold massive amounts of data on everything from your pwn.college scores (yes, we have a database!) to all of Wikipedia to less important things such as your credit score. If you can describe it, it exists in a database somewhere.

Databases come in all shapes and sizes, but arguably the most common ones, and definitely the most traditional ones, store data entries in structured tables. These Structured tables can be Queried using a specialized Languaged called the Structued Query Language, or SQL (typically pronounced like "sequel").

The (mis)use of SQL leads to all sorts of potential security issues, as we'll explore later on this platform. For now, this module will teach you (or, rather, force you to learn) SQL through a series of challenges that will expose you to the parts of the language that will become relevant later.

Welcome to the SQL playground.

69
LECTURE: Structured Query Language
70
SQL Queries
71
Filtering SQL
72
Choosing Columns
73
Exclusionary Filtering
74
Filtering Strings
75
Filtering on Expressions
76
SELECTing Expressions
77
Composite Conditions
78
Reaching Your LIMITs
79
Querying Metadata