Введение

Продолжение исследования головоломки technicalseo.expert которая будет сломана самым нетривиальным образом.

Предыдущий уровень и чуть подробнее о самой головоломке в первом посте: ссылка

Предупреждение!

Если кто-то хочет лично пройти этот челендж - дальше читать противопоказано. Будут скрины и прочее.

Кроме того, прошу прощение у SEO, я не совсем понимаю суть того, что я сделал с точки зрения SEO. Если кого обидел - извиняюсь.

Уровень 2

Ломать уровень 2 начнем с финального сообщения уровня 1. Именно там будет ссылка на начало второго уровня. Какая? Надеюсь читатели первой части уже догадались.

Переходим в наш любимый Developer Tool нашего любимого Google Chrome и смотрим на любую интересную активность. Но интересная активность - это дождь из нулей и единиц. Попытаемся найти это дело на странице.

		<!-- Matrix Rain; Maybe something to see here people. -->
		<style>
			body {background: black;}
		</style>
		<script>
			function draw(){
        ctx.fillStyle="rgba(0, 0, 0, 0.05)",ctx.fillRect(0,0,c.width,c.height),ctx.fillStyle="#0F0",ctx.font=font_size+"px arial";
        for(var a=0;a<drops.length;a++)
        {
          var b=j[Math.floor(Math.random()*j.length)];
          ctx.fillText(b,a*font_size,drops[a]*font_size),drops[a]*font_size>c.height&&Math.random()>.975&&(drops[a]=0),drops[a]++
        }
      }
      var c=document.getElementById("c"),ctx=c.getContext("2d");
      c.height=window.innerHeight,c.width=window.innerWidth;
      var j="01110100 01101000 01100101 00100000 01100001 01100100 01110110 01100101 01101110 01110100 01110101 01110010 01100101 00100000 01100011 01101111 01101110 01110100 01101001 01101110 01110101 01100101 01110011 00100000 01100001 01110100 00100000 00101111 01110000 01101100 01100001 01111001 01100101 01110010 01110100 01110111 01101111 00101111 01110011 01110100 01100001 01110010 01110100";
      j=j.split("");
      for(var font_size=10,columns=c.width/font_size,drops=[],x=0;x<columns;x++)
        drops[x]=1;
      setInterval(draw,33);
		</script>

Находим подозрительные цифры и сразу отправляем их в скрипт из первой части (хотя формально мы еще не приступили ко второй)

kek = []
lol = '01110100 01101000 01100101 00100000 01100001 01100100 01110110 01100101 01101110 01110100 01110101 01110010 01100101 00100000 01100011 01101111 01101110 01110100 01101001 01101110 01110101 01100101 01110011 00100000 01100001 01110100 00100000 00101111 01110000 01101100 01100001 01111001 01100101 01110010 01110100 01110111 01101111 00101111 01110011 01110100 01100001 01110010 01110100'
for x in lol.split():
    kek.append(x)
lol=''
for x in kek:
    lol+=chr(int(x,2))
print(lol)

В итоге получаем сообщение: "the adventure continues at /playertwo/start"

Переходим по ссылке и видим видео. Звездные воины? Еще одна убитая франшиза. Но поехали!

Ломаем игру полностью!

Дальше начинается самая волшебная часть. Игра была сломана и по сути не проходилась. Тем не менее я могу похвастаться одним из самых быстрых прохождения - 20 минут, 15 из которых я пил чай с конфеткой на кухне, чтобы отдохнуть. Если кто-то ждет нормального прохождения с разгадыванием задач от автора - не в этой статье.

Автору игры и даже одному из тестеров я сообщил об обнаруженной уязвимости - но никакой реакции от них не последовало. Кроме того, беря во внимание характер данного сайта, а именно ломание "системы" и решение IT задачек, имею полное моральное право считать эту часть игры не багом, а фичей.

Поэтому пристегните ремни - мы уходим в сумрак.

Ближе к сути...

Начинаем играть с ссылками... И выигрываем джекпот!

А вот и наш миллион!
А вот и наш миллион!

Шикарно! Ссылка "/playertwo/" гораздо интереснее самого видео. Там же видим ответ на первую задачу о которой говорили лего труперы, что лишний раз подтверждает нашу догадку. Штош... Это будет легкая прогулка.

Копируем содержимое таблицы в Google Tables и вытаскиваем расширения с помощью формул:

Фильтруем самое интересное и получаем...

Остается проверить 17 страничек, благо в первом столбце у нас сплошные гиперссылки и пройти по ним не составит никакого труда. В итоге обнаруживаем на одной из страничек следующее послание:

Ниже еще немного буковок и поздравлений с прохождением второго уровня. А, и еще подарок - бейджик )

Я его точно заработал
Я его точно заработал

Второй уровень позади. Остался третий! Где на него ссылка? В robots.txt

# Start Level 3 Here: https://technicalseo.expert/final-problem/dontblink  
## Note: Level 1 and 2 have ~10-20 challenges to complete. 
## 		 Level 3 has 10-15 challenges. I opened up level 3, since it's designed to be unnaturally hard.

user-agent: *

Disallow: 

sitemap: /sitemap.xml 

# Level One Clue: The spaces between words are removed, no hyphens. 
# 
#      /\    
#     /  \   
#    / /\ \  
#   / ____ \ 
#  /_/    \_\
         
##############################
# Created by: 
#   Alexis Sanders: https://twitter.com/AlexisKSanders
#
# Thank you to our part 2 beta testers:
#   Max Prin: https://twitter.com/maxxeight
#   Dave Thomas: https://www.linkedin.com/in/dave-thomas-2448058/
#   Brian Barna: https://www.linkedin.com/in/brianbarna/ 
#   
# Thank you to our part 1 beta testers:
#   Masaki Okazawa: https://www.linkedin.com/in/masakiokazawa/
#   Steve Valenza: https://www.linkedin.com/in/stevevalenza/
#   Max Prin: https://twitter.com/maxxeight
#   Kyla Becker: https://www.linkedin.com/in/kylabecker

Сейчас я уже показываю полную его версию, мы уже готовы к третьему испытанию!

Мораль и PS

В первую очередь хотел спросить у хабр-сообщества: честно ли я считаю себя прошедшим второй уровень? На мой взгляд - да, но если вы думаете иначе - хотел бы услышать вашу позицию, возможно, я изменю свое мнение.

Что хочу сказать после второго уровня. Я полностью удовлетворен стилем прохождения, но разочарован по сути. Ожидал загадок, а получил эксплуатацию уязвимости. С другой стороны, это лишний раз подтверждаем, что надо быть внимательным при настройки серверов, иначе можно показать немного лишнего.

Кроме того, это по всей видимости принципиальная позиция в настройки ПО автора этой задачи, это можно увидеть и по реакции на ссылку: "/fr/" - кусочек от длинной ссылки на пазл "/fr/bienvenueaupaysdesmerveilles" из первой части.

И для совсем любознательных - нет, третья часть будет скрыта лучше.
"/final-problem/dontblink" полная ссылка, а уязвимый кусочек "/final-problem/" ведет на страницу:

Скорее всего, я не первый, кто заметил эту уязвимость, поэтому у меня есть еще одна причина ее все таки показать. Надеюсь из этой задачи мы вынесем очень важный урок, важнее тех скилов, которые заявлялись для ее решения.

Комментарии (2)


  1. Ironcast
    25.12.2021 23:07

    А что , в конце уровней боссов нет?


    1. HiveTyrant89 Автор
      26.12.2021 00:22

      Второй прошел с помощью глитчей мимо всей движухи, как заправский спидранер.