pwncollege
DojosLeaderboardCommunity
Back to cse365-f2025

Module 2

cse365-f2025
0/82 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
2
LECTURE: Who is Professor Jaron Mink?
3
LECTURE: Who is Professor JJ Baek?
4
LECTURE: Who is Connor?

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!

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

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

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