 |
|

20.01.2019, 10:18
|
|
Участник форума
Регистрация: 30.12.2016
Сообщений: 218
С нами:
4931606
Репутация:
138
|
|
Пояснения про самый короткий вариант.
Он конечно будет с применением ~- побитовая инверсия символов строки.
Поскольку инверсия - обратимая операция, т.е. двойное ее применение дает исходную строку.
~~'phpinfo' =='phpinfo';
Короче этой нотации просто нет.
И, на заметку, ~string без кавычек выбросит нотис (Use of undefined constant phpinfo), но тоже будет работать на символах алфавита и некоторых других, скобки воспринимаются как конец строки .
Проверял два варианта, при первой проверке получил одинаковую длину решения и в дальнейшем оптимизировал только тот, в котором вся посылка умещается в input.
Уж не знаю, обсчитался в количестве символов, или просто записал неоптимально, но шутка Лайта зашла и повторная проверка показала, что вариант с раздельной нагрузкой post +get действительно короче.
В первом варианте переменной $_ присваивается строка ~~'phpinfo', а потом вызывается функция из имени переменной $_().
.SpoilerTarget" type="button">Spoiler: v1
Второй вариант проделывает эту же манипуляцию с массивом $_GET.
.SpoilerTarget" type="button">Spoiler: v2
здесь $_GET['_'] = 'phpinfo'.
Поскольку вариант ищем короткий, то кавычки не ставим, нотисы не мешают выполнить код.
Кстати l1ght тоже нашел оба эти варианта, но не отписал ТС, видимо решив, что я передам, ну или для него это не очень значимо.
В любом случае, восстанавливаю справедливость.
Самый короткий вариант за Лайтом.
PS
Забыл пояснить курл нотацию, или "Сложный (фигурный) синтаксис",
внутри ${} может быть переменная или функция.
|
|
|

21.01.2019, 11:45
|
|
Участник форума
Регистрация: 30.12.2016
Сообщений: 218
С нами:
4931606
Репутация:
138
|
|
У меня вопрос, достаточно ли понятно описаны решения, смысл этих "кракобляков" понятен, или нужны дополнительные разъяснения?
Следующее задание будет тоже из разряда простых, но дальше будем набирать обороты и важно не растерять Ваше внимание и понимание.
|
|
|

21.01.2019, 12:16
|
|
Новичок
Регистрация: 08.01.2019
Сообщений: 4
С нами:
3867446
Репутация:
0
|
|
Сообщение от dooble
↑
У меня вопрос, достаточно ли понятно описаны решения, смысл этих "кракобляков" понятен, или нужны дополнительные разъяснения?
Следующее задание будет тоже из разряда простых, но дальше будем набирать обороты и важно не растерять Ваше внимание и понимание.
Мне, как человеку, который знает php на уровне скриптов под апи вк - было всё понятно. Очень здорово.
У меня не совсем по "краказябрам" вопрос..
В ответах к теме люди писали что использовали burp и sqlmap для поиска решения, так вот, меня заинтересовало как именно это происходило.
Насчет XSS - всё понятно, есть плагин бурповский xss-validator который автоматически проверяет на "алерты", а как поиск происходил в данном случае? Ручками?
|
|
|

21.01.2019, 12:32
|
|
Участник форума
Регистрация: 30.12.2016
Сообщений: 218
С нами:
4931606
Репутация:
138
|
|
Скульмап - это прикол.
Бурп - скорее всего просто привычный инструмент для манипуляции с пакетами.
|
|
|

21.01.2019, 14:39
|
|
Новичок
Регистрация: 12.11.2018
Сообщений: 8
С нами:
3949526
Репутация:
6
|
|
Сообщение от dooble
↑
У меня вопрос, достаточно ли понятно описаны решения, смысл этих "кракобляков" понятен, или нужны дополнительные разъяснения?
Следующее задание будет тоже из разряда простых, но дальше будем набирать обороты и важно не растерять Ваше внимание и понимание.
Всё понятно, спасибо
|
|
|

21.01.2019, 20:22
|
|
Участник форума
Регистрация: 30.12.2016
Сообщений: 218
С нами:
4931606
Репутация:
138
|
|
Та дам!
Лайт прислал решение на 12 символов.
Сообщение от l1ght
↑
а с:
$a=~"phpinfo";echo ~$a; phpinfo
$a="phpinfo";~~$a(); true
$a=~"phpinfo";~$a(); false
понял почему ?
Сообщение от l1ght
↑
тип данных не меняется,синтаксис вроде позволяет,я это так и не вкурил
Сообщение от l1ght
↑
все понял,
(~%8F%97%8F%96%91%99%90)() - 12 символов
Первоначально не поверил ему, поскольку этот вариант я проверял, минимум дважды, должен работать, но не работает.
Раскомментировал строку //$p='(~'.~'phpinfo'.')()';
работает.
.SpoilerTarget" type="button">Spoiler
Эту магию оставил на потом разбираться, сейчас больше интересует магия скобок.
Давайте добивать вместе.
Я когда экспериментировал, исходил из того, что запись (здесь чего то) означает, что внутри скобок находится строка, сейчас не помню где, поищю, но скобки - это еще один способ записи строки, например конструкция (int)$var использует его.
В результате $a=~'phpinfo'; print ~$a; получается не строка, возможно константа.
А скобки принудительно заставляют воспринимать, как строку $a=~'phpinfo';(~$a)();
Есть еще вариант объяснения, что скобки это просто последовательность операций и в пользу этого говорят проверки
Код:
eval('print (3-2)()'.';'); - Function name must be a string
eval('print ("2"+"2")()'.';'); - Function name must be a string
eval('print (2*2)()'.';');- Function name must be a string
По крайней мере, это точно не преобразование в строку.
Кстати эта конструкция работает только на семерке, а в пятой ветке не работает.
==
PS
Лайт - красавчик.
#этапять
но поскольку отказался оформить пост, то #этаужечетыре и нет возможности закидать его репой (((.
==
PS2
Вот чем хорошо, когда команда ресерчит, вариантов набирается много и разных, и задание вроде бы простое, а превращается в нормальное, полноценное, интересное.
|
|
|

01.04.2020, 14:21
|
|
Новичок
Регистрация: 19.05.2010
Сообщений: 5
С нами:
8411719
Репутация:
0
|
|
Прохожу эти задания в 2020, здесь самостоятельно никак не справился
|
|
|

02.04.2020, 13:20
|
|
Новичок
Регистрация: 16.01.2019
Сообщений: 18
С нами:
3855926
Репутация:
0
|
|
Почему меня нет в списке прошедших? Репутацию тоже не дали
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|