Writeup Aria
RoadMapCyber Security 101

Web Hacking Part 2

SQL Fundamentals

Databases 101

Database adalah kumpulan data terstruktur yang disimpan secara rapi sehingga mudah diakses, dikelola, dan dianalisis. Database digunakan hampir di semua sistem, seperti:

  • Login pengguna (username & password)
  • Media sosial (post, komentar, like)
  • Streaming (riwayat tontonan & rekomendasi)
  • Aplikasi bisnis skala kecil hingga besar

Jenis-Jenis Database

Secara umum ada 2 jenis utama database:

1768619076385

1. Relational Database (SQL)
  • Data terstruktur dan konsisten
  • Disimpan dalam tabel (baris & kolom)
  • Memiliki relasi antar tabel
  • Cocok untuk data yang membutuhkan akurasi tinggi
  • Contoh penggunaan: transaksi e-commerce
2. Non-Relational Database (NoSQL)
  • Data tidak berbentuk tabel
  • Struktur data fleksibel
  • Cocok untuk data yang bervariasi
  • Contoh penggunaan: konten media sosial

Tabel, Baris, dan Kolom (Relational Database)

  • Tabel: tempat menyimpan data (contoh: tabel Books)
  • Kolom: jenis data (id, nama, tanggal)
  • Baris: satu record/data lengkap
  • Setiap kolom memiliki tipe data (string, integer, decimal, date)
  • Data yang tidak sesuai tipe akan ditolak

1768619188677

Primary Key & Foreign Key

1768619194803

Primary Key
  • Penanda unik untuk setiap data
  • Tidak boleh duplikat
  • Hanya satu primary key per tabel
  • Contoh: id
Foreign Key
  • Kolom yang merujuk primary key di tabel lain
  • Digunakan untuk membuat relasi antar tabel
  • Bisa lebih dari satu dalam satu tabel
  • Contoh: author_id di tabel Books
  • What type of database should you consider using if the data you're going to be storing will vary greatly in its format?

Non-relational database

  • What type of database should you consider using if the data you're going to be storing will reliably be in the same structured format?

Relational database

  • In our example, once a record of a book is inserted into our "Books" table, it would be represented as a ___ in that table?

row

  • Which type of key provides a link from one table to another?

Foreign Key

  • which type of key ensures a record is unique within a table?

Primary Key

SQL

SQL (Structured Query Language) adalah bahasa yang digunakan untuk mengakses, mengelola, dan memanipulasi data di database relasional.

SQL digunakan untuk:

  • Membuat tabel
  • Menambah, mengubah, dan menghapus data
  • Mengambil (query) data dari database

DBMS (Database Management System)

Database dikelola melalui DBMS, yaitu software penghubung antara pengguna dan database.

Contoh DBMS:

  • MySQL
  • MariaDB
  • Oracle Database
  • MongoDB

DBMS memungkinkan pengguna untuk retrieve, update, dan manage data.

Kelebihan SQL & Database Relasional

Alasan SQL banyak digunakan:

  • Cepat Mampu memproses dan menampilkan data dalam jumlah besar dengan cepat.
  • Mudah Dipelajari Sintaks SQL mirip bahasa Inggris dan mudah dibaca.
  • Reliabel Struktur data yang ketat menjaga akurasi dan konsistensi data.
  • Fleksibel Mendukung query kompleks untuk analisis data secara efisien.

Praktik Awal SQL (Hands-On)

Untuk mulai menggunakan SQL:

  1. Jalankan mesin/VM
  2. Buka terminal
  3. Masuk ke MySQL dengan perintah:
    mysql -u root -p
  4. Masukkan password:
    tryhackme
  5. Jika berhasil, akan muncul prompt:
    mysql>
  • What serves as an interface between a database and an end user?

DBMS

  • What query language can be used to interact with a relational database?

sql

Database and Table Statements

1. Database Statements

CREATE DATABASE

Digunakan untuk membuat database baru.

CREATE DATABASE thm_bookmarket_db;
SHOW DATABASES

Menampilkan semua database yang tersedia di MySQL.

SHOW DATABASES;
USE DATABASE

Menentukan database aktif yang akan digunakan untuk menjalankan perintah SQL selanjutnya.

USE thm_bookmarket_db;
DROP DATABASE

Menghapus database yang sudah tidak diperlukan. ⚠️ Hati-hati karena data akan hilang permanen.

DROP DATABASE database_name;

2. Table Statements

CREATE TABLE

Digunakan untuk membuat tabel di dalam database aktif.

CREATE TABLE book_inventory (
    book_id INT AUTO_INCREMENT PRIMARY KEY,
    book_name VARCHAR(255) NOT NULL,
    publication_date DATE
);

Penjelasan penting:

  • book_id → Integer, otomatis bertambah, Primary Key
  • book_name → Teks maksimal 255 karakter, tidak boleh kosong
  • publication_date → Tanggal terbit buku
SHOW TABLES

Menampilkan daftar tabel dalam database yang sedang aktif.

SHOW TABLES;
DESCRIBE / DESC

Melihat struktur tabel, termasuk:

  • Nama kolom
  • Tipe data
  • Primary Key
  • Null / Not Null
DESCRIBE book_inventory;
ALTER TABLE

Digunakan untuk mengubah struktur tabel, seperti:

  • Menambah kolom
  • Menghapus kolom
  • Mengubah tipe data

Contoh menambah kolom jumlah halaman:

ALTER TABLE book_inventory
ADD page_count INT;
DROP TABLE

Menghapus tabel dari database. ⚠️ Data tabel akan hilang permanen.

DROP TABLE table_name;

Answer Questions

show databases;
# | THM{575a947132312f97b30ee5aeebba629b723d30f9} |
# | task_4_db                                     |
# | thm_books                                     |
# | thm_books2                                    |
# | tools_db                                      |

use task_4_db
show tales;
# THM{692aa7eaec2a2a827f4d1a8bed1f90e5e49d2410}
CREATE DATABASE thm_bookmarket_db;
SHOW DATABASES;
USE thm_bookmarket_db;

CREATE TABLE book_inventory (
    book_id INT AUTO_INCREMENT PRIMARY KEY,
    book_name VARCHAR(255) NOT NULL,
    publication_date DATE
);
SHOW TABLES;
DESCRIBE book_inventory;

ALTER TABLE book_inventory
ADD page_count INT;

DROP TABLE book_inventory;
DROP DATABASE thm_bookmarket_db;
  • Using the statement you've learned to list all databases, it should reveal a database with a flag for a name; what is it?

THM{575a947132312f97b30ee5aeebba629b723d30f9}

  • In the list of available databases, you should also see the task_4_db database. Set this as your active database and list all tables in this database; what is the flag present here?
    • Use the command to list all tables in the current database.

THM{692aa7eaec2a2a827f4d1a8bed1f90e5e49d2410}

CRUD Operations

CRUD adalah singkatan dari:

  • Create
  • Read
  • Update
  • Delete

CRUD merupakan operasi dasar dalam pengelolaan data di database.

1. Create (INSERT)

Digunakan untuk menambahkan data baru ke dalam tabel.

INSERT INTO books (id, name, published_date, description)
VALUES (1, "Android Security Internals", "2014-10-14",
"An In-Depth Guide to Android's Security Architecture");

Penjelasan:

  • INSERT INTO → menambah data
  • books → nama tabel
  • Kolom ditulis sesuai urutan nilai
  • VALUES → data yang dimasukkan

2. Read (SELECT)

Digunakan untuk mengambil / melihat data dari tabel.

Ambil semua kolom
SELECT * FROM books;
Ambil kolom tertentu
SELECT name, description FROM books;

Catatan:

  • * berarti semua kolom
  • Bisa memilih kolom tertentu untuk efisiensi

3. Update (UPDATE)

Digunakan untuk mengubah data yang sudah ada.

UPDATE books
SET description = "An In-Depth Guide to Android's Security Architecture."
WHERE id = 1;

Penjelasan:

  • SET → menentukan data yang diubah
  • WHERE → menentukan baris yang akan diubah ⚠️ Tanpa WHERE, semua data bisa berubah

4. Delete (DELETE)

Digunakan untuk menghapus data dari tabel.

DELETE FROM books WHERE id = 1;

Catatan penting:

  • WHERE sangat penting
  • Tanpa WHERE, semua data dalam tabel akan terhapus

Ringkasan CRUD

OperasiPerintah SQLFungsi
CreateINSERTMenambah data
ReadSELECTMelihat data
UpdateUPDATEMengubah data
DeleteDELETEMenghapus data

Answer Questions

USE tools_db;
SHOW TABLES;
# hacking_tools

SELECT * FROM hacking_tools;
# +----+------------------+----------------------+-------------------------------------------------------------------------+--------+
# | id | name             | category             | description                                                             | amount |
# +----+------------------+----------------------+-------------------------------------------------------------------------+--------+
# |  1 | Flipper Zero     | Multi-tool           | A portable multi-tool for pentesters and geeks in a toy-like form       |    169 |
# |  2 | O.MG cables      | Cable-based attacks  | Malicious USB cables that can be used for remote attacks and testing    |    180 |
# |  3 | Wi-Fi Pineapple  | Wi-Fi hacking        | A device used to perform man-in-the-middle attacks on wireless networks |    140 |
# |  4 | USB Rubber Ducky | USB attacks          | A USB keystroke injection tool disguised as a flash drive               |     80 |
# |  5 | iCopy-XS         | RFID cloning         | A tool used for reading and cloning RFID cards for security testing     |    375 |
# |  6 | Lan Turtle       | Network intelligence | A covert tool for remote access and network intelligence gathering      |     80 |
# |  7 | Bash Bunny       | USB attacks          | A multi-function USB attack device for penetration testers              |    120 |
# |  8 | Proxmark 3 RDV4  | RFID cloning         | A powerful RFID tool for reading, writing, and analyzing RFID tags      |    300 |
# +----+------------------+----------------------+-------------------------------------------------------------------------+--------+
USE thm_books;
SHOW TABLES;
SELECT * FROM books;

INSERT INTO books (id, name, published_date, description)
    VALUES (7, "Android Security Internals", "2014-10-14", "An In-Depth Guide to Android's Security Architecture");
SELECT * FROM books;
SELECT name, description FROM books;

UPDATE books
    SET description = "An In-Depth Guide to Android's Security Architecture."
    WHERE id = 7;

DELETE FROM books WHERE id = 7;
  • Using the tools_db database, what is the name of the tool in the hacking_tools table that can be used to perform man-in-the-middle attacks on wireless networks?

Wi-Fi Pineapple

  • Using the tools_db database, what is the shared category for both USB Rubber Ducky and Bash Bunny?

USB Attacks

Clauses

Clause adalah bagian dari perintah SQL yang digunakan untuk menentukan kriteria data, seperti:

  • Data apa yang diambil
  • Bagaimana data dikelompokkan
  • Bagaimana data diurutkan
  • Bagaimana data difilter

Clause yang sudah dikenal sebelumnya:

  • FROM → menentukan tabel
  • WHERE → memfilter baris data

Pada bagian ini fokus ke: DISTINCT, GROUP BY, ORDER BY, HAVING

1. DISTINCT

Digunakan untuk menghilangkan data duplikat dan hanya menampilkan nilai yang unik.

SELECT DISTINCT name FROM books;

Fungsi utama:

  • Menampilkan data tanpa pengulangan
  • Cocok untuk kolom yang sering memiliki nilai sama

2. GROUP BY

Digunakan untuk mengelompokkan data berdasarkan kolom tertentu. Biasanya dipakai bersama fungsi agregat seperti COUNT(), SUM(), AVG().

SELECT name, COUNT(*)
FROM books
GROUP BY name;

Hasil:

  • Data dikelompokkan per name
  • Menampilkan jumlah kemunculan tiap nama buku

3. ORDER BY

Digunakan untuk mengurutkan hasil query.

Urutan naik (Ascending)
ORDER BY published_date ASC;
Urutan turun (Descending)
ORDER BY published_date DESC;

Catatan:

  • ASC → dari kecil ke besar / lama ke baru
  • DESC → dari besar ke kecil / baru ke lama

4. HAVING

Digunakan untuk memfilter hasil GROUP BY. Berbeda dengan WHERE:

WHEREHAVING
Filter sebelum groupingFilter setelah grouping
Tidak bisa pakai agregatBisa pakai agregat
SELECT name, COUNT(*)
FROM books
GROUP BY name
HAVING name LIKE '%Hack%';

Hasil:

  • Hanya menampilkan grup data yang mengandung kata "Hack"
  • Tetap mempertahankan hasil agregasi (COUNT)

Ringkasan Cepat

ClauseFungsi
DISTINCTMenghilangkan duplikat
GROUP BYMengelompokkan data
ORDER BYMengurutkan data
HAVINGMemfilter hasil GROUP BY

Answer Questions

USE tools_db;
SELECT DISTINCT category FROM hacking_tools;

SELECT * FROM hacking_tools ORDER BY name ASC;
# | 7 | Bash Bunny       | USB attacks          | A multi-function USB attack device for penetration testers              |    120 |

SELECT * FROM hacking_tools ORDER BY name DESC;
# |  3 | Wi-Fi Pineapple  | Wi-Fi hacking        | A device used to perform man-in-the-middle attacks on wireless networks |    140 |
USE thm_books;
SELECT * FROM books;
SELECT DISTINCT name FROM books;

SELECT name, COUNT(*) FROM books
    GROUP BY name;

SELECT * FROM books
    ORDER BY published_date ASC;
SELECT * FROM books
    ORDER BY published_date DESC;

SELECT name, COUNT(*) FROM books
    GROUP BY name
    HAVING name LIKE '%Hack%';
  • Using the tools_db database, what is the total number of distinct categories in the hacking_tools table?

6

  • Using the tools_db database, what is the first tool (by name) in ascending order from the hacking_tools table?

Bash Bunny

  • Using the tools_db database, what is the first tool (by name) in descending order from the hacking_tools table?

Wi-Fi Pineapple

Operators

Operator SQL digunakan untuk memfilter dan membandingkan data sehingga query menjadi lebih spesifik dan akurat. Operator biasanya digunakan bersama WHERE clause.

1. Logical Operators

LIKE

Digunakan untuk mencari pola teks dalam kolom.

WHERE description LIKE "%guide%";

Catatan:

  • % = wildcard (karakter bebas)
  • Cocok untuk pencarian kata di dalam teks
AND

Menggabungkan beberapa kondisi. Hasil TRUE jika semua kondisi terpenuhi.

WHERE category = "Offensive Security"
AND name = "Bug Bounty Bootcamp";
OR

Hasil TRUE jika salah satu kondisi terpenuhi.

WHERE name LIKE "%Android%" OR name LIKE "%iOS%";
NOT

Membalikkan kondisi (pengecualian).

WHERE NOT description LIKE "%guide%";
BETWEEN

Digunakan untuk mengecek nilai dalam rentang tertentu (inklusif).

WHERE id BETWEEN 2 AND 4;

2. Comparison Operators

Sama dengan (=)
WHERE name = "Designing Secure Software";
Tidak sama dengan (!=)
WHERE category != "Offensive Security";
Lebih kecil dari (<)
WHERE published_date < "2020-01-01";
Lebih besar dari (>)
WHERE published_date > "2020-01-01";
Lebih kecil / besar atau sama dengan (<=, >=)
WHERE published_date <= "2021-11-15";
WHERE published_date >= "2021-11-02";

Ringkasan Operator

Logical Operators
OperatorFungsi
LIKECari pola teks
ANDSemua kondisi harus benar
ORSalah satu kondisi benar
NOTMembalikkan kondisi
BETWEENCek nilai dalam rentang
Comparison Operators
OperatorFungsi
=Sama dengan
!=Tidak sama dengan
<Lebih kecil
>Lebih besar
<=Lebih kecil / sama
>=Lebih besar / sama

Answer Questions

USE tools_db;
SELECT * FROM hacking_tools;

SELECT * FROM hacking_tools
    WHERE category LIKE "%Multi-tool%";
# |  1 | Flipper Zero | Multi-tool | A portable multi-tool for pentesters and geeks in a toy-like form |    169 |

SELECT * FROM hacking_tools
    WHERE amount >= 300;
# |  5 | iCopy-XS        | RFID cloning | A tool used for reading and cloning RFID cards for security testing |    375 |
# |  8 | Proxmark 3 RDV4 | RFID cloning | A powerful RFID tool for reading, writing, and analyzing RFID tags  |    300 |

SELECT * FROM hacking_tools
    WHERE  category Like "%Network intelligence%" AND amount < 100;
# |  6 | Lan Turtle | Network intelligence | A covert tool for remote access and network intelligence gathering |     80 |
USE thm_books2;
SELECT * FROM books;

SELECT * FROM books
    WHERE description LIKE "%guide%";

SELECT * FROM books
    WHERE category = "Offensive Security" AND name = "Bug Bounty Bootcamp";
SELECT * FROM books
    WHERE name LIKE "%Android%" OR name LIKE "%iOS%";
SELECT * FROM books
    WHERE NOT description LIKE "%guide%";
SELECT * FROM books
    WHERE id BETWEEN 2 AND 4;


SELECT * FROM books
    WHERE name = "Designing Secure Software";
SELECT * FROM books
    WHERE category != "Offensive Security";
SELECT * FROM books
    WHERE published_date < "2020-01-01";
SELECT * FROM books
    WHERE published_date > "2020-01-01";
SELECT * FROM books
    WHERE published_date <= "2021-11-15";
SELECT * FROM books
    WHERE published_date >= "2021-11-02";
  • Using the tools_db database, which tool falls under the Multi-tool category and is useful for pentesters and geeks?
    • Use WHERE clause and LIKE operators

Flipper Zero

  • Using the tools_db database, what is the category of tools with an amount greater than or equal to 300?

Lan Turtle

Functions

Function dalam SQL digunakan untuk memproses dan memanipulasi data agar query lebih efisien dan informatif.

1. String Functions

CONCAT()

Menggabungkan dua atau lebih string menjadi satu.

SELECT CONCAT(name, " is a type of ", category, " book.") AS book_info
FROM books;

Fungsi utama:

  • Menggabungkan teks dari beberapa kolom
  • Berguna untuk membuat output deskriptif
GROUP_CONCAT()

Menggabungkan data dari banyak baris menjadi satu string.

SELECT category, GROUP_CONCAT(name SEPARATOR ", ") AS books
FROM books
GROUP BY category;

Fungsi utama:

  • Menggabungkan data hasil GROUP BY
  • Output lebih ringkas dan informatif
SUBSTRING()

Mengambil sebagian teks dari sebuah string.

SELECT SUBSTRING(published_date, 1, 4) AS published_year
FROM books;

Keterangan:

  • Angka pertama = posisi awal
  • Angka kedua = panjang karakter
LENGTH()

Menghitung jumlah karakter dalam string (termasuk spasi).

SELECT LENGTH(name) AS name_length
FROM books;

2. Aggregate Functions

Digunakan untuk mengolah banyak baris data menjadi satu hasil.

COUNT()

Menghitung jumlah baris data.

SELECT COUNT(*) AS total_books
FROM books;
SUM()

Menjumlahkan seluruh nilai pada kolom tertentu (tidak termasuk NULL).

SELECT SUM(price) AS total_price
FROM books;
MAX()

Mengambil nilai terbesar dari suatu kolom.

SELECT MAX(published_date) AS latest_book
FROM books;
MIN()

Mengambil nilai terkecil dari suatu kolom.

SELECT MIN(published_date) AS earliest_book
FROM books;

Ringkasan Cepat

String Functions
FungsiKegunaan
CONCATMenggabungkan string
GROUP_CONCATGabungkan banyak baris
SUBSTRINGAmbil sebagian teks
LENGTHHitung panjang string
Aggregate Functions
FungsiKegunaan
COUNTHitung jumlah data
SUMMenjumlahkan nilai
MAXNilai terbesar
MINNilai terkecil

Answer Questions

USE tools_db;
SELECT name, LENGTH(name)
    AS name_length FROM hacking_tools
    ORDER BY name_length DESC;
# | name             | name_length |
# +------------------+-------------+
# | USB Rubber Ducky |          16 |
# | Wi-Fi Pineapple  |          15 |

SELECT COUNT(*) AS total_tools
    FROM hacking_tools;
# | total_tools |
# +-------------+
# |           8 |

SELECT SUM(amount) AS total_amount
    FROM hacking_tools;
# | total_amount |
# +--------------+
# |         1444 |

SELECT GROUP_CONCAT(name SEPARATOR " & ") AS tool_names
    FROM hacking_tools
    WHERE amount % 10 != 0;
USE thm_books2;
SELECT CONCAT(name, " is a type of ", category, " book.") AS book_info FROM books;

SELECT category, GROUP_CONCAT(name SEPARATOR ", ") AS books
    FROM books GROUP BY category;

SELECT SUBSTRING(published_date, 1, 4) AS published_year FROM books;

SELECT LENGTH(name) AS name_length FROM books;

SELECT COUNT(*) AS total_books FROM books;

SELECT SUM(price) AS total_price FROM books;
SELECT MAX(published_date) AS latest_book FROM books;
SELECT MIN(published_date) AS earliest_book FROM books;
  • Using the tools_db database, what is the tool with the longest name based on character length?
    • Use the LENGTH() function and sort the tool name in descending order

USB Rubber Ducky

  • Using the tools_db database, what is the total sum of all tools?
    • Use the SUM() function

1444

  • Using the tools_db database, what are the tool names where the amount does not end in 0, and group the tool names concatenated by " & ".
    • Use the GROUP_CONCAT() function

Flipper Zero & iCopy-XS


Burp Suite: The Basics

What is Burp Suite?

Berikut terjemahan ke Bahasa Indonesia dengan catatan yang rapi, ringkas, dan mudah dipelajari:

📌 Ringkasan Burp Suite

Burp Suite adalah sebuah framework berbasis Java yang dirancang sebagai solusi lengkap untuk melakukan pengujian penetrasi (penetration testing) aplikasi web. Burp Suite telah menjadi standar industri dalam pengujian keamanan aplikasi web, aplikasi mobile, serta aplikasi yang menggunakan API.

🔍 Fungsi Utama

Secara sederhana, Burp Suite berfungsi untuk:

  • Menangkap (intercept) seluruh lalu lintas HTTP/HTTPS antara browser dan web server
  • Melihat, memodifikasi, dan meneruskan request sebelum sampai ke server
  • Memanipulasi response sebelum diterima oleh browser

Kemampuan inilah yang menjadi fondasi utama Burp Suite dan menjadikannya alat yang sangat penting untuk pengujian manual aplikasi web. Request yang ditangkap dapat diarahkan ke berbagai komponen dalam framework Burp Suite.

🧩 Edisi Burp Suite

Burp Suite tersedia dalam beberapa edisi:

1️⃣ Burp Suite Community Edition
  • Gratis (non-komersial dan legal)
  • Fokus pada fitur inti untuk pengujian manual
  • Edisi yang digunakan dalam pembelajaran ini
2️⃣ Burp Suite Professional

Versi tanpa batasan dari Community Edition, dilengkapi fitur lanjutan seperti:

  • 🔎 Automated vulnerability scanner
  • 🚀 Fuzzer / brute-force tanpa rate limit
  • 💾 Penyimpanan project & pembuatan laporan
  • 🔌 API bawaan untuk integrasi dengan tools lain
  • 🧩 Dukungan penuh ekstensi
  • 🌐 Burp Suite Collaborator (request catcher untuk mendeteksi blind vulnerability)

📌 Kesimpulan: Burp Suite Professional adalah alat yang sangat kuat dan menjadi pilihan utama para profesional keamanan.

3️⃣ Burp Suite Enterprise
  • Digunakan untuk continuous scanning
  • Berjalan di server, bukan di mesin lokal
  • Melakukan pemindaian otomatis dan berkala terhadap aplikasi web
  • Mirip dengan Nessus, tetapi khusus aplikasi web
  • Tidak digunakan untuk serangan manual
  • Which edition of Burp Suite runs on a server and provides constant scanning for target web apps?

Burp Suite Enterprise

  • Burp Suite is frequently used when attacking web applications and ______ applications.

Mobile

Features of Burp Community

Meskipun Burp Suite Community Edition memiliki fitur yang lebih terbatas dibandingkan versi Professional, edisi ini tetap menyediakan berbagai tools penting yang sangat berguna untuk pengujian aplikasi web.

🔑 Fitur-Fitur Inti

1️⃣ Proxy

  • Fitur paling terkenal dari Burp Suite
  • Memungkinkan intersepsi dan modifikasi request serta response
  • Digunakan saat berinteraksi langsung dengan aplikasi web

2️⃣ Repeater

  • Digunakan untuk menangkap, mengubah, dan mengirim ulang request
  • Sangat berguna untuk:
    • Uji coba payload secara berulang (trial & error)
    • Pengujian kerentanan seperti SQL Injection (SQLi)
    • Menguji perilaku endpoint tertentu

3️⃣ Intruder

  • Digunakan untuk mengirim banyak request ke endpoint
  • Umumnya dipakai untuk:
    • Brute-force
    • Fuzzing parameter
  • ⚠️ Pada Community Edition terdapat rate limit

4️⃣ Decoder

  • Berfungsi untuk encode dan decode data
  • Digunakan untuk:
    • Mendekode data hasil tangkapan
    • Meng-encode payload sebelum dikirim
  • Lebih efisien karena terintegrasi langsung di Burp Suite

5️⃣ Comparer

  • Digunakan untuk membandingkan dua data
  • Perbandingan bisa dilakukan pada:
    • Level kata (word)
    • Level byte
  • Sangat membantu untuk analisis respons besar dengan cepat

6️⃣ Sequencer

  • Digunakan untuk menguji tingkat keacakan (randomness) token
  • Contoh target pengujian:
    • Session cookie
    • Token autentikasi
  • Randomness yang lemah dapat membuka celah serangan serius

🧩 Ekstensi Burp Suite

  • Burp Suite berbasis Java, sehingga mendukung pengembangan ekstensi
  • Bahasa yang didukung:
    • Java
    • Python (Jython)
    • Ruby (JRuby)

🔌 Burp Extender & BApp Store

  • Burp Extender: memuat ekstensi dengan cepat
  • BApp Store: marketplace untuk ekstensi pihak ketiga
  • Beberapa ekstensi memerlukan lisensi Professional, namun banyak ekstensi gratis untuk Community Edition

📌 Contoh ekstensi populer:

  • Logger++ → meningkatkan fungsi logging bawaan Burp Suite
  • Which Burp Suite feature allows us to intercept requests between ourselves and the target?

Proxy

  • Which Burp tool would we use to brute-force a login form?

Intruder

Installation

⬇️ Download

  • Unduh versi terbaru Burp Suite dari halaman resmi PortSwigger
  • Pilih Burp Suite Community Edition
  • Tersedia installer untuk Linux, macOS, dan Windows
🐉 Kali Linux
  • Burp Suite sudah ter-install secara default
  • Jika belum ada, instal melalui repository:
    sudo apt install burpsuite

⚙️ Instalasi

  • Windows: jalankan file .exe
  • Linux: jalankan script installer melalui terminal (dengan atau tanpa sudo)
    • Tanpa sudo → terinstal di:
      ~/BurpSuiteCommunity/BurpSuiteCommunity
    • Tidak otomatis masuk ke PATH

The Dashboard

⚙️ Konfigurasi Awal Burp Suite

  1. Jalankan Burp Suite dan setujui terms and conditions
  2. Pilih Project Type
    • Pada Community Edition, langsung klik Next
  3. Pilih Configuration
    • Disarankan menggunakan pengaturan default
  4. Klik Start Burp untuk masuk ke antarmuka utama

📘 Tampilan Awal

  • Saat pertama kali dibuka, mungkin muncul layar training
    • Sangat disarankan untuk dipelajari
  • Jika tidak muncul, Anda akan langsung melihat Burp Dashboard
    • Awalnya terlihat kompleks, namun akan terbiasa seiring penggunaan

🧭 Burp Dashboard

Dashboard dibagi menjadi 4 bagian (quadrant):

1768630826048

1️⃣ Tasks
  • Menentukan tugas latar belakang Burp
  • Di Community Edition, Live Passive Crawl sudah cukup
  • Professional Edition mendukung on-demand scan
2️⃣ Event Log
  • Menampilkan aktivitas Burp Suite
  • Contoh: status proxy, koneksi yang terjadi
3️⃣ Issue Activity (Professional Only)
  • Menampilkan kerentanan hasil automated scanner
  • Disusun berdasarkan tingkat keparahan
4️⃣ Advisory (Professional Only)
  • Detail kerentanan, referensi, dan rekomendasi perbaikan
  • Bisa diekspor menjadi laporan
  • Di Community Edition, biasanya tidak ada data

❓ Ikon Bantuan

  • Terdapat ikon tanda tanya (?) di berbagai menu
  • Klik ikon ini untuk membuka penjelasan fitur terkait
  • Sangat membantu saat mempelajari Burp Suite
  • What menu provides information about the actions performed by Burp Suite, such as starting the proxy, and details about connections made through Burp?

Event Log

Navigasi utama di Burp Suite dilakukan melalui menu bar bagian atas.

🔹 Modul

  • Baris menu paling atas menampilkan modul-modul Burp Suite
  • Klik modul untuk berpindah (misalnya Proxy)

1768631018052

🔹 Sub-Tab

  • Jika modul memiliki beberapa tab, sub-tab muncul di baris menu kedua
  • Contoh: Proxy → Intercept

🔹 Detach Tab

  • Tab bisa dipisahkan ke jendela terpisah
  • Menu: Window → Detach
  • Bisa digabung kembali dengan cara yang sama

1768631025338

⌨️ Shortcut Penting

ShortcutTab
Ctrl + Shift + DDashboard
Ctrl + Shift + TTarget
Ctrl + Shift + PProxy
Ctrl + Shift + IIntruder
Ctrl + Shift + RRepeater
  • Which tab Ctrl + Shift + P will switch us to?

Proxy Tab

Options

Sebelum menggunakan Burp Proxy, pahami dulu jenis pengaturan di Burp Suite. Terdapat dua jenis settings:

1️⃣ Global Settings (User Settings)
  • Berlaku untuk seluruh instalasi Burp Suite
  • Aktif setiap kali Burp dijalankan
  • Menjadi konfigurasi dasar lingkungan Burp
2️⃣ Project Settings
  • Berlaku hanya untuk project yang sedang dibuka
  • ⚠️ Pada Burp Suite Community, project tidak bisa disimpan
  • Semua pengaturan project akan hilang saat Burp ditutup

🔧 Mengakses Settings

  • Klik tombol Settings di navigation bar atas
  • Akan terbuka jendela settings terpisah

1768631358637

🗂️ Menu di Settings

Di panel kiri tersedia:

  • Search → cari pengaturan dengan kata kunci
  • Type filter → filter User / Project settings
  • User settings → pengaturan global
  • Project settings → pengaturan project aktif
  • Categories → pilih berdasarkan kategori

proxy settings 1768631455508

  • In which category can you find a reference to a "Cookie jar"?

Sessions

1768631606810

  • In which base category can you find the "Updates" sub-category, which controls the Burp Suite update behaviour?
    • If your answer to this question is "Misc", then you are using an outdated version of Burp Suite. Update to the latest version, then search for the answer in the settings window.

Suite

  • What is the name of the sub-category which allows you to change the keybindings for shortcuts in Burp Suite?

HotKeys

1768631712905

  • If we have uploaded Client-Side TLS certificates, can we override these on a per-project basis (yea/nay)?
    • Search for "Client TLS Certificates", then look at the scopes provided to the right of the section heading.

yea

Introduction to the Burp Proxy

Burp Proxy adalah komponen paling fundamental dan krusial dalam Burp Suite. Fungsinya untuk menangkap (capture) request dan response antara pengguna dan web server target. Traffic yang ditangkap dapat:

  • Dimodifikasi
  • Dikirim ke modul Burp lain
  • Diteruskan atau dihentikan secara manual

🔑 Konsep Penting Burp Proxy

1️⃣ Intercepting Requests
  • Request yang melewati proxy akan ditahan sebelum sampai ke server
  • Muncul di tab Proxy
  • Bisa:
    • Forward
    • Drop
    • Edit
    • Kirim ke modul lain (Repeater, Intruder, dll)
  • Untuk melewati proxy tanpa ditahan, klik Intercept is on (nonaktifkan)

1768642053628

2️⃣ Kontrol Penuh Traffic
  • Intersepsi request memberi kendali penuh atas lalu lintas web
  • Sangat penting untuk pengujian keamanan aplikasi web
3️⃣ Capture & Logging
  • Semua request tetap dicatat (logged) meskipun intercept dimatikan
  • Berguna untuk analisis dan review di kemudian hari
4️⃣ Dukungan WebSocket
  • Burp Suite juga menangkap & mencatat komunikasi WebSocket
  • Membantu analisis aplikasi web modern
5️⃣ Log & History
  • Request dapat dilihat di:
    • HTTP history
    • WebSockets history
  • Request dari history bisa dikirim ke modul Burp lainnya

1768642062132

⚙️ Proxy Settings

Akses melalui tombol Proxy settings untuk mengatur perilaku proxy.

🔸 Fitur Penting Proxy Settings

🔁 Response Interception

  • Secara default, response tidak di-intercept

  • Opsi Intercept responses based on the following rules

    • Mengizinkan intersepsi response berdasarkan aturan tertentu

    1768642073604

🔄 Match and Replace

  • Menggunakan regex untuk memodifikasi request & response
  • Contoh penggunaan:
    • Mengubah User-Agent
    • Memanipulasi Cookie

Connecting through the Proxy (FoxyProxy)

Untuk menggunakan Burp Suite Proxy, browser harus diarahkan melalui Burp.

⚠️ Panduan ini khusus Firefox AttackBox: FoxyProxy sudah terpasang

⚙️ Langkah Konfigurasi

1️⃣ Install FoxyProxy

  • Pasang FoxyProxy Basic
  • (Lewati jika pakai AttackBox)

2️⃣ Buat Konfigurasi Proxy

  • Klik ikon FoxyProxyOptions
  • Klik Add
  • Isi:
    • Title: Burp
    • Proxy IP: 127.0.0.1
    • Port: 8080
  • Klik Save

3️⃣ Aktifkan Proxy

  • Klik ikon FoxyProxy
  • Pilih Burp
  • ⚠️ Burp Suite harus berjalan

🔀 Intercept Request

  • Buka Burp Suite → Proxy
  • Pastikan Intercept = ON
  • Buka website target (contoh: http://10.49.184.127/)
  • Browser akan hang → request muncul di Burp ✅

Site Map and Issue Definitions

Tab Target tidak hanya untuk mengatur scope, tetapi memiliki 3 sub-tab utama:

1️⃣ Site Map
  • Menampilkan struktur aplikasi web dalam bentuk tree
  • Semua halaman yang dikunjungi saat proxy aktif akan otomatis tercatat
  • Berguna untuk:
    • Enumerasi awal
    • Mapping endpoint & API
  • Endpoint API yang diakses aplikasi akan otomatis muncul di sini
2️⃣ Issue Definitions
  • Daftar lengkap jenis kerentanan web
  • Berisi deskripsi & referensi
  • Berguna sebagai referensi laporan atau saat analisis manual
  • Tersedia meskipun tanpa scanner otomatis (Community Edition)
3️⃣ Scope Settings
  • Mengatur target scope
  • Bisa include / exclude domain atau IP
  • Membantu fokus ke target dan menghindari traffic tidak relevan

✅ Kesimpulan

Target tab membantu untuk:

  • Memetakan aplikasi web
  • Mengatur scope pengujian
  • Referensi kerentanan web

🧪 Challenge

  • Kunjungi semua link di http://10.49.184.127/
  • Cek Site Map
  • Cari satu endpoint yang terlihat tidak biasa
  • Akses endpoint tersebut lewat browser atau Response di Site Map

1768643363250

1768643838099

  • What is the flag you receive after visiting the unusual endpoint?
    • You are looking for a suspicious page with a name made up of a series of random letters and numbers.What is the flag you receive after visiting the unusual endpoint?

THM{NmNlZTliNGE1MWU1ZTQzMzgzNmFiNWVk}

The Burp Suite Browser

Burp Suite menyediakan browser Chromium bawaan yang sudah otomatis terhubung ke proxy, tanpa perlu konfigurasi manual seperti FoxyProxy.

▶️ Cara Menjalankan
  • Buka Proxy tab
  • Klik Open Browser
  • Browser Chromium akan terbuka
  • Semua request otomatis lewat Burp Proxy

⚙️ Pengaturan

  • Tersedia berbagai opsi Burp Browser di:
    • User Settings
    • Project Settings
  • Disarankan untuk mengeksplorasi sesuai kebutuhan

🐧 Masalah di Linux (Root User)

Jika Burp dijalankan sebagai root (misalnya di AttackBox), Burp Browser bisa gagal berjalan karena sandbox error.

Solusi:

1️⃣ Smart (Aman)

  • Jalankan Burp sebagai user non-root

2️⃣ Easy (Cepat)

  • Masuk: Settings → Tools → Burp’s browser
  • Aktifkan Allow Burp’s browser to run without a sandbox
  • ⚠️ Kurang aman, gunakan dengan hati-hati

Scoping and Targeting

Scoping adalah salah satu aspek paling penting saat menggunakan Burp Proxy. Tanpa scope, traffic yang tertangkap bisa sangat banyak dan tidak relevan.

🔍 Fungsi Scoping

  • Membatasi traffic yang:
    • Di-proxy
    • Di-log
  • Fokus hanya pada aplikasi web target
  • Menghindari noise dari domain lain

⚙️ Cara Menambahkan Scope

  1. Buka tab Target
  2. Klik kanan target di panel kiri
  3. Pilih Add to Scope
  4. Pilih Yes untuk menghentikan logging traffic di luar scope

🗂️ Cek & Atur Scope

  • Masuk ke Target → Scope settings
  • Bisa:
    • Include domain / IP
    • Exclude domain / IP
  • Sangat powerful → disarankan dipelajari

🚫 Batasi Intercept Proxy

Meskipun logging di luar scope dimatikan, proxy tetap meng-intercept semua traffic secara default.

Solusi:
  • Buka Proxy → Proxy settings
  • Pada Intercept Client Requests
  • Aktifkan: And URL is in target scope

1768644369991

Proxying HTTPS

Saat intercept HTTPS, browser bisa menolak koneksi karena sertifikat Burp (PortSwigger CA) tidak dipercaya.

⚠️ AttackBox sudah terkonfigurasi, langkah ini bisa dilewati jika pakai AttackBox.

⚙️ Langkah Singkat (Firefox)

1️⃣ Download Sertifikat

  • Aktifkan Burp Proxy
  • Buka: http://burp/cert
  • Simpan file cacert.der

2️⃣ Import Sertifikat

  • Buka about:preferences
  • Cari certificatesView Certificates
  • Klik Import → pilih cacert.der

1768644491773

3️⃣ Trust Sertifikat

  • Centang Trust this CA to identify websites
  • Klik OK

1768644498832

✅ Hasil

  • Browser sekarang mempercayai PortSwigger CA
  • HTTPS bisa diakses tanpa error saat lewat Burp Proxy

Example Attack

Kita akan mencoba Reflected XSS pada form support: 👉 http://10.49.184.127/ticket/

XSS (Cross-Site Scripting) adalah teknik menyisipkan script (biasanya JavaScript) agar dieksekusi di browser korban. Contoh ini adalah Reflected XSS → hanya berdampak pada request yang dikirim.

🚧 Masalah Awal

  • Field Contact Email punya client-side filter
  • Karakter berbahaya (seperti < > ") diblokir
  • ❗ Client-side filter mudah dibypass

🔀 Langkah Bypass dengan Burp Proxy

1️⃣ Aktifkan Burp Proxy

  • Pastikan Intercept = ON

2️⃣ Isi form dengan data normal

  • Email: pentester@example.thm
  • Query: Test Attack
  • Submit form → request tertahan di Burp

3️⃣ Modifikasi request di Burp

  • Ganti nilai email dengan payload:
    <script>alert("Succ3ssful XSS")</script>
  • Blok payload → tekan Ctrl + U (URL Encode)

4️⃣ Forward request

  • Klik Forward

✅ Hasil

  • Muncul alert box di browser
  • 🎉 Reflected XSS berhasil dieksekusi

On this page

SQL FundamentalsDatabases 101Jenis-Jenis Database1. Relational Database (SQL)2. Non-Relational Database (NoSQL)Tabel, Baris, dan Kolom (Relational Database)Primary Key & Foreign KeyPrimary KeyForeign KeySQLDBMS (Database Management System)Kelebihan SQL & Database RelasionalPraktik Awal SQL (Hands-On)Database and Table Statements1. Database StatementsCREATE DATABASESHOW DATABASESUSE DATABASEDROP DATABASE2. Table StatementsCREATE TABLESHOW TABLESDESCRIBE / DESCALTER TABLEDROP TABLEAnswer QuestionsCRUD Operations1. Create (INSERT)2. Read (SELECT)Ambil semua kolomAmbil kolom tertentu3. Update (UPDATE)4. Delete (DELETE)Ringkasan CRUDAnswer QuestionsClauses1. DISTINCT2. GROUP BY3. ORDER BYUrutan naik (Ascending)Urutan turun (Descending)4. HAVINGRingkasan CepatAnswer QuestionsOperators1. Logical OperatorsLIKEANDORNOTBETWEEN2. Comparison OperatorsSama dengan (=)Tidak sama dengan (!=)Lebih kecil dari (<)Lebih besar dari (>)Lebih kecil / besar atau sama dengan (<=, >=)Ringkasan OperatorLogical OperatorsComparison OperatorsAnswer QuestionsFunctions1. String FunctionsCONCAT()GROUP_CONCAT()SUBSTRING()LENGTH()2. Aggregate FunctionsCOUNT()SUM()MAX()MIN()Ringkasan CepatString FunctionsAggregate FunctionsAnswer QuestionsBurp Suite: The BasicsWhat is Burp Suite?📌 Ringkasan Burp Suite🔍 Fungsi Utama🧩 Edisi Burp Suite1️⃣ Burp Suite Community Edition2️⃣ Burp Suite Professional3️⃣ Burp Suite EnterpriseFeatures of Burp Community🔑 Fitur-Fitur Inti1️⃣ Proxy2️⃣ Repeater3️⃣ Intruder4️⃣ Decoder5️⃣ Comparer6️⃣ Sequencer🧩 Ekstensi Burp Suite🔌 Burp Extender & BApp StoreInstallation⬇️ Download🐉 Kali Linux⚙️ InstalasiThe Dashboard⚙️ Konfigurasi Awal Burp Suite📘 Tampilan Awal🧭 Burp Dashboard1️⃣ Tasks2️⃣ Event Log3️⃣ Issue Activity (Professional Only)4️⃣ Advisory (Professional Only)❓ Ikon BantuanNavigation🔹 Modul🔹 Sub-Tab🔹 Detach Tab⌨️ Shortcut PentingOptions1️⃣ Global Settings (User Settings)2️⃣ Project Settings🔧 Mengakses Settings🗂️ Menu di SettingsIntroduction to the Burp Proxy🔑 Konsep Penting Burp Proxy1️⃣ Intercepting Requests2️⃣ Kontrol Penuh Traffic3️⃣ Capture & Logging4️⃣ Dukungan WebSocket5️⃣ Log & History⚙️ Proxy Settings🔸 Fitur Penting Proxy SettingsConnecting through the Proxy (FoxyProxy)⚙️ Langkah Konfigurasi1️⃣ Install FoxyProxy2️⃣ Buat Konfigurasi Proxy3️⃣ Aktifkan Proxy🔀 Intercept RequestSite Map and Issue Definitions1️⃣ Site Map2️⃣ Issue Definitions3️⃣ Scope Settings✅ Kesimpulan🧪 ChallengeThe Burp Suite Browser▶️ Cara Menjalankan⚙️ Pengaturan🐧 Masalah di Linux (Root User)Solusi:Scoping and Targeting🔍 Fungsi Scoping⚙️ Cara Menambahkan Scope🗂️ Cek & Atur Scope🚫 Batasi Intercept ProxySolusi:Proxying HTTPS⚙️ Langkah Singkat (Firefox)✅ HasilExample Attack🚧 Masalah Awal🔀 Langkah Bypass dengan Burp Proxy✅ Hasil